<?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>203438</bug_id>
          
          <creation_ts>2019-10-25 16:07:16 -0700</creation_ts>
          <short_desc>[iOS] [WK2] Improve process assertion-related logging to help identify causes of leaked assertions</short_desc>
          <delta_ts>2019-10-30 10:32:18 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>krollin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1584068</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-25 16:07:16 -0700</bug_when>
    <thetext>Improve process assertion-related logging to help identify causes of leaked assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584076</commentid>
    <comment_count>1</comment_count>
      <attachid>381977</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-25 16:21:27 -0700</bug_when>
    <thetext>Created attachment 381977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584081</commentid>
    <comment_count>2</comment_count>
      <attachid>381978</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-25 16:36:42 -0700</bug_when>
    <thetext>Created attachment 381978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584085</commentid>
    <comment_count>3</comment_count>
      <attachid>381979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-25 16:42:11 -0700</bug_when>
    <thetext>Created attachment 381979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584453</commentid>
    <comment_count>4</comment_count>
      <attachid>382071</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-28 08:17:17 -0700</bug_when>
    <thetext>Created attachment 382071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584457</commentid>
    <comment_count>5</comment_count>
      <attachid>382074</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-28 09:04:46 -0700</bug_when>
    <thetext>Created attachment 382074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584540</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-28 12:35:13 -0700</bug_when>
    <thetext>Patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585374</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-30 09:23:00 -0700</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585401</commentid>
    <comment_count>8</comment_count>
      <attachid>382074</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 10:31:47 -0700</bug_when>
    <thetext>Comment on attachment 382074
Patch

Clearing flags on attachment: 382074

Committed r251778: &lt;https://trac.webkit.org/changeset/251778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585402</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 10:31:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585403</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 10:32:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/56749427&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381977</attachid>
            <date>2019-10-25 16:21:27 -0700</date>
            <delta_ts>2019-10-25 16:36:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203438-20191025162126.patch</filename>
            <type>text/plain</type>
            <size>103229</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjMGJiZDU0NDVjMGI0YTlj
MTU4MzNhMjRiZTdiMTY4MmI1ZTU4YmYuLjMwZjgyMjdiN2VkMmE3MWM2MWQ0ZWNkZDFhNzhjMTQ1
M2JjZDkwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDE5LTEwLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gSW1wcm92ZSBw
cm9jZXNzIGFzc2VydGlvbi1yZWxhdGVkIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSBjYXVzZXMg
b2YgbGVha2VkIGFzc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcHJvdmUgcHJvY2VzcyBhc3NlcnRpb24tcmVsYXRlZCBsb2dnaW5nIHRv
IGhlbHAgaWRlbnRpZnkgY2F1c2VzIG9mIGxlYWtlZCBhc3NlcnRpb25zLiBQcmV2aW91c2x5LAor
ICAgICAgICB3aGVuZXZlciBvdXIgY29kZSBuZWVkZWQgdG8gcHJldmVudCBzdXNwZW5zaW9uIG9m
IGEgY2hpbGQgcHJvY2VzcyBkdWUgdG8gc29tZSBraW5kIG9mIGFjdGl2aXR5LCBpdAorICAgICAg
ICB3b3VsZCBzaW1wbHkgZ3JhYiBhICJ0b2tlbiIgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcycgUHJv
Y2Vzc1Rocm90dGxlci4gVGhpcywgaW4tdHVybiwgd291bGQgY2F1c2UKKyAgICAgICAgdGhlIFBy
b2Nlc3NUaHJvdHRsZXIgdG8gdGFrZSB0aGUgcmlnaHQga2luZCBvZiBQcm9jZXNzQXNzZXJ0aW9u
IG9yIHJlbGVhc2UgaXQgd2hlbiBub2JvZHkgaG9sZHMKKyAgICAgICAgYW55IHRva2VucyBhbnkg
bW9yZS4KKworICAgICAgICBXZSBmcmVxdWVudGx5IGhhdmUgaXNzdWVzIHdoZXJlIHRoZSBVSVBy
b2Nlc3Mga2VlcHMgaXRzIGFzc2VydGlvbnMgYXJvdW5kIGZvciB0b28gbG9uZyBhZnRlciBnZXR0
aW5nCisgICAgICAgIGJhY2tncm91bmRpbmcuIFRoaXMgY2F1c2VzIHRoZSBhc3NlcnRpb25zIHRv
IGdldCBpbnZhbGlkYXRlZCBhbmQgdGhlIFVJUHJvY2VzcyB3aWxsIHVzdWFsbHkgc3VzcGVuZAor
ICAgICAgICAoYWxiZWl0IHdpdGggYSBkZWxheSwgd2hpY2ggaXMgYmFkIGZvciBwb3dlcikuIFNv
bWV0aW1lcyB0aG91Z2gsIHdlIGdldCBraWxsZWQgYmVjYXVzZSBvdXIgaW52YWxpZGF0aW9uCisg
ICAgICAgIGhhbmRsZXIgZG9lcyBub3QgZ2V0IGEgY2hhbmNlIHRvIHJlbGVhc2UgdGhlIGFzc2Vy
dGlvbiBpbiB0aW1lLgorCisgICAgICAgIEZpbmRpbmcgb3V0IHdoeSB3ZSdyZSBrZWVwaW5nIGFy
b3VuZCBhc3NlcnRpb25zIGlzIGN1cnJlbnRseSB2ZXJ5IGRpZmZpY3VsdCBiZWNhdXNlIHdlIGNh
bm5vdCBlYXNpbHkKKyAgICAgICAgc2VlIGluIHRoZSBsb2dzIHdobyBpcyBzdGlsbCBob2xkaW5n
IFByb2Nlc3NUaHJvdHRsZXIgdG9rZW5zLiBUbyBtYWtlIHN1Y2ggZGVidWdnaW5nIGVhc2llciwg
Y2xpZW50cworICAgICAgICBub3cgbm90aWZ5IHRoZSBQcm9jZXNzVGhyb3R0bGVyIHdoZW4gdGhl
eSBzdGFydCBzb21lIGFjdGl2aXR5IGFuZCBwcm92aWRlIGEgdXNlci1yZWFkYWJsZSBkZXNjcmlw
dGlvbgorICAgICAgICBvZiB0aGUgYWN0aXZpdHkuIFRoZSBjbGllbnQgdGhlbiBnZXRzIGEgRm9y
ZWdyb3VuZEFjdGl2aXR5IG9yIEJhY2tncm91bmRBY3Rpdml0eSBvYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBzaW1wbHkgYSB0b2tlbi4gQXMgYSByZXN1bHQsIHdlIGFyZSBub3cgYWJsZSB0byBs
b2cgd2hlbiBhIGdpdmVuIGFjdGl2aXR5IHRoYXQgcHJldmVudHMgc3VzcGVuc2lvbgorICAgICAg
ICBiZWdpbnMgYW5kIGVuZHMsIHdpdGggYSB1c2VyLWZyaWVuZGx5IHN0cmluZy4gQWxzbywgd2hl
biB0aGUgYXNzZXJ0aW9uIGdldHMgaW52YWxpZGF0ZWQsIGl0IHdpbGwKKyAgICAgICAgaW52YWxp
ZGF0ZSBhbGwgdGhlc2UgcGVuZGluZyBhY3Rpdml0aWVzIGFuZCB3ZSdsbCBzZWUgaW4gdGhlIGxv
Z3MgdGhlIG5hbWUgb2YgdGhlIGFjdGl2aXRpZXMgdGhhdAorICAgICAgICB3ZXJlIHN0aWxsIGdv
aW5nIG9uIHVwb24gaW52YWxpZGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6c2VuZEludm9jYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlSXNMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Jlc3VtZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tNYXA6OnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFN5bmNBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
OjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
flByb2Nlc3NUaHJvdHRsZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjph
ZGRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFj
dGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFs
bEFjdGl2aXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3Rl
ZEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0
QXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1aUFz
c2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6fkFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZp
dHk6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpB
Y3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6
OnNob3VsZEJlUnVubmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpiYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQ
cm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFByb2Nlc3NSZXF1ZXN0VG9TdXNwZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGlj
YXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzaHV0RG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
SW5wdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1l
bnRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJv
bGxlcnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3
b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKToKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRoQXN5bmNSZXBseSgpIHRvIHNpbXBs
aWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCmluZGV4IDg0YjQ3MGM5NTI2
NGJkN2RkMjA4MGMyNzZkNjFmZTJjMDZmNTU5NTYuLjU0Y2RjMDMwYTJlOWMxYWNjYzVjNGVjMzlh
YjliMzM1ZGI0ZjA2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBSZW1vdGVPYmplY3RSZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1lc3Nh
Z2VTZW5kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25J
RCgpID0gMDsKIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVVu
dXNlZFJlcGx5QmxvY2sodWludDY0X3QgcmVwbHlJRCk7CiAKICAgICBXZWFrT2JqQ1B0cjxfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeT4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeTsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9w
ZW5kaW5nUmVwbGllczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9wZW5kaW5nUmVwbGllczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDMwZWM0ZTcwNjNiMzJj
ZGI5ZmZhNzdhNTU0NDc3MDkwYjQ0MDRkM2IuLmU0OGM5Mjg1Nzc4NWMzY2Q4NTA5YjFiMWMzZTI3
MTliMTliZWM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBSZW1vdGVP
YmplY3RSZWdpc3RyeTo6c2VuZEludm9jYXRpb24oY29uc3QgUmVtb3RlT2JqZWN0SW52b2NhdGlv
biYgaW52b2NhdGkKIAogICAgIGlmIChhdXRvKiByZXBseUluZm8gPSBpbnZvY2F0aW9uLnJlcGx5
SW5mbygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nUmVwbGllcy5jb250YWlucyhyZXBs
eUluZm8tPnJlcGx5SUQpKTsKLSAgICAgICAgbV9wZW5kaW5nUmVwbGllcy5hZGQocmVwbHlJbmZv
LT5yZXBseUlELCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgIG1fcGVu
ZGluZ1JlcGxpZXMuYWRkKHJlcGx5SW5mby0+cmVwbHlJRCwgYmFja2dyb3VuZEFjdGl2aXR5KCJS
ZW1vdGVPYmplY3RSZWdpc3RyeSBpbnZvY2F0aW9uIl9zKSk7CiAgICAgfQogCiAgICAgbWVzc2Fn
ZVNlbmRlcigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpJbnZva2VNZXRo
b2QoaW52b2NhdGlvbiksIG1lc3NhZ2VEZXN0aW5hdGlvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKaW5kZXggNDU1NWM2YjMxZDFlZTU0
YzU0MmQ2ZDIwMzM4OTNjMDFiZjA3MTY5Ny4uNWQ5YjkxYzg1MGYyNWEzZjlkMTk2ZDc4OGE4MTg1
OWY4N2RlODFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha09iakNQdHI8aWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2
aXR5OwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCAyNTY2M2FkOTQxYmE3NTcxNzA0YmUwMmJh
M2UzNzY4ODljMzYwYWE2Li42NTFiNzAxNGJlZjU5NjQyOWFjMTViYzc4M2U5MWQ4NDdmYjA5NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQpAQCAtMjY4LDggKzI2OCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRv
a2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdl
KCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBw
cmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKLSAgICAg
ICAgbV9hY3Rpdml0eVRva2VuID0gd2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7CisgICAg
ICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CiAgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CkBAIC0yNzksOSArMjc5LDkgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nh
cnkoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICBpZiAobV9hY3Rpdml0eSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5c3RlbSBw
cmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwotICAgICAgICBtX2FjdGl2aXR5VG9r
ZW4gPSBudWxscHRyOworICAgICAgICBtX2FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRmZGU3Yzk4NjgwMWQ4YzE4
NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uNjc1ZTNhMGM1YjYwMGFiMGJmZjRhMDQ4NzUxNTI0NjQ4
YjY1OTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RQYWlu
dCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIE5ldHdvcmtB
Y3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiB7IExvYWRDb21wbGV0ZWQsIFNjcmVlbkxvY2tlZCB9
OwotICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRv
a2VuUmVsZWFzZVJlYXNvbik7CisgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlSZWxlYXNl
UmVhc29uIHsgTG9hZENvbXBsZXRlZCwgU2NyZWVuTG9ja2VkIH07CisgICAgdm9pZCByZWxlYXNl
TmV0d29ya0FjdGl2aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24pOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN3YXBX
ZWJQcm9jZXNzZXMoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
dm9pZCByZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW5BZnRlckxvYWRDb21wbGV0aW9uKCkgeyBy
ZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVh
c29uOjpMb2FkQ29tcGxldGVkKTsgfQorICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFm
dGVyTG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHkoTmV0d29ya0FjdGl2
aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBsZXRlZCk7IH0KICNlbmRpZgogCiAgICAgV0tXZWJW
aWV3ICptX3dlYlZpZXc7CkBAIC0yNTgsOCArMjU4LDggQEAgcHJpdmF0ZToKICAgICB9IG1faGlz
dG9yeURlbGVnYXRlTWV0aG9kczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOwot
ICAgIFJ1bkxvb3A6OlRpbWVyPE5hdmlnYXRpb25TdGF0ZT4gbV9yZWxlYXNlQWN0aXZpdHlUaW1l
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5PiBtX25ldHdvcmtBY3Rpdml0eTsKKyAgICBSdW5Mb29wOjpUaW1lcjxOYXZpZ2F0aW9uU3Rh
dGU+IG1fcmVsZWFzZU5ldHdyb2tBY3Rpdml0eVRpbWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTRh
ZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVlNjhlMTNlNTJlMDFiMy4uOThjZWNmNmFkODhmMWI5YjEz
ZjJlNTRmODE5YTMyZGMzZDhjYjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvblN0YXRlKFdLV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcygpCiAgICAgLCBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMoKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtB
Y3Rpdml0eVRva2VuQWZ0ZXJMb2FkQ29tcGxldGlvbikKKyAgICAsIG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6
cmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFmdGVyTG9hZENvbXBsZXRpb24pCiAjZW5kaWYKIHsKICAg
ICBBU1NFUlQobV93ZWJWaWV3LT5fcGFnZSk7CkBAIC0xMjA5LDIxICsxMjA5LDIxIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5nKCkKIH0KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0
eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiByZWFzb24pCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3JrQWN0aXZpdHlSZWxl
YXNlUmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKKyAgICBpZiAo
IW1fbmV0d29ya0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKHJlYXNv
bikgewotICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpMb2FkQ29t
cGxldGVkOgorICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBs
ZXRlZDoKICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29y
a0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CisgICAgY2FzZSBOZXR3
b3JrQWN0aXZpdHlSZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3Vu
ZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxvY2tlZCIsIHRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsK
LSAgICBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyLnN0b3AoKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgbV9yZWxlYXNlTmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwog
fQogI2VuZGlmCiAKQEAgLTEyMzEsMjMgKzEyMzEsMjMgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OmRpZENoYW5nZUlzTG9hZGluZygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAobV93ZWJWaWV3LT5fcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmlzTG9hZGluZygpKSB7Ci0gICAg
ICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgbmV0d29yayBhY3Rpdml0eSB0b2tlbiBpZiBhIGxvYWQg
c3RhcnRzIGFmdGVyIHRoZSBzY3JlZW4gaGFzIGJlZW4gbG9ja2VkLgorICAgICAgICAvLyBXZSBk
byBub3Qgc3RhcnQgYSBuZXR3b3JrIGFjdGl2aXR5IGlmIGEgbG9hZCBzdGFydHMgYWZ0ZXIgdGhl
IHNjcmVlbiBoYXMgYmVlbiBsb2NrZWQuCiAgICAgICAgIGlmIChbVUlBcHAgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX3JlbGVhc2VB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1f
d2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAg
ICAgIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIuc3RvcCgpOworICAgICAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9h
Y3Rpdml0eVRva2VuKSB7CisgICAgICAgIGlmICghbV9uZXR3b3JrQWN0aXZpdHkpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRh
a2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFy
dGVkIiwgdGhpcyk7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3dlYlZpZXctPl9w
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2Vzcygp
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9hY3Rpdml0eVRva2VuKSB7CisgICAgfSBlbHNlIGlmIChtX25l
dHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBz
byB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tncm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25k
cyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAg
ICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJv
YmxlbS8yNzkxMDk2ND4uCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2Ut
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2
aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBz
b29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9y
ZWxlYXNlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoM19zKTsKKyAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RhcnRPbmVTaG90KDNfcyk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTEzNTAsOCArMTM1MCw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJv
Y2Vzc2VzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91
ciBiYWNrZ3JvdW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9u
ZS4KLSAgICBpZiAobV9hY3Rpdml0eVRva2VuKQotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKKyAgICBpZiAobV9uZXR3b3JrQWN0aXZpdHkpCisgICAgICAgIG1fbmV0d29ya0Fj
dGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCmlu
ZGV4IDIwY2Q1M2M5NDQzOGJkMWI3OTRjZDQyMzE0ZWIyZTZjYjQ1YzU5ZTMuLjQ5N2FiNzIyMDBj
ZDdkZGFmYjE2M2M2YzZkN2VhNjc2YjI3YzA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Qcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5Ojp0YWtlQmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKQorc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eT4gVUlSZW1vdGVPYmplY3RSZWdpc3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5
KEFTQ0lJTGl0ZXJhbCBuYW1lKQogewotICAgIHJldHVybiBtX3BhZ2UucHJvY2VzcygpLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgcmV0dXJuIG1fcGFnZS5wcm9j
ZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpOwogfQogCiBVSVJlbW90
ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oCmluZGV4IGM0MGI0NTM2NjNjOWZlNTllMDZhODU1YmVkNzYzYjhmM2RiZGRmM2YuLmQ2Mzg4
Mjc1NTQwNzUxYmIxZjA2MGJhOTdjOWU5N2U2MGFiYTY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1l
c3NhZ2VTZW5kZXIoKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25JRCgp
IGZpbmFsOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIHRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQppbmRleCA4MzQzNWY5NmExMDU0ODVhYWFlMmVjMjg3MzcxNTVkNzBmMDgwNDZkLi5mZTgx
OTRmNjQ3NDQ2M2FiNmU3ZmIxOGJhOWUxYmFlYWI1OTAzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpCiAg
ICAgLy8gVGhlIFdlYlByb2Nlc3Mgd2FzIGF3YWtlbmVkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu
IHRoZSBVSVByb2Nlc3MuIFRha2Ugb3V0IGFuIGFzc2VydGlvbiBmb3IgYQogICAgIC8vIGxpbWl0
ZWQgZHVyYXRpb24gdG8gYWxsb3cgd2hhdGV2ZXIgdGFzayBuZWVkcyB0byBiZSBhY2NvbXBsaXNo
ZWQgdGltZSB0byBjb21wbGV0ZS4KICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIFByb2Nlc3Mgd2FzIHVu
ZXhwZWN0ZWRseSByZXN1bWVkLCBzdGFydGluZyBiYWNrZ3JvdW5kIGFjdGl2aXR5IiwgdGhpcyk7
Ci0gICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRv
a2VuID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0geworICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBy
b2Nlc3Mgd2FzIHVuZXhwZWN0ZWRseSByZXN1bWVkIl9zKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5k
IGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwogICAgIG1fdW5l
eHBlY3RlZEFjdGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVT
aG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4
cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCmluZGV4IGIyNzc5MjBkOWU4MDA2MWQ2ZGRlNTJjNGM1YWRkOGI0NTJkZDU0MDYu
LmE5MzVjZmVkYjg0NTQwYWQ5NWQ4ZGVjYTA4MGI0YjAxMWU2MGYxZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC02OSwxNyArNjksMTcgQEAgcHJvdGVj
dGVkOgogICAgIHN0cnVjdCBUeXBlVGFnIHsgfTsKICAgICB0eXBlZGVmIGNvbnN0IFR5cGVUYWcq
IFR5cGU7CiAKLSAgICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAg
ICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5KQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fY2FsbGJhY2tJRChDYWxsYmFja0lEOjpnZW5lcmF0ZUlE
KCkpCi0gICAgICAgICwgbV9hY3Rpdml0eVRva2VuKGFjdGl2aXR5VG9rZW4pCisgICAgICAgICwg
bV9hY3Rpdml0eShXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBt
X2FjdGl2aXR5OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KQEAgLTg3LDkgKzg3LDkg
QEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rp
b247CiAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVu
Y3Rpb24mJiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5ID0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
YWN0aXZpdHkpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdlbmVyaWND
YWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgICAgICA6IENh
bGxiYWNrQmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCisgICAgR2VuZXJpY0NhbGxiYWNrKENh
bGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eT4mJiBhY3Rpdml0eSkKKyAgICAgICAgOiBDYWxsYmFja0Jh
c2UodHlwZSgpLCBXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1v
dmUoY2FsbGJhY2spKQogICAgIHsKICAgICB9CkBAIC0xODksOSArMTg5LDkgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxiYWNrSUQgcHV0
KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQorICAgIENhbGxiYWNrSUQg
cHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIFdURk1vdmUoYWN0aXZpdHkpKTsK
ICAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhZjVjNTUyOGIyN2VmMDRkMDM5MjAwNzE3N2VlYTg0ZmUyODZlMTQxLi42MGUy
Y2IyNDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8VwogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25J
RF0gKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgYWN0aXZpdHkgPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBzZXNzaW9uSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOwogICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25JRF0gKCkgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCBhY3Rp
dml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBX
ZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11
dGFibGUgeworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
ZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBA
IC0zMDIsOSArMzAyLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQogICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaW52YWxpZGF0
ZSgpOwogI2VuZGlmCiAKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0
cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKICAgICAK
LSAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOworICAgIG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgPSAwOwog
CiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xMDkzLDEyICsx
MDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIHsKICAgICBpZiAoIWlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9j
ZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdv
cmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAg
bV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CisgICAgICAgIG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcykgeworICAgIGlmICghbV9h
Y3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcykgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsK
LSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2Vk
RmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zKTsKICAgICB9CiB9CiAKQEAgLTExMDcsMTEgKzExMDcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcygpCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIDApOwogICAgIAogICAgICsrbV9zeW5jQWxsQ29v
a2llc0NvdW50ZXI7Ci0gICAgaWYgKG1fc3luY0FsbENvb2tpZXNUb2tlbikKKyAgICBpZiAobV9z
eW5jQWxsQ29va2llc0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IHN5bmNpbmcgY29va2llcyIsIHRoaXMpOwotICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9zeW5jQWxsQ29va2ll
c0FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeW5jaW5nIGNvb2tp
ZXMiX3MpOwogfQogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29v
a2llcygpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFN5bmNBbGxDb29raWVzKCkKICAgICAtLW1fc3luY0FsbENvb2tpZXNDb3VudGVyOwogICAgIGlm
ICghbV9zeW5jQWxsQ29va2llc0NvdW50ZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRvbmUgc3lu
Y2luZyBjb29raWVzIiwgdGhpcyk7Ci0gICAgICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IG51
bGxwdHI7CisgICAgICAgIG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IGUxMGYwZTAyYjdjMzdiNzc1MDFiMTUxNjJkZWYxZDY4YTdm
ZmMyYzkuLjQ3MjYyZWJmZmI0Njc0ZWI1YzcwMDM2ODkzZjdiMDgwM2I0YWMyNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yNzcsOCArMjc3LDggQEAgcHJpdmF0ZToKICAgICBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogI2VuZGlmCiAgICAg
UHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fc3luY0FsbENvb2tpZXNU
b2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eTsKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7
IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApp
bmRleCA3YzQ1ZjIwMWRmNzU0NTQ0MzRmY2U4ZWRiZjVmYmM4M2I4MjhlNTY5Li4wYzNiM2EyOTJm
ZjI5OTIxOTZlMGU3ZDBmMzAzNzFmMmE3OWNiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtNDIsMTcgKzQyLDU0IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKQogUHJvY2Vzc1Rocm90dGxl
cjo6UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNzLCBib29s
IHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICAsIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZQcm9jZXNzVGhyb3R0bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmly
ZWQpCi0gICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsgfSkKLSAgICAsIG1fYmFja2dyb3VuZENvdW50ZXIo
W3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOyB9KQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKHNob3VsZFRha2VVSUJhY2tn
cm91bmRBc3NlcnRpb24pCiB7CiB9CisKK1Byb2Nlc3NUaHJvdHRsZXI6On5Qcm9jZXNzVGhyb3R0
bGVyKCkKK3sKKyAgICBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7
CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVB
c3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2
aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOwor
fQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEZvcmVncm91bmRBY3Rp
dml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFj
dGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkp
Cit7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFjdGl2aXR5KTsKKyAgICB1
cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6Omlu
dmFsaWRhdGVBbGxBY3Rpdml0aWVzKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgQkVHSU4iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzKTsKKyAgICB3aGlsZSAo
IW1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICB3aGlsZSAoIW1fYmFja2dy
b3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fYmFja2dyb3VuZEFjdGl2aXRp
ZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgRU5EIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7Cit9CiAgICAgCiBBc3Nl
cnRpb25TdGF0ZSBQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKCkKIHsK
LSAgICBpZiAobV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlmICghbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6
Rm9yZWdyb3VuZDsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlm
ICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZDsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3RhdGU6OlN1c3Bl
bmRlZDsKIH0KQEAgLTY4LDcgKzEwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNz
ZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUpCiAgICAgaWYgKG1fYXNzZXJ0aW9u
LT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNl
dEFzc2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUg
KGZvcmVncm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRBY3Rpdml0aWVzOiAlbHUpIiwg
bV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcywgbmV3U3RhdGUsIG1fZm9yZWdyb3VuZENvdW50ZXIu
dmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNldEFz
c2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZv
cmVncm91bmRBY3Rpdml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG1fcHJv
Y2Vzc0lkZW50aWZpZXIsIHRoaXMsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNp
emUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5z
ZXRTdGF0ZShuZXdTdGF0ZSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5l
d1N0YXRlKTsKIH0KQEAgLTE2Myw2ICsyMDAsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnVp
QXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dWlBc3NlcnRp
b25XaWxsRXhwaXJlSW1taW5lbnRseSgpIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7CiAg
ICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7Cisg
ICAgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1l
b3V0VGltZXIuc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmgKaW5kZXggOTc2MjI4YjQ5N2EwOGI1NDQ5OWFkMzY4OWJkNGQ0YTE0YjQwOWEyNS4u
ZGZkZmRkOGVkYjA5ZTM0Y2NmYTA0MzAxZWE5ZWIwMDM0ZWViNzExYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaWZu
ZGVmIFByb2Nlc3NUaHJvdHRsZXJfaAogI2RlZmluZSBQcm9jZXNzVGhyb3R0bGVyX2gKIAorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCi0KICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgIApAQCAtNDcsMjAgKzQ4LDUyIEBAIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQ7
CiAKIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvY2Vz
c1Rocm90dGxlcj4sIHByaXZhdGUgUHJvY2Vzc0Fzc2VydGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICBlbnVtIEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXJUeXBlIHsgfTsKLSAgICB0eXBlZGVm
IFJlZkNvdW50ZXI8Rm9yZWdyb3VuZEFjdGl2aXR5Q291bnRlclR5cGU+IEZvcmVncm91bmRBY3Rp
dml0eUNvdW50ZXI7Ci0gICAgdHlwZWRlZiBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyOjpUb2tl
biBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbjsKLSAgICBlbnVtIEJhY2tncm91bmRBY3Rpdml0eUNv
dW50ZXJUeXBlIHsgfTsKLSAgICB0eXBlZGVmIFJlZkNvdW50ZXI8QmFja2dyb3VuZEFjdGl2aXR5
Q291bnRlclR5cGU+IEJhY2tncm91bmRBY3Rpdml0eUNvdW50ZXI7Ci0gICAgdHlwZWRlZiBCYWNr
Z3JvdW5kQWN0aXZpdHlDb3VudGVyOjpUb2tlbiBCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbjsKLQog
ICAgIFByb2Nlc3NUaHJvdHRsZXIoUHJvY2Vzc1Rocm90dGxlckNsaWVudCYsIGJvb2wgc2hvdWxk
VGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbik7Ci0KLSAgICBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
biBmb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OwotICAgIEJhY2tncm91bmRBY3Rpdml0
eVRva2VuIGJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3Q7CisgICAgflByb2Nlc3NUaHJv
dHRsZXIoKTsKKworICAgIGVudW0gY2xhc3MgQWN0aXZpdHlUeXBlIHsgQmFja2dyb3VuZCwgRm9y
ZWdyb3VuZCB9OworICAgIHRlbXBsYXRlPEFjdGl2aXR5VHlwZSB0eXBlPiBjbGFzcyBBY3Rpdml0
eSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAg
ICAgQWN0aXZpdHkoUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyLCBBU0NJSUxpdGVyYWwgbmFt
ZSkKKyAgICAgICAgICAgIDogbV90aHJvdHRsZXIoJnRocm90dGxlcikKKyAgICAgICAgICAgICwg
bV9uYW1lKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRocm90dGxlci5hZGRBY3Rpdml0
eSgqdGhpcyk7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQ
SUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXIgU3RhcnRpbmcgJXtwdWJsaWN9cyBhY3Rpdml0
eSAlcCAvICcle3B1YmxpY31zJyIsIG1fdGhyb3R0bGVyLT5tX3Byb2Nlc3NJZGVudGlmaWVyLCBt
X3Rocm90dGxlciwgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3Vu
ZCIgOiAiYmFja2dyb3VuZCIsIHRoaXMsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICB9
CisKKyAgICAgICAgfkFjdGl2aXR5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzVmFs
aWQoKSkKKyAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIH0KKworICAgICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1fdGhyb3R0bGVyOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgUHJvY2Vzc1Rocm90dGxlcjsKKworICAgICAg
ICB2b2lkIGludmFsaWRhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIW1fdGhy
b3R0bGVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiW1BJ
RDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlciBFbmRpbmcgJXtwdWJsaWN9cyBhY3Rpdml0eSAl
cCAvICcle3B1YmxpY31zJyIsIG1fdGhyb3R0bGVyLT5tX3Byb2Nlc3NJZGVudGlmaWVyLCBtX3Ro
cm90dGxlciwgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3VuZCIg
OiAiYmFja2dyb3VuZCIsIHRoaXMsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAg
bV90aHJvdHRsZXItPnJlbW92ZUFjdGl2aXR5KCp0aGlzKTsKKyAgICAgICAgICAgIG1fdGhyb3R0
bGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIFByb2Nlc3NUaHJvdHRsZXIqIG1f
dGhyb3R0bGVyIHsgbnVsbHB0ciB9OworICAgICAgICBBU0NJSUxpdGVyYWwgbV9uYW1lOworICAg
IH07CisKKyAgICB1c2luZyBGb3JlZ3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxBY3Rpdml0eVR5
cGU6OkZvcmVncm91bmQ+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JlZ3JvdW5kQWN0aXZpdHk+
IGZvcmVncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSk7CisKKyAgICB1c2luZyBCYWNr
Z3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxBY3Rpdml0eVR5cGU6OkJhY2tncm91bmQ+OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwgbmFtZSk7CiAgICAgCiAgICAgdm9pZCBkaWRDb25uZWN0VG9Qcm9jZXNzKFBy
b2Nlc3NJRCk7Ci0gICAgYm9vbCBzaG91bGRCZVJ1bm5hYmxlKCkgY29uc3QgeyByZXR1cm4gbV9m
b3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpIHx8IG1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUoKTsg
fQorICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuc2l6ZSgpIHx8IG1fYmFja2dyb3VuZEFjdGl2aXRpZXMuc2l6ZSgpOyB9CiAK
IHByaXZhdGU6CiAgICAgQXNzZXJ0aW9uU3RhdGUgZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpOwpA
QCAtNzEsNiArMTA0LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVu
ZElQQyhJc1N1c3BlbnNpb25JbW1pbmVudCk7CiAgICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3Bl
bmQoKTsKIAorICAgIHZvaWQgYWRkQWN0aXZpdHkoRm9yZWdyb3VuZEFjdGl2aXR5Jik7CisgICAg
dm9pZCBhZGRBY3Rpdml0eShCYWNrZ3JvdW5kQWN0aXZpdHkmKTsKKyAgICB2b2lkIHJlbW92ZUFj
dGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYpOworICAgIHZvaWQgcmVtb3ZlQWN0aXZpdHkoQmFj
a2dyb3VuZEFjdGl2aXR5Jik7CisgICAgdm9pZCBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOwor
CiAgICAgLy8gUHJvY2Vzc0Fzc2VydGlvbkNsaWVudAogICAgIHZvaWQgdWlBc3NlcnRpb25XaWxs
RXhwaXJlSW1taW5lbnRseSgpIG92ZXJyaWRlOwogCkBAIC04MCwyMiArMTE5LDIyIEBAIHByaXZh
dGU6CiAgICAgUHJvY2Vzc0lEIG1fcHJvY2Vzc0lkZW50aWZpZXIgeyAwIH07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOwogICAgIFJ1bkxvb3A6OlRp
bWVyPFByb2Nlc3NUaHJvdHRsZXI+IG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcjsKLSAg
ICBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyIG1fZm9yZWdyb3VuZENvdW50ZXI7Ci0gICAgQmFj
a2dyb3VuZEFjdGl2aXR5Q291bnRlciBtX2JhY2tncm91bmRDb3VudGVyOworICAgIEhhc2hTZXQ8
Rm9yZWdyb3VuZEFjdGl2aXR5Kj4gbV9mb3JlZ3JvdW5kQWN0aXZpdGllczsKKyAgICBIYXNoU2V0
PEJhY2tncm91bmRBY3Rpdml0eSo+IG1fYmFja2dyb3VuZEFjdGl2aXRpZXM7CiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRDsKICAgICBib29sIG1fc2hv
dWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbjsKIH07CiAKLWlubGluZSBQcm9jZXNzVGhyb3R0
bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBQcm9jZXNzVGhyb3R0bGVyOjpmb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbigpIGNvbnN0CitpbmxpbmUgYXV0byBQcm9jZXNzVGhyb3R0bGVyOjpmb3Jl
Z3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpIC0+IHN0ZDo6dW5pcXVlX3B0cjxGb3Jl
Z3JvdW5kQWN0aXZpdHk+CiB7Ci0gICAgcmV0dXJuIEZvcmVncm91bmRBY3Rpdml0eVRva2VuKG1f
Zm9yZWdyb3VuZENvdW50ZXIuY291bnQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9yZWdy
b3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CiB9CiAKLWlubGluZSBQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBQcm9jZXNzVGhyb3R0bGVyOjpiYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpIGNvbnN0CitpbmxpbmUgYXV0byBQcm9jZXNzVGhyb3R0bGVyOjpiYWNrZ3Jv
dW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpIC0+IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3Jv
dW5kQWN0aXZpdHk+CiB7Ci0gICAgcmV0dXJuIEJhY2tncm91bmRBY3Rpdml0eVRva2VuKG1fYmFj
a2dyb3VuZENvdW50ZXIuY291bnQoKSk7Ci19Ci0gICAgCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
QmFja2dyb3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCiAjZW5kaWYgLy8gUHJvY2Vzc1Rocm90dGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggN2VjNWE2YjFiMGRlNDdm
YTY3YzI3YTM4NzFhMDYzNzlhODI1MjdhMS4uOGIyYjhiMmZjOThmMGY3MzFhN2I0ZTg2OTMwZTMz
Y2U0Y2QyNGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcApAQCAtNjIsOSArNjIsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJv
dmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Bybwog
ICAgICwgbV9pc1NlcnZlclJlZGlyZWN0KGlzU2VydmVyUmVkaXJlY3QpCiAgICAgLCBtX3JlcXVl
c3QocmVxdWVzdCkKICAgICAsIG1fcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudChwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50KQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBt
X3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eVRva2VuKCkpCi0jZW5kaWYKKyAgICAsIG1fcHJvdmlzaW9uYWxMb2FkQWN0aXZpdHkobV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlByb3Zpc2lvbmFsIExvYWQiX3Mp
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlz
aW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1
NjQgIiBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2Uu
aWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDYzNGZiNzVlODczOGUxNGU0MjdkOTc4YmM4
ZGVmZjY0NTEyZjFlZjQuLjYyN2U2OTFmNjI0ZDFlYjc4MzhhODhjNjVlOWI2YzcxY2JkZDI2MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApA
QCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYWNjZXNz
aWJpbGl0eVRva2VuOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBQcm9j
ZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N1c3BlbnNpb25Ub2tlbjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5
PiBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2aXR5OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDcyOGQ4YjBlNWNlNzI1
MTgxM2IxOTc2Y2Q0MjA0ZGE2MTUzOTM1OGQuLmI3YjA0Njk1OTI1ZGM2OGZkYzY1NjM1OGU1OWYx
NDIxNWU4NWNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpB
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIHByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpBZGRUcmFuc2FjdGlvbkNhbGxi
YWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3Mo
KS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmciX3MpKSkpOwogfQogCiB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmhpZGVDb250ZW50VW50aWxQZW5kaW5n
VXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCmluZGV4IDdmODljZWVmYzNmMjZkNmRkYTYwNDdmZmVkNDE3YWNlYmQwNDQ5MDMuLmVhYmVm
OWE3OGQwMTQ3NmM4NGJlMzRlN2ExMWU0NDE2YjEyNTBhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFN1
c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwg
UmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50
ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShzaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiAgICAgLCBtX3N1c3BlbnNpb25UaW1l
b3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNw
ZW5zaW9uVGltZWRPdXQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAsIG1fc3VzcGVu
c2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSkKKyAgICAsIG1fc3VzcGVuc2lvbkFjdGl2aXR5KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJQYWdlIHN1c3BlbnNpb24gZm9yIGJhY2svZm9yd2FyZCBjYWNoZSJf
cykpCiAjZW5kaWYKIHsKICAgICBhbGxTdXNwZW5kZWRQYWdlcygpLmFkZCh0aGlzKTsKQEAgLTIx
OCw3ICsyMTgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RU
b1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRp
bWVvdXRUaW1lci5zdG9wKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fc3Vz
cGVuc2lvblRva2VuID0gbnVsbHB0cjsKKyAgICBtX3N1c3BlbnNpb25BY3Rpdml0eSA9IG51bGxw
dHI7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBlZTJj
NmEzNzUyNGYyYzkxYWRhZmVhYWJjZjc5M2FkZTZkNjFkOGQ3Li43MDJlOTYyOTY4ZTYxYTZlODYx
NzFmOWFhNDBhZmNkZGJkMGE4ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+IG1fcmVhZHlUb1Vuc3VzcGVuZEhh
bmRsZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbnNp
b25UaW1lb3V0VGltZXI7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N1c3BlbnNpb25Ub2tlbjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX3N1
c3BlbnNpb25BY3Rpdml0eTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKaW5kZXggNTlmYmVkNWYwY2Nl
YmYxZTlhZTUyOTliYWM4YTZkYWNlNWFiMzU2ZS4uYWU1NmU1MzNhNjBiMjdmNzljYzFhZTNlNzY2
YWM4MTc0OWE3ZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpCiB7CiAgICAgaWYgKG1fYmFj
a0ZvcndhcmRJdGVtSUQgJiYgIW1fc3VzcGVuZGVkUGFnZSkgewogICAgICAgICBhdXRvJiBwcm9j
ZXNzID0gdGhpcy0+cHJvY2VzcygpOwotICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVt
SUQpLCBbdG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCldIHsgfSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFthY3Rpdml0
eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJDbGVhcmluZyBiYWNr
L2ZvcndhcmQgY2FjaGUgZW50cnkiX3MpXSB7IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMWIzZTE1
NWFkOWQ0YzJhMmExMmZkZWM2NjQ2NWUwYzNkZTMyZWU2Ni4uZGMyY2Q2OTYzNTEyODE0Y2JlZGIx
MDhmYmI1ZDQzMmNkMjZkYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpXShWZWN0b3I8U3RyaW5nPiYmIGhvc3RuYW1lcykgbXV0YWJsZSB7CisgICAgbmV0
d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzIl9zKV0oVmVjdG9yPFN0cmluZz4mJiBob3N0bmFtZXMpIG11dGFi
bGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoaG9zdG5hbWVzKSk7CiAgICAg
fSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29r
aWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2Vu
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0o
KSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSksIFtj
YWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBu
ZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQ29va2llIl9zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRv
JiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7
Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0g
bmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBt
dXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25J
RCwgdGltZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
YWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UiX3Mp
XSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBA
IC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQs
IGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgW2NhbGxi
YWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1l
bnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFj
dGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewogICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxD
b29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBu
ZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJs
ZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9u
ID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
QWxsQ29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVzKSk7CiAgICAgfSk7CiB9CkBAIC0x
NjAsNyArMTYwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGEKIHZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJM
JiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwg
dXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tl
biA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCld
KFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVz
KHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzIl9zKV0oVmVjdG9yPENv
b2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZN
b3ZlKGNvb2tpZXMpKTsKICAgICB9KTsKIH0KQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25J
RCwgSFRUUENvb2tpZQogI2VuZGlmCiAKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ki
X3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9
CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWUKIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgp
LT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRv
a2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhhMDZkN2YyMzkwYTEzNmJjZWRjNzAx
OTg4MTExMTg2MjBiYjc4MmYuLjExYWIxMmZhOTYzODE1NzBkYjU1ODE4NjNmNTc5OGQ1ZDdkNDBm
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTA1NSw3
ICsxMDU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGhvbGQgYSBwcm9jZXNzIGFzc2Vy
dGlvbiBhZnRlciBnZXR0aW5nIGNsb3NlZC4KLSAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRy
OworICAgIG1fYWN0aXZpdHkgPSBudWxscHRyOwogI2VuZGlmCiAKICAgICBzdG9wQWxsVVJMU2No
ZW1lVGFza3MoKTsKQEAgLTE5MzIsMjAgKzE5MzIsMjUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVRocm90dGxlU3RhdGUoKQogICAgIGJvb2wgaXNDYXB0dXJpbmdNZWRpYSA9IG1fYWN0aXZp
dHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKICAgICBi
b29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJ
c0F1ZGlibGUpOwogICAgIGlmICghaXNWaWV3VmlzaWJsZSgpICYmICFtX2Fsd2F5c1J1bnNBdEZv
cmVncm91bmRQcmlvcml0eSAmJiAhaXNDYXB0dXJpbmdNZWRpYSAmJiAhaXNBdWRpYmxlKSB7Ci0g
ICAgICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICAgICAgaWYgKG1fYWN0aXZpdHkpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1
cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBh
c3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJsZSIpOwotICAgICAg
ICAgICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYWN0aXZpdHkg
PSBudWxscHRyOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghbV9hY3Rpdml0eVRva2VuKSB7
Ci0gICAgICAgIGlmIChpc1ZpZXdWaXNpYmxlKCkpCisgICAgfSBlbHNlIGlmICghbV9hY3Rpdml0
eSkgeworICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBsb2dnaW5nLgorICAgICAgICBpZiAoaXNW
aWV3VmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBh
IGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIpOwotICAg
ICAgICBlbHNlIGlmIChpc0F1ZGlibGUpCisgICAgICAgICAgICBtX2FjdGl2aXR5ID0gbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMgdmlzaWJsZSJfcyk7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNBdWRpYmxlKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQ
cm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIHBs
YXlpbmcgYXVkaW8iKTsKLSAgICAgICAgZWxzZSBpZiAoaXNDYXB0dXJpbmdNZWRpYSkKKyAgICAg
ICAgICAgIG1fYWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rp
dml0eSgiVmlldyBpcyBwbGF5aW5nIGF1ZGlvIl9zKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0Nh
cHR1cmluZ01lZGlhKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBh
IGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUiKTsK
LSAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcyk7Cisg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBh
IGZvcmVncm91bmQgYXNzZXJ0aW9uIGV2ZW4gdGhvdWdoIHRoZSB2aWV3IGlzIG5vdCB2aXNpYmxl
IGJlY2F1c2UgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgdHJ1ZSIpOwotICAg
ICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRB
Y3Rpdml0eVRva2VuKCk7CisgICAgICAgICAgICBtX2FjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZpZXcgYWx3YXlzIHJ1bnMgYXQgZm9yZWdyb3Vu
ZCBwcmlvcml0eSJfcyk7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIH0KQEAgLTE5ODUsNyAr
MTk5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBIYWlsIE1hcnkgY2hlY2suIFNob3VsZCBub3QgYmUgcG9zc2libGUgKGRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSBzaG91bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2libGUs
CiAgICAgLy8gYW5kIGlmIHZpc2libGUgd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYXNzZXJ0aW9u
KSAtIGJ1dCB3ZSBzaG91bGQgbmV2ZXIgYmxvY2sgb24gYSBzdXNwZW5kZWQgcHJvY2Vzcy4KLSAg
ICBpZiAoIW1fYWN0aXZpdHlUb2tlbikgeworICAgIGlmICghbV9hY3Rpdml0eSkgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMDgs
NyArMjAxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKQEAgLTIwMzMsNyArMjAzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kIl9zKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFu
ZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTIxMzEsNyArMjEzNiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBj
b21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5h
bWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtMjE1
NSw3ICsyMTYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
ayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQiX3MpKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2Vs
ZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzcxMyw3ICsz
NzE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJf
dD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJl
cGxhY2VNYXRjaGVzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwg
c2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzczOCwx
NCArMzc0MywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
U2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9z
KSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFt
ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9u
RGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7Ci0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM3NTYsNyArMzc2
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0z
NzY3LDcgKzM3NzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZSJfcykpOwogICAgIG1f
bG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5m
cmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zNzc5LDcgKzM3ODQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nIl9zKSk7CiAgICAgbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogfQpAQCAtMzgwMyw3ICszODA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxi
YWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQ
cm9maWxlIl9zKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNh
bGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0
ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zODE1LDcgKzM4
MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQiX3MpKTsKICAgICBtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zODI4LDcgKzM4MzMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBDYWxsYmFja0JhcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KICNlbmRpZgpAQCAtMzg0MCw3ICszODQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9u
T3JDb250ZW50c0FzU3RyaW5nIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fd2Vi
UGFnZUlEKTsKIH0KIApAQCAtMzg1MSw3ICszODU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCkBAIC0zODYyLDcgKzM4NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCks
IG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzg3Myw3ICszODc4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpV
UkwqIHJlc28KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3Vy
Y2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zODg0
LDcgKzM4ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaWQgKEFQSQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSJfcykpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzkxNyw3
ICszOTIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENh
bGxiYWNrPiYmIGNhbGxiYWNrKQogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2sp
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWlu
dENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50Il9zKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZv
ckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsK
IH0KQEAgLTcyMDksNyArNzIxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0
ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3dhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVV
cGRhdGVBZnRlckZvY3VzaW5nRWxlbWVudCA9IGZhbHNlOwogICAgIG1fZGVmZXJyZWRFbGVtZW50
RGlkRm9jdXNBcmd1bWVudHMgPSBudWxscHRyOwotICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51bGxw
dHI7CisgICAgbV9hY3Rpdml0eSA9IG51bGxwdHI7CiAjZW5kaWYKIAogICAgIG1fcGFnZUlzVXNl
ck9ic2VydmFibGVDb3VudCA9IG51bGxwdHI7CkBAIC03ODI4LDcgKzc4MzMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGIl9zKSk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREYoZnJhbWVJRCwg
cmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODE2OCw3ICs4MTczLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2
b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jIl9zKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIApAQCAtODE3OSw3ICs4MTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNl
bGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5
bmMiX3MpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0
ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTgxOTAsNyAr
ODE5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jIl9zKSk7CiAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3lu
Yyhwb2ludCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODIwMSw3ICs4MjA2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMo
Y29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgV1QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jIl9zKSk7CiAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
QXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTgyNDUsNyAr
ODI1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJ
bnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUYWtlU25hcHNob3QocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODUyMSw3ICs4NTI2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRs
ZXIoRnVuY3Rpb248dm9pZCgpPiYKIAogICAgIGF1dG8gdm9pZENhbGxiYWNrID0gVm9pZENhbGxi
YWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB9LCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnN0
YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyIl9zKSk7CiAgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAg
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9
CkBAIC04NjY1LDcgKzg2NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICB9
CiAKICAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247Ci0gICAg
ICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENhbGxi
YWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9uYWxDYWxs
YmFja0lEKCk7CisgICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24g
PyBPcHRpb25hbENhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24iX3MpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQo
KTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExv
YWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lk
ZW50aWZpZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CkBAIC04ODgyLDcgKzg4ODcsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYm
IGF0dGFjaG1lbnQsIEZ1bmN0aW9uPAogICAgIH0KIAogICAgIGF1dG8gYXR0YWNobWVudElkZW50
aWZpZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudCJfcykpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRh
Y2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1h
cC5zZXQoYXR0YWNobWVudElkZW50aWZpZXIsIFdURk1vdmUoYXR0YWNobWVudCkpOwogfQpAQCAt
ODg5OCw3ICs4OTAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICBpZiAoYXV0byBk
YXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkKICAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IHsgKmRhdGEgfTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIl9zKSk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXko
KSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1v
dmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTkw
NTcsNyArOTA2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KEZ1bmN0aW9uPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCJfcykpOwogICAgIG1f
bG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggZDQ3YjdmNGYyN2RkMzQwYTkzZWEzNmM1OGU2YzE2Zjc4OGRiODI1NS4uYTM4
ODI1MmZlODc2OGE3NDYyZmNjYmNlYWZkYzIyOGY5MGU3ZDdjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIyOTEsNyArMjI5MSw3IEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5IHsgZmFsc2UgfTsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZp
dHlUb2tlbiBtX2FjdGl2aXR5VG9rZW47CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJv
dHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4gbV9hY3Rpdml0eTsKICNlbmRpZgogICAgIGJvb2wg
bV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxk
b3VibGU+IG1fY3B1TGltaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggYmJkNDhjMzdjN2ZkMmMxZjBkNzA3N2JmMTE4NzNiYzgwNDZiYTQ2Ny4uY2Ez
MGI2N2I5MDViODFhYmM4YTljMDJmNTY0NTA5ZWU0MTUxYTI1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtOTE3LDEyICs5MTcsMTIgQEAgV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgV2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzKFdlYlAKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dl
YlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJz
aXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkIGlzUHJld2FybWVkKQog
ewotICAgIGF1dG8gaW5pdGlhbGl6YXRpb25BY3Rpdml0eVRva2VuID0gcHJvY2Vzcy50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwotICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFr
ZVNjb3BlRXhpdChbJnByb2Nlc3MsIGluaXRpYWxpemF0aW9uQWN0aXZpdHlUb2tlbl0geworICAg
IGF1dG8gaW5pdGlhbGl6YXRpb25BY3Rpdml0eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzIGluaXRpYWxpemF0aW9uIl9zKTsKKyAgICBhdXRvIHNj
b3BlRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZwcm9jZXNzLCBpbml0aWFsaXphdGlvbkFjdGl2aXR5
ID0gV1RGTW92ZShpbml0aWFsaXphdGlvbkFjdGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gUm91bmQtdHJpcCB0byB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcyBiZWZvcmUgcmVsZWFzaW5n
IHRoZQotICAgICAgICAvLyBpbml0aWFsaXphdGlvbiBhY3Rpdml0eSB0b2tlbiwgc28gdGhhdCB3
ZSdyZSBzdXJlIHRoYXQgYWxsCisgICAgICAgIC8vIGluaXRpYWxpemF0aW9uIGFjdGl2aXR5LCBz
byB0aGF0IHdlJ3JlIHN1cmUgdGhhdCBhbGwKICAgICAgICAgLy8gbWVzc2FnZXMgc2VudCBmcm9t
IHRoaXMgZnVuY3Rpb24gaGF2ZSBiZWVuIGhhbmRsZWQuCi0gICAgICAgIHByb2Nlc3MuaXNSZXNw
b25zaXZlKFtpbml0aWFsaXphdGlvbkFjdGl2aXR5VG9rZW5dIChib29sKSB7IH0pOworICAgICAg
ICBwcm9jZXNzLmlzUmVzcG9uc2l2ZShbaW5pdGlhbGl6YXRpb25BY3Rpdml0eSA9IFdURk1vdmUo
aW5pdGlhbGl6YXRpb25BY3Rpdml0eSldIChib29sKSB7IH0pOwogICAgIH0pOwogCiAgICAgZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKTsKQEAgLTIwNDksMjQgKzIwNDksMjQgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmln
aW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigp
OwotICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtl
clByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICAgICAg
ICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1v
dmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCku
Zm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVn
cm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3Ry
YWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNG
b3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
c2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiU2Vy
dmljZSBXb3JrZXIgZm9yIHZpc2libGUgdmlldyhzKSJfcykpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVh
cigpOworICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9iYWNrZ3JvdW5k
V2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNh
biBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAg
ICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAg
ICAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICAgICAgICAgIG1f
YmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRB
Y3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURv
bWFpbikpCisgICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vydmlj
ZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBX
b3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcykpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigp
OworICAgICAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBt
X2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7Ci0gICAg
ICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsK
KyAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
Y2xlYXIoKTsKKyAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY2xlYXIoKTsKICAgICB9OwogICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKCk7CiAjZW5kaWYKQEAgLTIwNzUsMjMgKzIwNzUsMjMgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBhdXRvJiBuZXR3b3Jr
UHJvY2VzcyA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICAgICAgaWYgKG1fZm9yZWdy
b3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9mb3Jl
Z3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcykgewotICAgICAgICAgICAgICAgIG1fZm9yZWdy
b3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5m
b3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKSB7CisgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5k
QWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmZv
cmVncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsK
ICAgICAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25U
b0ZvcmVncm91bmQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fYmFja2dyb3VuZFRv
a2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOworICAgICAgICAgICAgbV9iYWNrZ3JvdW5k
QWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZh
bHVlKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJv
Y2VzcykgewotICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nl
c3MgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
OworICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
KSB7CisgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2Vz
cyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29y
a2luZyBmb3IgZm9yZWdyb3VuZCBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3Jr
UHJvY2VzcyA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5l
dHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAg
ICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAg
ICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOworICAg
ICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAg
ICB9OwogICAgIHVwZGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5kaWYKQEAgLTIx
MDAsMTEgKzIxMDAsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbnMoKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3Nl
cnRpb25TdGF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBj
cmFzaGVkOyB0YWtlIG5ldyB0b2tlbnMgZm9yIHRoZSBuZXcgbmV0d29yayBwcm9jZXNzLgotICAg
IGlmIChtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzKQotICAgICAgICBtX2JhY2tn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwotICAgIGVsc2UgaWYgKG1fZm9yZWdy
b3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9y
TmV0d29ya1Byb2Nlc3MgPSBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVk
OyB0YWtlIG5ldyBhY3Rpdml0aWVzIGZvciB0aGUgbmV3IG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBp
ZiAobV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9iYWNr
Z3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHku
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBiYWNrZ3JvdW5k
IHZpZXcocykiX3MpOworICAgIGVsc2UgaWYgKG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29y
a1Byb2Nlc3MpCisgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3Mg
PSBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgi
TmV0d29ya2luZyBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKG5ld05ldHdvcmtQcm9jZXNzUHJveHkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwNGNjYzk2YjljZWI1ODhjNDQ4MGU0Y2Y0Y2I3
NzVjZTQ3M2IzZWMzLi44ZGEwYjE3MjU5ZjY0ZTBjNDNiMDNhOTEyMDdmOWVjYTQyZDJmODlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTc2MCwxMSArNzYw
LDExIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5k
V2ViUHJvY2Vzc0NvdW50ZXIgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiAgICAgQmFj
a2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwot
ICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1fZm9yZWdyb3Vu
ZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7Ci0gICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX2Zv
cmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYmFja2dyb3VuZEFjdGl2aXR5
Rm9yTmV0d29ya1Byb2Nlc3M7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hN
YXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91
bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+
PiBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0Zv
clNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwYWVhNWJhOTZlYTBiMjU0Y2Y0
ODg3YmE5YmQ3NDAyZTUwYTYwYjU5Li5lZDU0ZDRhY2M4Y2Y5NjNmZWM1ODYyY2RlYWVhODQzMjY2
YmJmMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24oKQogCiAg
ICAgbV9yZXNwb25zaXZlbmVzc1RpbWVyLmludmFsaWRhdGUoKTsKICAgICBtX2JhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyLmludmFsaWRhdGUoKTsKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xv
Y2tlZEZpbGVzID0gbnVsbHB0cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVz
ID0gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBjb3B5VG9WZWN0b3IobV9mcmFt
ZU1hcC52YWx1ZXMoKSkpCiAgICAgICAgIGZyYW1lLT53ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7
CkBAIC0xMDEzLDEwICsxMDEzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgQVNT
RVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNz
aW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0byBhY3Rpdml0eSA9IHRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVE
YXRhIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGZldGNoaW5nIFdlYnNp
dGUgZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoZGF0YVR5cGVzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKKyAg
ICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2Vu
ZGlmCkBAIC0xMDMwLDEwICsxMDMwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzCiAgICAg
QVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBz
ZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byB0b2tlbiA9IHRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0byBhY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJz
aXRlRGF0YSJfcyk7CiAgICAgUkVMRUFTRV9MT0dfSUYoaXNSZWxlYXNlTG9nZ2luZ0FsbG93ZWQo
KSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBi
YWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBXZWIgcHJvY2VzcyBpcyBkZWxldGluZyBX
ZWJzaXRlIGRhdGEiLCB0aGlzKTsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShkYXRhVHlwZXMsIG1v
ZGlmaWVkU2luY2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0b2tl
biwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShh
Y3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9Q
QVJBTSh0aGlzKTsKICNlbmRpZgpAQCAtMTA0NywxMCArMTA0NywxMCBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aQogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5V
U0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1
dG8gdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgIGF1
dG8gYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zIl9zKTsKICAgICBSRUxFQVNFX0xPR19J
Rihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2Vi
UHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhl
IFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5z
IiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3Jp
Z2lucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRva2VuLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rp
dml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJB
TSh0aGlzKTsKICNlbmRpZgpAQCAtMTI5MiwxMiArMTI5MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykK
IHsKICAgICBpZiAoIWlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9s
ZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxl
cyA9IG51bGxwdHI7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBu
dWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV90b2tlbkZvckhvbGRp
bmdMb2NrZWRGaWxlcykgeworICAgIGlmICghbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxl
cykgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBp
cyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAgbV90b2tlbkZvckhvbGRp
bmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Cisg
ICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNr
Z3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZpbGVzIl9zKTsKICAgICB9CiB9CiAKQEAg
LTE1MTgsMjEgKzE1MTgsMjEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsdWdJbkRpZFJlY2Vp
dmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCkKIAogI2lmIFBMQVRGT1JNKFdBVENIT1Mp
CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JG
dWxsc2NyZWVuSW5wdXQoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0QmFja2dyb3VuZEFj
dGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCkKIHsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHMpCisgICAgaWYgKG1fYmFja2dyb3VuZEFj
dGl2aXR5Rm9yRnVsbHNjcmVlbkZvcm1Db250cm9scykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHMgPSBtX3Ro
cm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgIG1fYmFja2dyb3VuZEFjdGl2
aXR5Rm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eSgiRnVsbHNjcmVlbiBpbnB1dCJfcyk7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICJVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSBpdCBpcyBwcmVzZW50aW5nIGZ1bGxzY3JlZW4gVUkgZm9yIGZvcm0gY29udHJvbHMuIik7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5G
b3JGdWxsc2NyZWVuSW5wdXQoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRB
Y3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiB7Ci0gICAgaWYgKCFtX2JhY2tncm91bmRBY3Rp
dml0eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scykKKyAgICBpZiAoIW1fYmFja2dyb3Vu
ZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbkZvcm1Db250cm9scykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHMgPSBu
dWxscHRyOworICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbkZvcm1Db250cm9s
cyA9IG51bGxwdHI7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBoYXMgZGlz
bWlzc2VkIGZ1bGxzY3JlZW4gVUkgZm9yIGZvcm0gY29udHJvbHMuIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDYzMmI2OTc1OGRlOTE4Y2Q2
OGY0YWRjN2NmYzY4MzAxMjFiYWYxOS4uMmEyNDZlN2VkMmU2MWM4MTFkYTJmMWIwNzQ1MjFhNGY0
ZTQ3YzdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAg
LTI0Niw4ICsyNDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92aXNp
b25hbExvYWRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExv
YWRzOyB9CiAKICNpZiBQTEFURk9STShXQVRDSE9TKQotICAgIHZvaWQgdGFrZUJhY2tncm91bmRB
Y3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCk7Ci0gICAgdm9pZCByZWxlYXNlQmFja2dy
b3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKKyAgICB2b2lkIHN0YXJ0QmFj
a2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CisgICAgdm9pZCBlbmRCYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKICNlbmRpZgogCiAgICAgYm9vbCBpc1By
ZXdhcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcmV3YXJtZWQ7IH0KQEAgLTQ3OSw3ICs0Nzks
NyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9u
V2FzRGlzYWJsZWQ7CiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xv
Y2tlZEZpbGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHk+IG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXM7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIG1fZm9yZWdyb3Vu
ZFRva2VuOwogICAgIEJhY2tncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW47
CkBAIC01MTIsNyArNTEyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQXVkaWJsZVdlYlBh
Z2UgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKLSAgICBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9y
RnVsbHNjcmVlbkZvcm1Db250cm9sczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90
dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVs
bHNjcmVlbkZvcm1Db250cm9sczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCAzOGZhZTE2MTM1ZDk2NmUwM2I3ODA4YTcyNDM2NzFlMzg1YWYzNDE0Li5m
MDJkMGMyMjk3NGY4YmEwODJlMGI0MzA5MDQ3MTQzYmUxZGEzMWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTU5MDYsNyArNTkwNiw3IEBAIC0gKHZvaWQpcHJlc2VudFZpZXdDb250cm9sbGVyRm9yQ3Vy
cmVudEZvY3VzZWRFbGVtZW50CiAgICAgICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJl
c2VudFZpZXdDb250cm9sbGVyOl9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxl
ci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwogCiAgICAgLy8gUHJlc2VudGlu
ZyBhIGZ1bGxzY3JlZW4gaW5wdXQgdmlldyBjb250cm9sbGVyIGZ1bGx5IG9ic2N1cmVzIHRoZSB3
ZWIgdmlldy4gV2l0aG91dCB0YWtpbmcgdGhpcyB0b2tlbiwgdGhlIHdlYiBjb250ZW50IHByb2Nl
c3Mgd2lsbCBnZXQgYmFja2dyb3VuZGVkLgotICAgIF9wYWdlLT5wcm9jZXNzKCkudGFrZUJhY2tn
cm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCk7CisgICAgX3BhZ2UtPnByb2Nl
c3MoKS5zdGFydEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpOwogCiAgICAg
W3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlci50cmFuc2l0aW9uQ29vcmRpbmF0b3IgYW5pbWF0ZUFs
b25nc2lkZVRyYW5zaXRpb246bmlsIGNvbXBsZXRpb246W3dlYWtXZWJWaWV3ID0gV2Vha09iakNQ
dHI8V0tXZWJWaWV3Pihfd2ViVmlldyksIGNvbnRyb2xsZXIgPSBfcHJlc2VudGVkRnVsbFNjcmVl
bklucHV0Vmlld0NvbnRyb2xsZXJdIChpZCA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db29y
ZGluYXRvckNvbnRleHQ+KSB7CiAgICAgICAgIGF1dG8gc3Ryb25nV2ViVmlldyA9IHdlYWtXZWJW
aWV3LmdldCgpOwpAQCAtNTk0Miw3ICs1OTQyLDcgQEAgLSAodm9pZClkaXNtaXNzQWxsSW5wdXRW
aWV3Q29udHJvbGxlcnM6KEJPT0wpYW5pbWF0ZWQKICAgICAgICAgICAgIFtzZWxmIGJlY29tZUZp
cnN0UmVzcG9uZGVyXTsKICAgICB9CiAKLSAgICBfcGFnZS0+cHJvY2VzcygpLnJlbGVhc2VCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpOworICAgIF9wYWdlLT5wcm9j
ZXNzKCkuZW5kQmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CiB9CiAKIC0g
KHZvaWQpZm9jdXNlZEZvcm1Db250cm9sVmlld0RpZFN1Ym1pdDooV0tGb2N1c2VkRm9ybUNvbnRy
b2xWaWV3ICopdmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggMDQyYmI1ZDMyMTRmZTAwMDE1NTZmOWE2MTMyOTU5M2NkZjk4YjE0ZC4u
OTg5ZmNkNmIwZWJkMjY4NjZiZWIzYjc3NGJlMmMxY2NhMTVkYjJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xOTksNyArMTk5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKEZ1
bmN0aW9uPHZvaWQoY29uc3QgRm9jdXNlZEUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJD
b3JlOjpUZXgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRo
R2VzdHVyZSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Vs
ZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5cGUs
IGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlU2Vs
ZWN0aW9uV2l0aFRvdWNoZXMiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKHBvaW50LCB0b3VjaGVzLCBiYXNlSXNT
dGFydCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKQEAgLTQ3MSw3ICs0NzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcm
IGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQ
YWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgb3JpZ2lu
YWxUZXh0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC00ODksNyArNDg5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQiX3MpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJp
dHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwog
fQogCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9u
QXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlv
biksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNl
bGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9u
KSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKQEAgLTUyMiw3ICs1MjIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCBib29sIGlzSQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChwb2ludCwgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IApAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24i
X3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luU2VsZWN0
aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQog
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgCiB9CkBAIC01NTYsNyArNTU2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFu
ZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnki
X3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAg
ICAKIH0KQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3Rh
dGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0Il9z
KSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RGljdGF0
aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC01ODksNyArNTg5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dCJfcykpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0
IFdlYkMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdv
VG91Y2hlcyJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogICAgIC8vIFdlIG5v
cm1hbGx5IGRlbGF5IHByb2Nlc3Mgc3VzcGVuc2lvbiB3aGVuIHRoZSBhcHAgaXMgYmFja2dyb3Vu
ZGVkIHVudGlsIHRoZSBjdXJyZW50IHBhZ2UgbG9hZCBjb21wbGV0ZXMuIEhvd2V2ZXIsCiAgICAg
Ly8gd2UgZG8gbm90IHdhbnQgdG8gZG8gc28gd2hlbiB0aGUgc2NyZWVuIGlzIGxvY2tlZCBmb3Ig
cG93ZXIgcmVhc29ucy4KICAgICBpZiAoaXNTdXNwZW5kZWRVbmRlckxvY2spCi0gICAgICAgIE5h
dmlnYXRpb25TdGF0ZTo6ZnJvbVdlYlBhZ2UoKnRoaXMpLnJlbGVhc2VOZXR3b3JrQWN0aXZpdHlU
b2tlbihOYXZpZ2F0aW9uU3RhdGU6Ok5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbjo6
U2NyZWVuTG9ja2VkKTsKKyAgICAgICAgTmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqdGhp
cykucmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOYXZpZ2F0aW9uU3RhdGU6Ok5ldHdvcmtBY3Rpdml0
eVJlbGVhc2VSZWFzb246OlNjcmVlbkxvY2tlZCk7CiAjZW5kaWYKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3Vz
cGVuZGVkVW5kZXJMb2NrKSwgbV93ZWJQYWdlSUQpOwogfQpAQCAtNzE1LDcgKzcxNSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25P
ZmZzZXQoV2ViQ29yZTo6VGV4dEdyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCJfcykp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFy
aXR5KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC03MjYsNyAr
NzI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0
V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNl
bGVjdGlvbk9mZnNldFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIApAQCAtNzUyLDcgKzc1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2Vs
ZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9m
ZnNldCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNl
bGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApA
QCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEZvY3VzZWRF
bGVtZW50KGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2EKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQiX3Mp
KTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0Rm9jdXNl
ZEVsZW1lbnQoaXNGb3J3YXJkLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0x
MDk1LDcgKzEwOTUsNyBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZQogICAgIH0KIAogICAgIHVp
bnQzMl90IHBhZ2VDb3VudCA9IDA7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYiX3Mp
KTsKICAgICB1c2luZyBNZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nQW5kRHJhd1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZy
YW1lSUQsIHByaW50SW5mbywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCks
IG1fd2ViUGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpKTsKICAgICByZXR1cm4gcGFnZUNvdW50
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381978</attachid>
            <date>2019-10-25 16:36:42 -0700</date>
            <delta_ts>2019-10-25 16:42:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203438-20191025163641.patch</filename>
            <type>text/plain</type>
            <size>105601</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjMGJiZDU0NDVjMGI0YTlj
MTU4MzNhMjRiZTdiMTY4MmI1ZTU4YmYuLjMwZjgyMjdiN2VkMmE3MWM2MWQ0ZWNkZDFhNzhjMTQ1
M2JjZDkwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDE5LTEwLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gSW1wcm92ZSBw
cm9jZXNzIGFzc2VydGlvbi1yZWxhdGVkIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSBjYXVzZXMg
b2YgbGVha2VkIGFzc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcHJvdmUgcHJvY2VzcyBhc3NlcnRpb24tcmVsYXRlZCBsb2dnaW5nIHRv
IGhlbHAgaWRlbnRpZnkgY2F1c2VzIG9mIGxlYWtlZCBhc3NlcnRpb25zLiBQcmV2aW91c2x5LAor
ICAgICAgICB3aGVuZXZlciBvdXIgY29kZSBuZWVkZWQgdG8gcHJldmVudCBzdXNwZW5zaW9uIG9m
IGEgY2hpbGQgcHJvY2VzcyBkdWUgdG8gc29tZSBraW5kIG9mIGFjdGl2aXR5LCBpdAorICAgICAg
ICB3b3VsZCBzaW1wbHkgZ3JhYiBhICJ0b2tlbiIgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcycgUHJv
Y2Vzc1Rocm90dGxlci4gVGhpcywgaW4tdHVybiwgd291bGQgY2F1c2UKKyAgICAgICAgdGhlIFBy
b2Nlc3NUaHJvdHRsZXIgdG8gdGFrZSB0aGUgcmlnaHQga2luZCBvZiBQcm9jZXNzQXNzZXJ0aW9u
IG9yIHJlbGVhc2UgaXQgd2hlbiBub2JvZHkgaG9sZHMKKyAgICAgICAgYW55IHRva2VucyBhbnkg
bW9yZS4KKworICAgICAgICBXZSBmcmVxdWVudGx5IGhhdmUgaXNzdWVzIHdoZXJlIHRoZSBVSVBy
b2Nlc3Mga2VlcHMgaXRzIGFzc2VydGlvbnMgYXJvdW5kIGZvciB0b28gbG9uZyBhZnRlciBnZXR0
aW5nCisgICAgICAgIGJhY2tncm91bmRpbmcuIFRoaXMgY2F1c2VzIHRoZSBhc3NlcnRpb25zIHRv
IGdldCBpbnZhbGlkYXRlZCBhbmQgdGhlIFVJUHJvY2VzcyB3aWxsIHVzdWFsbHkgc3VzcGVuZAor
ICAgICAgICAoYWxiZWl0IHdpdGggYSBkZWxheSwgd2hpY2ggaXMgYmFkIGZvciBwb3dlcikuIFNv
bWV0aW1lcyB0aG91Z2gsIHdlIGdldCBraWxsZWQgYmVjYXVzZSBvdXIgaW52YWxpZGF0aW9uCisg
ICAgICAgIGhhbmRsZXIgZG9lcyBub3QgZ2V0IGEgY2hhbmNlIHRvIHJlbGVhc2UgdGhlIGFzc2Vy
dGlvbiBpbiB0aW1lLgorCisgICAgICAgIEZpbmRpbmcgb3V0IHdoeSB3ZSdyZSBrZWVwaW5nIGFy
b3VuZCBhc3NlcnRpb25zIGlzIGN1cnJlbnRseSB2ZXJ5IGRpZmZpY3VsdCBiZWNhdXNlIHdlIGNh
bm5vdCBlYXNpbHkKKyAgICAgICAgc2VlIGluIHRoZSBsb2dzIHdobyBpcyBzdGlsbCBob2xkaW5n
IFByb2Nlc3NUaHJvdHRsZXIgdG9rZW5zLiBUbyBtYWtlIHN1Y2ggZGVidWdnaW5nIGVhc2llciwg
Y2xpZW50cworICAgICAgICBub3cgbm90aWZ5IHRoZSBQcm9jZXNzVGhyb3R0bGVyIHdoZW4gdGhl
eSBzdGFydCBzb21lIGFjdGl2aXR5IGFuZCBwcm92aWRlIGEgdXNlci1yZWFkYWJsZSBkZXNjcmlw
dGlvbgorICAgICAgICBvZiB0aGUgYWN0aXZpdHkuIFRoZSBjbGllbnQgdGhlbiBnZXRzIGEgRm9y
ZWdyb3VuZEFjdGl2aXR5IG9yIEJhY2tncm91bmRBY3Rpdml0eSBvYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBzaW1wbHkgYSB0b2tlbi4gQXMgYSByZXN1bHQsIHdlIGFyZSBub3cgYWJsZSB0byBs
b2cgd2hlbiBhIGdpdmVuIGFjdGl2aXR5IHRoYXQgcHJldmVudHMgc3VzcGVuc2lvbgorICAgICAg
ICBiZWdpbnMgYW5kIGVuZHMsIHdpdGggYSB1c2VyLWZyaWVuZGx5IHN0cmluZy4gQWxzbywgd2hl
biB0aGUgYXNzZXJ0aW9uIGdldHMgaW52YWxpZGF0ZWQsIGl0IHdpbGwKKyAgICAgICAgaW52YWxp
ZGF0ZSBhbGwgdGhlc2UgcGVuZGluZyBhY3Rpdml0aWVzIGFuZCB3ZSdsbCBzZWUgaW4gdGhlIGxv
Z3MgdGhlIG5hbWUgb2YgdGhlIGFjdGl2aXRpZXMgdGhhdAorICAgICAgICB3ZXJlIHN0aWxsIGdv
aW5nIG9uIHVwb24gaW52YWxpZGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6c2VuZEludm9jYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlSXNMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Jlc3VtZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tNYXA6OnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFN5bmNBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
OjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
flByb2Nlc3NUaHJvdHRsZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjph
ZGRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFj
dGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFs
bEFjdGl2aXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3Rl
ZEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0
QXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1aUFz
c2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6fkFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZp
dHk6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpB
Y3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6
OnNob3VsZEJlUnVubmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpiYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQ
cm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFByb2Nlc3NSZXF1ZXN0VG9TdXNwZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGlj
YXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzaHV0RG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
SW5wdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1l
bnRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJv
bGxlcnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3
b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKToKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRoQXN5bmNSZXBseSgpIHRvIHNpbXBs
aWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCmluZGV4IDg0YjQ3MGM5NTI2
NGJkN2RkMjA4MGMyNzZkNjFmZTJjMDZmNTU5NTYuLjU0Y2RjMDMwYTJlOWMxYWNjYzVjNGVjMzlh
YjliMzM1ZGI0ZjA2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBSZW1vdGVPYmplY3RSZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1lc3Nh
Z2VTZW5kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25J
RCgpID0gMDsKIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVVu
dXNlZFJlcGx5QmxvY2sodWludDY0X3QgcmVwbHlJRCk7CiAKICAgICBXZWFrT2JqQ1B0cjxfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeT4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeTsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9w
ZW5kaW5nUmVwbGllczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9wZW5kaW5nUmVwbGllczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDMwZWM0ZTcwNjNiMzJj
ZGI5ZmZhNzdhNTU0NDc3MDkwYjQ0MDRkM2IuLmU0OGM5Mjg1Nzc4NWMzY2Q4NTA5YjFiMWMzZTI3
MTliMTliZWM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBSZW1vdGVP
YmplY3RSZWdpc3RyeTo6c2VuZEludm9jYXRpb24oY29uc3QgUmVtb3RlT2JqZWN0SW52b2NhdGlv
biYgaW52b2NhdGkKIAogICAgIGlmIChhdXRvKiByZXBseUluZm8gPSBpbnZvY2F0aW9uLnJlcGx5
SW5mbygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nUmVwbGllcy5jb250YWlucyhyZXBs
eUluZm8tPnJlcGx5SUQpKTsKLSAgICAgICAgbV9wZW5kaW5nUmVwbGllcy5hZGQocmVwbHlJbmZv
LT5yZXBseUlELCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgIG1fcGVu
ZGluZ1JlcGxpZXMuYWRkKHJlcGx5SW5mby0+cmVwbHlJRCwgYmFja2dyb3VuZEFjdGl2aXR5KCJS
ZW1vdGVPYmplY3RSZWdpc3RyeSBpbnZvY2F0aW9uIl9zKSk7CiAgICAgfQogCiAgICAgbWVzc2Fn
ZVNlbmRlcigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpJbnZva2VNZXRo
b2QoaW52b2NhdGlvbiksIG1lc3NhZ2VEZXN0aW5hdGlvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKaW5kZXggNDU1NWM2YjMxZDFlZTU0
YzU0MmQ2ZDIwMzM4OTNjMDFiZjA3MTY5Ny4uNWQ5YjkxYzg1MGYyNWEzZjlkMTk2ZDc4OGE4MTg1
OWY4N2RlODFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha09iakNQdHI8aWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2
aXR5OwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCAyNTY2M2FkOTQxYmE3NTcxNzA0YmUwMmJh
M2UzNzY4ODljMzYwYWE2Li42NTFiNzAxNGJlZjU5NjQyOWFjMTViYzc4M2U5MWQ4NDdmYjA5NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQpAQCAtMjY4LDggKzI2OCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRv
a2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdl
KCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBw
cmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKLSAgICAg
ICAgbV9hY3Rpdml0eVRva2VuID0gd2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7CisgICAg
ICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CiAgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CkBAIC0yNzksOSArMjc5LDkgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nh
cnkoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICBpZiAobV9hY3Rpdml0eSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5c3RlbSBw
cmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwotICAgICAgICBtX2FjdGl2aXR5VG9r
ZW4gPSBudWxscHRyOworICAgICAgICBtX2FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRmZGU3Yzk4NjgwMWQ4YzE4
NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uNjc1ZTNhMGM1YjYwMGFiMGJmZjRhMDQ4NzUxNTI0NjQ4
YjY1OTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RQYWlu
dCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIE5ldHdvcmtB
Y3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiB7IExvYWRDb21wbGV0ZWQsIFNjcmVlbkxvY2tlZCB9
OwotICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRv
a2VuUmVsZWFzZVJlYXNvbik7CisgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlSZWxlYXNl
UmVhc29uIHsgTG9hZENvbXBsZXRlZCwgU2NyZWVuTG9ja2VkIH07CisgICAgdm9pZCByZWxlYXNl
TmV0d29ya0FjdGl2aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24pOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN3YXBX
ZWJQcm9jZXNzZXMoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
dm9pZCByZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW5BZnRlckxvYWRDb21wbGV0aW9uKCkgeyBy
ZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVh
c29uOjpMb2FkQ29tcGxldGVkKTsgfQorICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFm
dGVyTG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHkoTmV0d29ya0FjdGl2
aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBsZXRlZCk7IH0KICNlbmRpZgogCiAgICAgV0tXZWJW
aWV3ICptX3dlYlZpZXc7CkBAIC0yNTgsOCArMjU4LDggQEAgcHJpdmF0ZToKICAgICB9IG1faGlz
dG9yeURlbGVnYXRlTWV0aG9kczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOwot
ICAgIFJ1bkxvb3A6OlRpbWVyPE5hdmlnYXRpb25TdGF0ZT4gbV9yZWxlYXNlQWN0aXZpdHlUaW1l
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5PiBtX25ldHdvcmtBY3Rpdml0eTsKKyAgICBSdW5Mb29wOjpUaW1lcjxOYXZpZ2F0aW9uU3Rh
dGU+IG1fcmVsZWFzZU5ldHdyb2tBY3Rpdml0eVRpbWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTRh
ZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVlNjhlMTNlNTJlMDFiMy4uOThjZWNmNmFkODhmMWI5YjEz
ZjJlNTRmODE5YTMyZGMzZDhjYjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvblN0YXRlKFdLV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcygpCiAgICAgLCBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMoKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtB
Y3Rpdml0eVRva2VuQWZ0ZXJMb2FkQ29tcGxldGlvbikKKyAgICAsIG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6
cmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFmdGVyTG9hZENvbXBsZXRpb24pCiAjZW5kaWYKIHsKICAg
ICBBU1NFUlQobV93ZWJWaWV3LT5fcGFnZSk7CkBAIC0xMjA5LDIxICsxMjA5LDIxIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5nKCkKIH0KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0
eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiByZWFzb24pCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3JrQWN0aXZpdHlSZWxl
YXNlUmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKKyAgICBpZiAo
IW1fbmV0d29ya0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKHJlYXNv
bikgewotICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpMb2FkQ29t
cGxldGVkOgorICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBs
ZXRlZDoKICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29y
a0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CisgICAgY2FzZSBOZXR3
b3JrQWN0aXZpdHlSZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3Vu
ZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxvY2tlZCIsIHRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsK
LSAgICBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyLnN0b3AoKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgbV9yZWxlYXNlTmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwog
fQogI2VuZGlmCiAKQEAgLTEyMzEsMjMgKzEyMzEsMjMgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OmRpZENoYW5nZUlzTG9hZGluZygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAobV93ZWJWaWV3LT5fcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmlzTG9hZGluZygpKSB7Ci0gICAg
ICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgbmV0d29yayBhY3Rpdml0eSB0b2tlbiBpZiBhIGxvYWQg
c3RhcnRzIGFmdGVyIHRoZSBzY3JlZW4gaGFzIGJlZW4gbG9ja2VkLgorICAgICAgICAvLyBXZSBk
byBub3Qgc3RhcnQgYSBuZXR3b3JrIGFjdGl2aXR5IGlmIGEgbG9hZCBzdGFydHMgYWZ0ZXIgdGhl
IHNjcmVlbiBoYXMgYmVlbiBsb2NrZWQuCiAgICAgICAgIGlmIChbVUlBcHAgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX3JlbGVhc2VB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1f
d2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAg
ICAgIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIuc3RvcCgpOworICAgICAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9h
Y3Rpdml0eVRva2VuKSB7CisgICAgICAgIGlmICghbV9uZXR3b3JrQWN0aXZpdHkpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRh
a2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFy
dGVkIiwgdGhpcyk7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3dlYlZpZXctPl9w
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2Vzcygp
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9hY3Rpdml0eVRva2VuKSB7CisgICAgfSBlbHNlIGlmIChtX25l
dHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBz
byB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tncm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25k
cyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAg
ICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJv
YmxlbS8yNzkxMDk2ND4uCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2Ut
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2
aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBz
b29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9y
ZWxlYXNlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoM19zKTsKKyAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RhcnRPbmVTaG90KDNfcyk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTEzNTAsOCArMTM1MCw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJv
Y2Vzc2VzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91
ciBiYWNrZ3JvdW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9u
ZS4KLSAgICBpZiAobV9hY3Rpdml0eVRva2VuKQotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKKyAgICBpZiAobV9uZXR3b3JrQWN0aXZpdHkpCisgICAgICAgIG1fbmV0d29ya0Fj
dGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCmlu
ZGV4IDIwY2Q1M2M5NDQzOGJkMWI3OTRjZDQyMzE0ZWIyZTZjYjQ1YzU5ZTMuLjQ5N2FiNzIyMDBj
ZDdkZGFmYjE2M2M2YzZkN2VhNjc2YjI3YzA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Qcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5Ojp0YWtlQmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKQorc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eT4gVUlSZW1vdGVPYmplY3RSZWdpc3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5
KEFTQ0lJTGl0ZXJhbCBuYW1lKQogewotICAgIHJldHVybiBtX3BhZ2UucHJvY2VzcygpLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgcmV0dXJuIG1fcGFnZS5wcm9j
ZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpOwogfQogCiBVSVJlbW90
ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oCmluZGV4IGM0MGI0NTM2NjNjOWZlNTllMDZhODU1YmVkNzYzYjhmM2RiZGRmM2YuLmQ2Mzg4
Mjc1NTQwNzUxYmIxZjA2MGJhOTdjOWU5N2U2MGFiYTY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1l
c3NhZ2VTZW5kZXIoKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25JRCgp
IGZpbmFsOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIHRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQppbmRleCA4MzQzNWY5NmExMDU0ODVhYWFlMmVjMjg3MzcxNTVkNzBmMDgwNDZkLi5mZTgx
OTRmNjQ3NDQ2M2FiNmU3ZmIxOGJhOWUxYmFlYWI1OTAzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpCiAg
ICAgLy8gVGhlIFdlYlByb2Nlc3Mgd2FzIGF3YWtlbmVkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu
IHRoZSBVSVByb2Nlc3MuIFRha2Ugb3V0IGFuIGFzc2VydGlvbiBmb3IgYQogICAgIC8vIGxpbWl0
ZWQgZHVyYXRpb24gdG8gYWxsb3cgd2hhdGV2ZXIgdGFzayBuZWVkcyB0byBiZSBhY2NvbXBsaXNo
ZWQgdGltZSB0byBjb21wbGV0ZS4KICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIFByb2Nlc3Mgd2FzIHVu
ZXhwZWN0ZWRseSByZXN1bWVkLCBzdGFydGluZyBiYWNrZ3JvdW5kIGFjdGl2aXR5IiwgdGhpcyk7
Ci0gICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRv
a2VuID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0geworICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBy
b2Nlc3Mgd2FzIHVuZXhwZWN0ZWRseSByZXN1bWVkIl9zKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5k
IGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwogICAgIG1fdW5l
eHBlY3RlZEFjdGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVT
aG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4
cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCmluZGV4IGIyNzc5MjBkOWU4MDA2MWQ2ZGRlNTJjNGM1YWRkOGI0NTJkZDU0MDYu
LmE5MzVjZmVkYjg0NTQwYWQ5NWQ4ZGVjYTA4MGI0YjAxMWU2MGYxZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC02OSwxNyArNjksMTcgQEAgcHJvdGVj
dGVkOgogICAgIHN0cnVjdCBUeXBlVGFnIHsgfTsKICAgICB0eXBlZGVmIGNvbnN0IFR5cGVUYWcq
IFR5cGU7CiAKLSAgICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAg
ICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5KQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fY2FsbGJhY2tJRChDYWxsYmFja0lEOjpnZW5lcmF0ZUlE
KCkpCi0gICAgICAgICwgbV9hY3Rpdml0eVRva2VuKGFjdGl2aXR5VG9rZW4pCisgICAgICAgICwg
bV9hY3Rpdml0eShXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBt
X2FjdGl2aXR5OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KQEAgLTg3LDkgKzg3LDkg
QEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rp
b247CiAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVu
Y3Rpb24mJiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5ID0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
YWN0aXZpdHkpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdlbmVyaWND
YWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgICAgICA6IENh
bGxiYWNrQmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCisgICAgR2VuZXJpY0NhbGxiYWNrKENh
bGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eT4mJiBhY3Rpdml0eSkKKyAgICAgICAgOiBDYWxsYmFja0Jh
c2UodHlwZSgpLCBXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1v
dmUoY2FsbGJhY2spKQogICAgIHsKICAgICB9CkBAIC0xODksOSArMTg5LDkgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxiYWNrSUQgcHV0
KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQorICAgIENhbGxiYWNrSUQg
cHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIFdURk1vdmUoYWN0aXZpdHkpKTsK
ICAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhZjVjNTUyOGIyN2VmMDRkMDM5MjAwNzE3N2VlYTg0ZmUyODZlMTQxLi42MGUy
Y2IyNDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8VwogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25J
RF0gKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgYWN0aXZpdHkgPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBzZXNzaW9uSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOwogICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25JRF0gKCkgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCBhY3Rp
dml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBX
ZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11
dGFibGUgeworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
ZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBA
IC0zMDIsOSArMzAyLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQogICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaW52YWxpZGF0
ZSgpOwogI2VuZGlmCiAKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0
cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKICAgICAK
LSAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOworICAgIG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgPSAwOwog
CiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xMDkzLDEyICsx
MDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIHsKICAgICBpZiAoIWlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9j
ZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdv
cmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAg
bV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CisgICAgICAgIG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcykgeworICAgIGlmICghbV9h
Y3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcykgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsK
LSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2Vk
RmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zKTsKICAgICB9CiB9CiAKQEAgLTExMDcsMTEgKzExMDcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcygpCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIDApOwogICAgIAogICAgICsrbV9zeW5jQWxsQ29v
a2llc0NvdW50ZXI7Ci0gICAgaWYgKG1fc3luY0FsbENvb2tpZXNUb2tlbikKKyAgICBpZiAobV9z
eW5jQWxsQ29va2llc0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IHN5bmNpbmcgY29va2llcyIsIHRoaXMpOwotICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9zeW5jQWxsQ29va2ll
c0FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeW5jaW5nIGNvb2tp
ZXMiX3MpOwogfQogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29v
a2llcygpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFN5bmNBbGxDb29raWVzKCkKICAgICAtLW1fc3luY0FsbENvb2tpZXNDb3VudGVyOwogICAgIGlm
ICghbV9zeW5jQWxsQ29va2llc0NvdW50ZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRvbmUgc3lu
Y2luZyBjb29raWVzIiwgdGhpcyk7Ci0gICAgICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IG51
bGxwdHI7CisgICAgICAgIG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IGUxMGYwZTAyYjdjMzdiNzc1MDFiMTUxNjJkZWYxZDY4YTdm
ZmMyYzkuLjQ3MjYyZWJmZmI0Njc0ZWI1YzcwMDM2ODkzZjdiMDgwM2I0YWMyNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yNzcsOCArMjc3LDggQEAgcHJpdmF0ZToKICAgICBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogI2VuZGlmCiAgICAg
UHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fc3luY0FsbENvb2tpZXNU
b2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eTsKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7
IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApp
bmRleCA3YzQ1ZjIwMWRmNzU0NTQ0MzRmY2U4ZWRiZjVmYmM4M2I4MjhlNTY5Li4wYzNiM2EyOTJm
ZjI5OTIxOTZlMGU3ZDBmMzAzNzFmMmE3OWNiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtNDIsMTcgKzQyLDU0IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKQogUHJvY2Vzc1Rocm90dGxl
cjo6UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNzLCBib29s
IHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICAsIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZQcm9jZXNzVGhyb3R0bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmly
ZWQpCi0gICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsgfSkKLSAgICAsIG1fYmFja2dyb3VuZENvdW50ZXIo
W3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOyB9KQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKHNob3VsZFRha2VVSUJhY2tn
cm91bmRBc3NlcnRpb24pCiB7CiB9CisKK1Byb2Nlc3NUaHJvdHRsZXI6On5Qcm9jZXNzVGhyb3R0
bGVyKCkKK3sKKyAgICBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7
CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVB
c3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2
aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOwor
fQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEZvcmVncm91bmRBY3Rp
dml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFj
dGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkp
Cit7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFjdGl2aXR5KTsKKyAgICB1
cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6Omlu
dmFsaWRhdGVBbGxBY3Rpdml0aWVzKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgQkVHSU4iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzKTsKKyAgICB3aGlsZSAo
IW1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICB3aGlsZSAoIW1fYmFja2dy
b3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fYmFja2dyb3VuZEFjdGl2aXRp
ZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgRU5EIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7Cit9CiAgICAgCiBBc3Nl
cnRpb25TdGF0ZSBQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKCkKIHsK
LSAgICBpZiAobV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlmICghbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6
Rm9yZWdyb3VuZDsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlm
ICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZDsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3RhdGU6OlN1c3Bl
bmRlZDsKIH0KQEAgLTY4LDcgKzEwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNz
ZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUpCiAgICAgaWYgKG1fYXNzZXJ0aW9u
LT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNl
dEFzc2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUg
KGZvcmVncm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRBY3Rpdml0aWVzOiAlbHUpIiwg
bV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcywgbmV3U3RhdGUsIG1fZm9yZWdyb3VuZENvdW50ZXIu
dmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNldEFz
c2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZv
cmVncm91bmRBY3Rpdml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG1fcHJv
Y2Vzc0lkZW50aWZpZXIsIHRoaXMsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNp
emUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5z
ZXRTdGF0ZShuZXdTdGF0ZSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5l
d1N0YXRlKTsKIH0KQEAgLTE2Myw2ICsyMDAsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnVp
QXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dWlBc3NlcnRp
b25XaWxsRXhwaXJlSW1taW5lbnRseSgpIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7CiAg
ICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7Cisg
ICAgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1l
b3V0VGltZXIuc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmgKaW5kZXggOTc2MjI4YjQ5N2EwOGI1NDQ5OWFkMzY4OWJkNGQ0YTE0YjQwOWEyNS4u
ZGZkZmRkOGVkYjA5ZTM0Y2NmYTA0MzAxZWE5ZWIwMDM0ZWViNzExYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaWZu
ZGVmIFByb2Nlc3NUaHJvdHRsZXJfaAogI2RlZmluZSBQcm9jZXNzVGhyb3R0bGVyX2gKIAorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCi0KICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgIApAQCAtNDcsMjAgKzQ4LDUyIEBAIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQ7
CiAKIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvY2Vz
c1Rocm90dGxlcj4sIHByaXZhdGUgUHJvY2Vzc0Fzc2VydGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICBlbnVtIEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXJUeXBlIHsgfTsKLSAgICB0eXBlZGVm
IFJlZkNvdW50ZXI8Rm9yZWdyb3VuZEFjdGl2aXR5Q291bnRlclR5cGU+IEZvcmVncm91bmRBY3Rp
dml0eUNvdW50ZXI7Ci0gICAgdHlwZWRlZiBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyOjpUb2tl
biBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbjsKLSAgICBlbnVtIEJhY2tncm91bmRBY3Rpdml0eUNv
dW50ZXJUeXBlIHsgfTsKLSAgICB0eXBlZGVmIFJlZkNvdW50ZXI8QmFja2dyb3VuZEFjdGl2aXR5
Q291bnRlclR5cGU+IEJhY2tncm91bmRBY3Rpdml0eUNvdW50ZXI7Ci0gICAgdHlwZWRlZiBCYWNr
Z3JvdW5kQWN0aXZpdHlDb3VudGVyOjpUb2tlbiBCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbjsKLQog
ICAgIFByb2Nlc3NUaHJvdHRsZXIoUHJvY2Vzc1Rocm90dGxlckNsaWVudCYsIGJvb2wgc2hvdWxk
VGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbik7Ci0KLSAgICBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
biBmb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OwotICAgIEJhY2tncm91bmRBY3Rpdml0
eVRva2VuIGJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3Q7CisgICAgflByb2Nlc3NUaHJv
dHRsZXIoKTsKKworICAgIGVudW0gY2xhc3MgQWN0aXZpdHlUeXBlIHsgQmFja2dyb3VuZCwgRm9y
ZWdyb3VuZCB9OworICAgIHRlbXBsYXRlPEFjdGl2aXR5VHlwZSB0eXBlPiBjbGFzcyBBY3Rpdml0
eSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAg
ICAgQWN0aXZpdHkoUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyLCBBU0NJSUxpdGVyYWwgbmFt
ZSkKKyAgICAgICAgICAgIDogbV90aHJvdHRsZXIoJnRocm90dGxlcikKKyAgICAgICAgICAgICwg
bV9uYW1lKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRocm90dGxlci5hZGRBY3Rpdml0
eSgqdGhpcyk7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQ
SUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXIgU3RhcnRpbmcgJXtwdWJsaWN9cyBhY3Rpdml0
eSAlcCAvICcle3B1YmxpY31zJyIsIG1fdGhyb3R0bGVyLT5tX3Byb2Nlc3NJZGVudGlmaWVyLCBt
X3Rocm90dGxlciwgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3Vu
ZCIgOiAiYmFja2dyb3VuZCIsIHRoaXMsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICB9
CisKKyAgICAgICAgfkFjdGl2aXR5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzVmFs
aWQoKSkKKyAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIH0KKworICAgICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1fdGhyb3R0bGVyOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgUHJvY2Vzc1Rocm90dGxlcjsKKworICAgICAg
ICB2b2lkIGludmFsaWRhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIW1fdGhy
b3R0bGVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiW1BJ
RDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlciBFbmRpbmcgJXtwdWJsaWN9cyBhY3Rpdml0eSAl
cCAvICcle3B1YmxpY31zJyIsIG1fdGhyb3R0bGVyLT5tX3Byb2Nlc3NJZGVudGlmaWVyLCBtX3Ro
cm90dGxlciwgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3VuZCIg
OiAiYmFja2dyb3VuZCIsIHRoaXMsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAg
bV90aHJvdHRsZXItPnJlbW92ZUFjdGl2aXR5KCp0aGlzKTsKKyAgICAgICAgICAgIG1fdGhyb3R0
bGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIFByb2Nlc3NUaHJvdHRsZXIqIG1f
dGhyb3R0bGVyIHsgbnVsbHB0ciB9OworICAgICAgICBBU0NJSUxpdGVyYWwgbV9uYW1lOworICAg
IH07CisKKyAgICB1c2luZyBGb3JlZ3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxBY3Rpdml0eVR5
cGU6OkZvcmVncm91bmQ+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JlZ3JvdW5kQWN0aXZpdHk+
IGZvcmVncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSk7CisKKyAgICB1c2luZyBCYWNr
Z3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxBY3Rpdml0eVR5cGU6OkJhY2tncm91bmQ+OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwgbmFtZSk7CiAgICAgCiAgICAgdm9pZCBkaWRDb25uZWN0VG9Qcm9jZXNzKFBy
b2Nlc3NJRCk7Ci0gICAgYm9vbCBzaG91bGRCZVJ1bm5hYmxlKCkgY29uc3QgeyByZXR1cm4gbV9m
b3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpIHx8IG1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUoKTsg
fQorICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuc2l6ZSgpIHx8IG1fYmFja2dyb3VuZEFjdGl2aXRpZXMuc2l6ZSgpOyB9CiAK
IHByaXZhdGU6CiAgICAgQXNzZXJ0aW9uU3RhdGUgZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpOwpA
QCAtNzEsNiArMTA0LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVu
ZElQQyhJc1N1c3BlbnNpb25JbW1pbmVudCk7CiAgICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3Bl
bmQoKTsKIAorICAgIHZvaWQgYWRkQWN0aXZpdHkoRm9yZWdyb3VuZEFjdGl2aXR5Jik7CisgICAg
dm9pZCBhZGRBY3Rpdml0eShCYWNrZ3JvdW5kQWN0aXZpdHkmKTsKKyAgICB2b2lkIHJlbW92ZUFj
dGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYpOworICAgIHZvaWQgcmVtb3ZlQWN0aXZpdHkoQmFj
a2dyb3VuZEFjdGl2aXR5Jik7CisgICAgdm9pZCBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOwor
CiAgICAgLy8gUHJvY2Vzc0Fzc2VydGlvbkNsaWVudAogICAgIHZvaWQgdWlBc3NlcnRpb25XaWxs
RXhwaXJlSW1taW5lbnRseSgpIG92ZXJyaWRlOwogCkBAIC04MCwyMiArMTE5LDIyIEBAIHByaXZh
dGU6CiAgICAgUHJvY2Vzc0lEIG1fcHJvY2Vzc0lkZW50aWZpZXIgeyAwIH07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOwogICAgIFJ1bkxvb3A6OlRp
bWVyPFByb2Nlc3NUaHJvdHRsZXI+IG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcjsKLSAg
ICBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyIG1fZm9yZWdyb3VuZENvdW50ZXI7Ci0gICAgQmFj
a2dyb3VuZEFjdGl2aXR5Q291bnRlciBtX2JhY2tncm91bmRDb3VudGVyOworICAgIEhhc2hTZXQ8
Rm9yZWdyb3VuZEFjdGl2aXR5Kj4gbV9mb3JlZ3JvdW5kQWN0aXZpdGllczsKKyAgICBIYXNoU2V0
PEJhY2tncm91bmRBY3Rpdml0eSo+IG1fYmFja2dyb3VuZEFjdGl2aXRpZXM7CiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRDsKICAgICBib29sIG1fc2hv
dWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbjsKIH07CiAKLWlubGluZSBQcm9jZXNzVGhyb3R0
bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBQcm9jZXNzVGhyb3R0bGVyOjpmb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbigpIGNvbnN0CitpbmxpbmUgYXV0byBQcm9jZXNzVGhyb3R0bGVyOjpmb3Jl
Z3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpIC0+IHN0ZDo6dW5pcXVlX3B0cjxGb3Jl
Z3JvdW5kQWN0aXZpdHk+CiB7Ci0gICAgcmV0dXJuIEZvcmVncm91bmRBY3Rpdml0eVRva2VuKG1f
Zm9yZWdyb3VuZENvdW50ZXIuY291bnQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9yZWdy
b3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CiB9CiAKLWlubGluZSBQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBQcm9jZXNzVGhyb3R0bGVyOjpiYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpIGNvbnN0CitpbmxpbmUgYXV0byBQcm9jZXNzVGhyb3R0bGVyOjpiYWNrZ3Jv
dW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpIC0+IHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3Jv
dW5kQWN0aXZpdHk+CiB7Ci0gICAgcmV0dXJuIEJhY2tncm91bmRBY3Rpdml0eVRva2VuKG1fYmFj
a2dyb3VuZENvdW50ZXIuY291bnQoKSk7Ci19Ci0gICAgCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
QmFja2dyb3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCiAjZW5kaWYgLy8gUHJvY2Vzc1Rocm90dGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggN2VjNWE2YjFiMGRlNDdm
YTY3YzI3YTM4NzFhMDYzNzlhODI1MjdhMS4uOGIyYjhiMmZjOThmMGY3MzFhN2I0ZTg2OTMwZTMz
Y2U0Y2QyNGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcApAQCAtNjIsOSArNjIsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJv
dmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Bybwog
ICAgICwgbV9pc1NlcnZlclJlZGlyZWN0KGlzU2VydmVyUmVkaXJlY3QpCiAgICAgLCBtX3JlcXVl
c3QocmVxdWVzdCkKICAgICAsIG1fcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudChwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50KQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBt
X3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eVRva2VuKCkpCi0jZW5kaWYKKyAgICAsIG1fcHJvdmlzaW9uYWxMb2FkQWN0aXZpdHkobV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlByb3Zpc2lvbmFsIExvYWQiX3Mp
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlz
aW9uYWxQYWdlUHJveHk6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1
NjQgIiBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2Uu
aWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDYzNGZiNzVlODczOGUxNGU0MjdkOTc4YmM4
ZGVmZjY0NTEyZjFlZjQuLjYyN2U2OTFmNjI0ZDFlYjc4MzhhODhjNjVlOWI2YzcxY2JkZDI2MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApA
QCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYWNjZXNz
aWJpbGl0eVRva2VuOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBQcm9j
ZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N1c3BlbnNpb25Ub2tlbjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5
PiBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2aXR5OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDcyOGQ4YjBlNWNlNzI1
MTgxM2IxOTc2Y2Q0MjA0ZGE2MTUzOTM1OGQuLmI3YjA0Njk1OTI1ZGM2OGZkYzY1NjM1OGU1OWYx
NDIxNWU4NWNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpB
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIHByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpBZGRUcmFuc2FjdGlvbkNhbGxi
YWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3Mo
KS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmciX3MpKSkpOwogfQogCiB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmhpZGVDb250ZW50VW50aWxQZW5kaW5n
VXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCmluZGV4IDdmODljZWVmYzNmMjZkNmRkYTYwNDdmZmVkNDE3YWNlYmQwNDQ5MDMuLmVhYmVm
OWE3OGQwMTQ3NmM4NGJlMzRlN2ExMWU0NDE2YjEyNTBhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFN1
c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwg
UmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50
ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShzaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiAgICAgLCBtX3N1c3BlbnNpb25UaW1l
b3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNw
ZW5zaW9uVGltZWRPdXQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAsIG1fc3VzcGVu
c2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSkKKyAgICAsIG1fc3VzcGVuc2lvbkFjdGl2aXR5KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJQYWdlIHN1c3BlbnNpb24gZm9yIGJhY2svZm9yd2FyZCBjYWNoZSJf
cykpCiAjZW5kaWYKIHsKICAgICBhbGxTdXNwZW5kZWRQYWdlcygpLmFkZCh0aGlzKTsKQEAgLTIx
OCw3ICsyMTgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RU
b1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRp
bWVvdXRUaW1lci5zdG9wKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fc3Vz
cGVuc2lvblRva2VuID0gbnVsbHB0cjsKKyAgICBtX3N1c3BlbnNpb25BY3Rpdml0eSA9IG51bGxw
dHI7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBlZTJj
NmEzNzUyNGYyYzkxYWRhZmVhYWJjZjc5M2FkZTZkNjFkOGQ3Li43MDJlOTYyOTY4ZTYxYTZlODYx
NzFmOWFhNDBhZmNkZGJkMGE4ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+IG1fcmVhZHlUb1Vuc3VzcGVuZEhh
bmRsZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbnNp
b25UaW1lb3V0VGltZXI7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N1c3BlbnNpb25Ub2tlbjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX3N1
c3BlbnNpb25BY3Rpdml0eTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKaW5kZXggNTlmYmVkNWYwY2Nl
YmYxZTlhZTUyOTliYWM4YTZkYWNlNWFiMzU2ZS4uYWU1NmU1MzNhNjBiMjdmNzljYzFhZTNlNzY2
YWM4MTc0OWE3ZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpCiB7CiAgICAgaWYgKG1fYmFj
a0ZvcndhcmRJdGVtSUQgJiYgIW1fc3VzcGVuZGVkUGFnZSkgewogICAgICAgICBhdXRvJiBwcm9j
ZXNzID0gdGhpcy0+cHJvY2VzcygpOwotICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVt
SUQpLCBbdG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCldIHsgfSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFthY3Rpdml0
eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJDbGVhcmluZyBiYWNr
L2ZvcndhcmQgY2FjaGUgZW50cnkiX3MpXSB7IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMWIzZTE1
NWFkOWQ0YzJhMmExMmZkZWM2NjQ2NWUwYzNkZTMyZWU2Ni4uZGMyY2Q2OTYzNTEyODE0Y2JlZGIx
MDhmYmI1ZDQzMmNkMjZkYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpXShWZWN0b3I8U3RyaW5nPiYmIGhvc3RuYW1lcykgbXV0YWJsZSB7CisgICAgbmV0
d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzIl9zKV0oVmVjdG9yPFN0cmluZz4mJiBob3N0bmFtZXMpIG11dGFi
bGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoaG9zdG5hbWVzKSk7CiAgICAg
fSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29r
aWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2Vu
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0o
KSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSksIFtj
YWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBu
ZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQ29va2llIl9zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRv
JiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7
Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0g
bmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBt
dXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25J
RCwgdGltZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
YWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UiX3Mp
XSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBA
IC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQs
IGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgW2NhbGxi
YWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1l
bnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFj
dGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewogICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxD
b29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdv
cmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBu
ZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJs
ZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9u
ID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
QWxsQ29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVzKSk7CiAgICAgfSk7CiB9CkBAIC0x
NjAsNyArMTYwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGEKIHZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJM
JiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwg
dXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tl
biA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCld
KFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVz
KHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzIl9zKV0oVmVjdG9yPENv
b2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZN
b3ZlKGNvb2tpZXMpKTsKICAgICB9KTsKIH0KQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25J
RCwgSFRUUENvb2tpZQogI2VuZGlmCiAKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ki
X3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9
CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWUKIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgp
LT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHRv
a2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhhMDZkN2YyMzkwYTEzNmJjZWRjNzAx
OTg4MTExMTg2MjBiYjc4MmYuLjE3ZTRhNjc4OWE3OTY5MmU2NjhkZTFjYWExOTc4NzA2MGY1MGU1
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTA1NSw3
ICsxMDU1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBob2xkIGEgcHJvY2VzcyBhc3Nl
cnRpb24gYWZ0ZXIgZ2V0dGluZyBjbG9zZWQuCi0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0
cjsKKyAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2lzQXVkaWJsZUFj
dGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBudWxscHRyOwor
ICAgIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHkgPSBudWxscHRyOwog
I2VuZGlmCiAKICAgICBzdG9wQWxsVVJMU2NoZW1lVGFza3MoKTsKQEAgLTE5MjksMjMgKzE5MzIs
NDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAgICAgICBt
X3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkudXNl
ck9ic2VydmFibGVQYWdlQ291bnQoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
Ym9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5
U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpOwotICAgIGJvb2wgaXNBdWRpYmxlID0gbV9hY3Rpdml0
eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSk7Ci0gICAgaWYgKCFpc1Zp
ZXdWaXNpYmxlKCkgJiYgIW1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ICYmICFpc0Nh
cHR1cmluZ01lZGlhICYmICFpc0F1ZGlibGUpIHsKLSAgICAgICAgaWYgKG1fYWN0aXZpdHlUb2tl
bikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lv
biwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIG5vIGxvbmdlciB2aXNpYmxlIik7Ci0g
ICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmICghbV9hY3Rpdml0eVRva2VuKSB7Ci0gICAgICAgIGlmIChpc1ZpZXdWaXNpYmxlKCkp
CisgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgeworICAgICAgICBpZiAoIW1faXNWaXNpYmxlQWN0
aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxl
U3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IHRoZSB2aWV3IGlzIHZpc2libGUiKTsKLSAgICAgICAgZWxzZSBpZiAoaXNBdWRpYmxlKQorICAg
ICAgICAgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHZpc2libGUiX3MpOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChtX2lzVmlzaWJsZUFjdGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3Mg
aXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBu
byBsb25nZXIgdmlzaWJsZSIpOworICAgICAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBib29sIGlzQXVkaWJsZSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOworICAgIGlmIChpc0F1ZGlibGUpIHsKKyAgICAg
ICAgaWYgKCFtX2lzQXVkaWJsZUFjdGl2aXR5IHx8ICFtX2lzQXVkaWJsZUFjdGl2aXR5LT5pc1Zh
bGlkKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3Bl
bnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgcGxheWluZyBhdWRpbyIpOwotICAgICAgICBl
bHNlIGlmIChpc0NhcHR1cmluZ01lZGlhKQorICAgICAgICAgICAgbV9pc0F1ZGlibGVBY3Rpdml0
eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHBs
YXlpbmcgYXVkaW8iX3MpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2lzQXVkaWJsZUFj
dGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNp
b24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iKTsK
KyAgICAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgfQorCisgICAgYm9v
bCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3Rh
dGU6OklzQ2FwdHVyaW5nTWVkaWEpOworICAgIGlmIChpc0NhcHR1cmluZ01lZGlhKSB7CisgICAg
ICAgIGlmICghbV9pc0NhcHR1cmluZ0FjdGl2aXR5IHx8ICFtX2lzQ2FwdHVyaW5nQWN0aXZpdHkt
PmlzVmFsaWQoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBm
b3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1
c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9y
ZWdyb3VuZCBhc3NlcnRpb24gZXZlbiB0aG91Z2ggdGhlIHZpZXcgaXMgbm90IHZpc2libGUgYmVj
YXVzZSBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBpcyB0cnVlIik7Ci0gICAgICAg
IG1fYWN0aXZpdHlUb2tlbiA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2
aXR5VG9rZW4oKTsKKyAgICAgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIGNhcHR1cmluZyBtZWRp
YSJfcyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1faXNDYXB0dXJpbmdBY3Rpdml0eSkg
eworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBubyBsb25nZXIgYWN0aXZlIik7CisgICAg
ICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7CisgICAgICAgIGlmICghbV9hbHdheXNS
dW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSB8fCAhbV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHlBY3Rpdml0eS0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQ
cm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbV9hbHdheXNS
dW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgdHJ1ZSIpOworICAgICAgICAgICAgbV9hbHdheXNS
dW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
Zm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGFsd2F5cyBydW5zIGF0IGZvcmVncm91bmQgcHJpb3Jp
dHkiX3MpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eUFjdGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFz
aW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eSBpcyBubyBsb25nZXIgdHJ1ZSIpOworICAgICAgICBtX2Fsd2F5c1J1bnNBdEZv
cmVncm91bmRQcmlvcml0eUFjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKIH0KQEAg
LTE5ODUsNyArMjAxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAvLyBIYWlsIE1hcnkgY2hlY2suIFNob3VsZCBub3QgYmUgcG9zc2li
bGUgKGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSBzaG91bGQgZm9yY2UgYXN5bmMgaWYgbm90
IHZpc2libGUsCiAgICAgLy8gYW5kIGlmIHZpc2libGUgd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4g
YXNzZXJ0aW9uKSAtIGJ1dCB3ZSBzaG91bGQgbmV2ZXIgYmxvY2sgb24gYSBzdXNwZW5kZWQgcHJv
Y2Vzcy4KLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikgeworICAgIGlmICghbV9pc1Zpc2libGVB
Y3Rpdml0eSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIwMDgsNyArMjAzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzIl9zKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMo
Zm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTIwMzMsNyArMjA1OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dmFsaWRhdGVD
b21tYW5kIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxp
ZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
QEAgLTIxMzEsNyArMjE1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kIl9zKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRo
Q2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogICAgIApAQCAtMjE1NSw3ICsyMTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3Rh
cnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RG
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsK
IH0KIApAQCAtMzcxMyw3ICszNzM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRj
aGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyks
IHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIApAQCAtMzczOCwxNCArMzc2NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlv
biwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFtZSgpLT5mcmFtZUlEKCkgIT0gZnJh
bWVJRCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lIl9zKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlE
LCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKQEAgLTM3NTYsNyArMzc4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQ
YWdlSUQpOwogfQogCkBAIC0zNzY3LDcgKzM3OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAo
YwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JG
cmFtZSJfcykpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxs
YmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJj
ZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CkBAIC0zNzc5LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0
cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nIl9zKSk7
CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmlu
ZyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQpAQCAtMzgwMyw3ICszODI5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlIl9zKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5n
Q2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7
CiB9CkBAIC0zODE1LDcgKzM4NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRw
dXQiX3MpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zODI4LDcg
KzM4NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5j
dGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0JhcwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEiX3MpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgpAQCAtMzg0MCw3ICszODY2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nIl9zKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmco
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzg1MSw3ICszODc3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSJfcykpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zODYyLDcgKzM4ODgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1l
SUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzg3Myw3ICszODk5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lIl9zKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCkBAIC0zODg0LDcgKzM5MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaWQgKEFQSQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIApAQCAtMzkxNyw3ICszOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVw
YWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogICAgICAgICB9KTsKICAgICB9
OwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9y
Y2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50Il9zKSk7CiAgICAgbV9k
cmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTcyMDksNyArNzIzNSwxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFz
b24gdGVybWluYQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV93YWl0aW5nRm9yUG9z
dExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQgPSBmYWxzZTsKICAg
ICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gbnVsbHB0cjsKLSAgICBtX2Fj
dGl2aXR5VG9rZW4gPSBudWxscHRyOworCisgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgbV9pc0NhcHR1cmlu
Z0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eUFjdGl2aXR5ID0gbnVsbHB0cjsKICNlbmRpZgogCiAgICAgbV9wYWdlSXNVc2VyT2JzZXJ2YWJs
ZUNvdW50ID0gbnVsbHB0cjsKQEAgLTc4MjgsNyArNzg1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0
UmVjdD4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpkcmF3VG9QREYiX3MpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERihmcmFtZUlELCByZWN0LCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04MTY4LDcgKzgxOTgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRp
bmdSYW5nZSwgQ2FsbGJhYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dE1hcmtlZFJhbmdlQXN5bmMiX3MpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQog
CkBAIC04MTc5LDcgKzgyMDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5n
ZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyJfcykpOwog
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5
bmMoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODE5MCw3ICs4MjIwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVBy
b3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMiX3MpKTsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04MjAxLDcgKzgyMzEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMiX3MpKTsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5n
ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODI0NSw3ICs4Mjc1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0
bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVBy
b3h5Ojp0YWtlU25hcHNob3QiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04NTIxLDcgKzg1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihGdW5jdGlv
bjx2b2lkKCk+JgogCiAgICAgYXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0
ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8p
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9LCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIH0sIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omluc3RhbGxBY3Rpdml0
eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIiX3MpKTsKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KQEAgLTg2NjUs
NyArODY5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKLSAgICAgICAgYXV0byBu
ZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsK
KyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFs
Q2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0
TG9hZERlY2lzaW9uRm9ySWNvbiJfcykpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwogCiAgICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSWRlbnRpZmllciks
IG1fd2ViUGFnZUlEKTsKICAgICB9KTsKQEAgLTg4ODIsNyArODkxMiw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVu
dCwgRnVuY3Rpb248CiAgICAgfQogCiAgICAgYXV0byBhdHRhY2htZW50SWRlbnRpZmllciA9IGF0
dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eSgiV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50Il9zKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVu
dGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+Zmls
ZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChhdHRh
Y2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50KSk7CiB9CkBAIC04ODk4LDcgKzg5
MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1l
bnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2ht
ZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVm
ZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtOTA1Nyw3ICs5MDg3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248
dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0Il9zKSk7CiAgICAgbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBkNDdiN2Y0ZjI3ZGQzNDBhOTNlYTM2YzU4ZTZjMTZmNzg4ZGI4MjU1Li5kNGM4ZThiNmQ4YTVk
YTFiN2VkOGQyMjdjOThkMGUwY2EyOWI3OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjI5MSw3ICsyMjkxLDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNr
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5IHsg
ZmFsc2UgfTsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBt
X2FjdGl2aXR5VG9rZW47CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZv
cmVncm91bmRBY3Rpdml0eT4gbV9pc1Zpc2libGVBY3Rpdml0eTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX2lzQXVkaWJsZUFjdGl2
aXR5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0
aXZpdHk+IG1faXNDYXB0dXJpbmdBY3Rpdml0eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQ
cmlvcml0eUFjdGl2aXR5OwogI2VuZGlmCiAgICAgYm9vbCBtX2luaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiYmQ0OGMzN2M3
ZmQyYzFmMGQ3MDc3YmYxMTg3M2JjODA0NmJhNDY3Li5jYTMwYjY3YjkwNWI4MWFiYzhhOWMwMmY1
NjQ1MDllZTQxNTFhMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC05MTcsMTIgKzkxNywxMiBAQCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUAogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nl
c3NQcm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQpCiB7Ci0gICAgYXV0byBpbml0aWFsaXph
dGlvbkFjdGl2aXR5VG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCk7Ci0gICAgYXV0byBzY29wZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFsmcHJvY2Vzcywg
aW5pdGlhbGl6YXRpb25BY3Rpdml0eVRva2VuXSB7CisgICAgYXV0byBpbml0aWFsaXphdGlvbkFj
dGl2aXR5ID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nl
c3MgaW5pdGlhbGl6YXRpb24iX3MpOworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhp
dChbJnByb2Nlc3MsIGluaXRpYWxpemF0aW9uQWN0aXZpdHkgPSBXVEZNb3ZlKGluaXRpYWxpemF0
aW9uQWN0aXZpdHkpXSgpIG11dGFibGUgewogICAgICAgICAvLyBSb3VuZC10cmlwIHRvIHRoZSBX
ZWIgQ29udGVudCBwcm9jZXNzIGJlZm9yZSByZWxlYXNpbmcgdGhlCi0gICAgICAgIC8vIGluaXRp
YWxpemF0aW9uIGFjdGl2aXR5IHRva2VuLCBzbyB0aGF0IHdlJ3JlIHN1cmUgdGhhdCBhbGwKKyAg
ICAgICAgLy8gaW5pdGlhbGl6YXRpb24gYWN0aXZpdHksIHNvIHRoYXQgd2UncmUgc3VyZSB0aGF0
IGFsbAogICAgICAgICAvLyBtZXNzYWdlcyBzZW50IGZyb20gdGhpcyBmdW5jdGlvbiBoYXZlIGJl
ZW4gaGFuZGxlZC4KLSAgICAgICAgcHJvY2Vzcy5pc1Jlc3BvbnNpdmUoW2luaXRpYWxpemF0aW9u
QWN0aXZpdHlUb2tlbl0gKGJvb2wpIHsgfSk7CisgICAgICAgIHByb2Nlc3MuaXNSZXNwb25zaXZl
KFtpbml0aWFsaXphdGlvbkFjdGl2aXR5ID0gV1RGTW92ZShpbml0aWFsaXphdGlvbkFjdGl2aXR5
KV0gKGJvb2wpIHsgfSk7CiAgICAgfSk7CiAKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwpA
QCAtMjA0OSwyNCArMjA0OSwyNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpCiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFu
IHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFs
dWVzKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gc2Vydmlj
ZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJl
Z2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5z
Rm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiks
IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAg
ICAgICAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+
dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgdmlzaWJs
ZSB2aWV3KHMpIl9zKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2JhY2tncm91bmRU
b2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CisgICAgICAgICAgICBtX2Jh
Y2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1
ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMg
b25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0byog
c2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkp
IHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtl
clByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2Jh
Y2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRk
KFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2
aWV3KHMpIl9zKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tl
bnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CisgICAgICAgICAgICBtX2ZvcmVn
cm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKLSAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5z
Rm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOworICAgICAgICBtX2ZvcmVncm91bmRB
Y3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOworICAgICAgICBtX2Jh
Y2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAg
IH07CiAgICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgpA
QCAtMjA3NSwyMyArMjA3NSwyMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpCiAgICAgICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKTsKIAogICAgICAgICBpZiAobV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIu
dmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQ
cm9jZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJv
Y2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2Vu
KCk7CisgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nl
c3MpIHsKKyAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9j
ZXNzID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJOZXR3
b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICAgICAgICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9
IG51bGxwdHI7CisgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9j
ZXNzID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBp
ZiAobV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewotICAgICAgICAgICAg
aWYgKCFtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgICAgICAg
ICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgICAgICBpZiAoIW1f
YmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBt
X2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIGJh
Y2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Muc2Vu
ZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRy
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fZm9yZWdyb3VuZFRv
a2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAgICAgICBtX2JhY2tncm91bmRUb2tl
bkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKKyAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZp
dHlGb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2
aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgIH07CiAgICAgdXBkYXRlTmV0d29y
a1Byb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgpAQCAtMjEwMCwxMSArMjEwMCwxMSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9j
ZXNzUHJveHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZWQ7IHRha2UgbmV3IHRva2Vu
cyBmb3IgdGhlIG5ldyBuZXR3b3JrIHByb2Nlc3MuCi0gICAgaWYgKG1fYmFja2dyb3VuZFRva2Vu
Rm9yTmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1By
b2Nlc3MgPSBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCk7Ci0gICAgZWxzZSBpZiAobV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJv
Y2VzcykKLSAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG5ld05l
dHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKTsK
KyAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZWQ7IHRha2UgbmV3IGFjdGl2aXRpZXMg
Zm9yIHRoZSBuZXcgbmV0d29yayBwcm9jZXNzLgorICAgIGlmIChtX2JhY2tncm91bmRBY3Rpdml0
eUZvck5ldHdvcmtQcm9jZXNzKQorICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdv
cmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgZWxz
ZSBpZiAobV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9m
b3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJv
eHkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3Jv
dW5kIHZpZXcocykiX3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obmV3TmV0d29ya1Byb2Nl
c3NQcm94eSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CmluZGV4IDA0Y2NjOTZiOWNlYjU4OGM0NDgwZTRjZjRjYjc3NWNlNDczYjNlYzMuLjhkYTBiMTcy
NTlmNjRlMGM0M2IwM2E5MTIwN2Y5ZWNhNDJkMmY4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYwLDExICs3NjAsMTEgQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlciBtX2Zv
cmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50
ZXIgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7Ci0gICAgUHJvY2Vzc1Rocm90dGxlcjo6
Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vz
czsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNz
VGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0
d29ya1Byb2Nlc3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eT4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzczsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4+IG1fZm9y
ZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Ci0gICAgSGFzaE1hcDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFBy
b2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+IG1fZm9yZWdyb3VuZEFjdGl2aXRp
ZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5k
QWN0aXZpdHk+PiBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nl
czsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDBhZWE1YmE5NmVhMGIyNTRjZjQ4ODdiYTliZDc0MDJlNTBhNjBiNTku
LmVkNTRkNGFjYzhjZjk2M2ZlYzU4NjJjZGVhZWE4NDMyNjZiYmYyMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcyLDcgKzM3Miw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAKICAgICBtX3Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaW52YWxpZGF0ZSgpOwogICAgIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIuaW52
YWxpZGF0ZSgpOwotICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwor
ICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCiAgICAgZm9y
IChhdXRvJiBmcmFtZSA6IGNvcHlUb1ZlY3RvcihtX2ZyYW1lTWFwLnZhbHVlcygpKSkKICAgICAg
ICAgZnJhbWUtPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsKQEAgLTEwMTMsMTAgKzEwMTMsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9u
SUQoKSk7CiAKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKKyAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0Vf
TE9HX0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBXZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSB0aGUgV2ViIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAg
ICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8gcmVwbHkpIG11dGFibGUgeworICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRhKGRhdGFU
eXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0g
V1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTEwMzAsMTAgKzEwMzAs
MTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnMKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2Uo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNz
aW9uSUQoKSk7CiAKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKTsKKyAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhIl9zKTsKICAgICBSRUxF
QVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwog
Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRva2VuLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0
ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAjaWYgUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBA
IC0xMDQ3LDEwICsxMDQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpCiAgICAgQVNTRVJU
KGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9u
SUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byB0b2tlbiA9IHRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0byBhY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxv
d2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMgdGFraW5n
IGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMgZGVsZXRp
bmcgV2Vic2l0ZSBkYXRhIGZvciBzZXZlcmFsIG9yaWdpbnMiLCB0aGlzKTsKIAotICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmlnaW5zKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIGNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoZGF0YVR5cGVzLCBvcmlnaW5zKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAjaWYgUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBAIC0x
MjkyLDEyICsxMjkyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogewogICAgIGlmICghaXNIb2xkaW5n
TG9ja2VkRmlsZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJV
SVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
V2ViQ29udGVudCBwcm9jZXNzIGlzIG5vIGxvbmdlciBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOwot
ICAgICAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKKyAgICAgICAg
bV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaWYgKCFtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzKSB7CisgICAg
aWYgKCFtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyBob2xkaW5nIGxvY2tl
ZCBmaWxlcyIpOwotICAgICAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbV90aHJv
dHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAgICAgbV9hY3Rpdml0eUZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiSG9sZGlu
ZyBsb2NrZWQgZmlsZXMiX3MpOwogICAgIH0KIH0KIApAQCAtMTUxOCwyMSArMTUxOCwyMSBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1aW50
MzJfdCBoYXNoKQogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIAotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnRha2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6c3RhcnRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5w
dXQoKQogewotICAgIGlmIChtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbkZv
cm1Db250cm9scykKKyAgICBpZiAobV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9y
bUNvbnRyb2xzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2JhY2tncm91bmRBY3Rpdml0eVRv
a2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCk7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNv
bnRyb2xzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJGdWxsc2NyZWVuIGlucHV0
Il9zKTsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0
YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGl0IGlzIHByZXNlbnRpbmcgZnVs
bHNjcmVlbiBVSSBmb3IgZm9ybSBjb250cm9scy4iKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpCit2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kQmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklu
cHV0KCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVu
Rm9ybUNvbnRyb2xzKQorICAgIGlmICghbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
Rm9ybUNvbnRyb2xzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2JhY2tncm91bmRBY3Rpdml0
eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG51bGxwdHI7CisgICAgbV9iYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzID0gbnVsbHB0cjsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBiYWNr
Z3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGl0IGhhcyBkaXNtaXNzZWQgZnVsbHNjcmVlbiBVSSBm
b3IgZm9ybSBjb250cm9scy4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCAwNjMyYjY5NzU4ZGU5MThjZDY4ZjRhZGM3Y2ZjNjgzMDEyMWJhZjE5
Li4yYTI0NmU3ZWQyZTYxYzgxMWRhMmYxYjA3NDUyMWE0ZjRlNDdjN2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjQ2LDggKzI0Niw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHM7IH0KIAogI2lmIFBMQVRGT1JN
KFdBVENIT1MpCi0gICAgdm9pZCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2Ny
ZWVuSW5wdXQoKTsKLSAgICB2b2lkIHJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1
bGxzY3JlZW5JbnB1dCgpOworICAgIHZvaWQgc3RhcnRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxs
c2NyZWVuSW5wdXQoKTsKKyAgICB2b2lkIGVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3Jl
ZW5JbnB1dCgpOwogI2VuZGlmCiAKICAgICBib29sIGlzUHJld2FybWVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1ByZXdhcm1lZDsgfQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHByaXZhdGU6CiAKICAgICBp
bnQgbV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsKICAgICBQcm9j
ZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4gbV9hY3Rpdml0
eUZvckhvbGRpbmdMb2NrZWRGaWxlczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZv
cmVncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW47CiAgICAgQmFja2dyb3Vu
ZFdlYlByb2Nlc3NUb2tlbiBtX2JhY2tncm91bmRUb2tlbjsKQEAgLTUxMiw3ICs1MTIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9oYXNBdWRpYmxlV2ViUGFnZSB7IGZhbHNlIH07CiAKICNpZiBQ
TEFURk9STShXQVRDSE9TKQotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0
eVRva2VuIG1fYmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbj4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDM4ZmFlMTYx
MzVkOTY2ZTAzYjc4MDhhNzI0MzY3MWUzODVhZjM0MTQuLmYwMmQwYzIyOTc0ZjhiYTA4MmUwYjQz
MDkwNDcxNDNiZTFkYTMxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTkwNiw3ICs1OTA2LDcgQEAg
LSAodm9pZClwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1lbnQKICAg
ICAgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6X3By
ZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBj
b21wbGV0aW9uOm5pbF07CiAKICAgICAvLyBQcmVzZW50aW5nIGEgZnVsbHNjcmVlbiBpbnB1dCB2
aWV3IGNvbnRyb2xsZXIgZnVsbHkgb2JzY3VyZXMgdGhlIHdlYiB2aWV3LiBXaXRob3V0IHRha2lu
ZyB0aGlzIHRva2VuLCB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcyB3aWxsIGdldCBiYWNrZ3JvdW5k
ZWQuCi0gICAgX3BhZ2UtPnByb2Nlc3MoKS50YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JG
dWxsc2NyZWVuSW5wdXQoKTsKKyAgICBfcGFnZS0+cHJvY2VzcygpLnN0YXJ0QmFja2dyb3VuZEFj
dGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CiAKICAgICBbcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyLnRyYW5zaXRpb25Db29yZGluYXRvciBhbmltYXRlQWxvbmdzaWRlVHJhbnNpdGlvbjpuaWwg
Y29tcGxldGlvbjpbd2Vha1dlYlZpZXcgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KF93ZWJWaWV3
KSwgY29udHJvbGxlciA9IF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlcl0g
KGlkIDxVSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvb3JkaW5hdG9yQ29udGV4dD4pIHsKICAg
ICAgICAgYXV0byBzdHJvbmdXZWJWaWV3ID0gd2Vha1dlYlZpZXcuZ2V0KCk7CkBAIC01OTQyLDcg
KzU5NDIsNyBAQCAtICh2b2lkKWRpc21pc3NBbGxJbnB1dFZpZXdDb250cm9sbGVyczooQk9PTClh
bmltYXRlZAogICAgICAgICAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwogICAgIH0K
IAotICAgIF9wYWdlLT5wcm9jZXNzKCkucmVsZWFzZUJhY2tncm91bmRBY3Rpdml0eVRva2VuRm9y
RnVsbHNjcmVlbklucHV0KCk7CisgICAgX3BhZ2UtPnByb2Nlc3MoKS5lbmRCYWNrZ3JvdW5kQWN0
aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKIH0KIAogLSAodm9pZClmb2N1c2VkRm9ybUNvbnRy
b2xWaWV3RGlkU3VibWl0OihXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcgKil2aWV3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwNDJiYjVk
MzIxNGZlMDAwMTU1NmY5YTYxMzI5NTkzY2RmOThiMTRkLi45ODlmY2Q2YjBlYmQyNjg2NmJlYjNi
Nzc0YmUyYzFjY2ExNWRiMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb2N1
c2VkRQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
QEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlIl9zKSk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwg
KHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQog
CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldp
dGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW4KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyJfcykp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0YXJ0LCBjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogfQogICAgIApAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29y
cmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBw
bHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQg
cG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0
V2l0aEdyYW51bGFyaXR5QXRQb2ludCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTUwMCw3ICs1MDAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uIl9zKSk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJp
dHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtNTExLDcg
KzUxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0
eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBjYWxsYmFja0lEKSwgbV93ZWJQ
YWdlSUQpOwogfQogICAgIApAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wg
aXNJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRQb2ludCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC01MzMsNyArNTMzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihkaXJlY3Rp
b24sIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTU0NCw3ICs1NDQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQiX3MpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKICAgICAKIH0KQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29y
ZTo6SW50UAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSJfcykpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5k
Qm91bmRhcnkocG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogICAgIAogfQpAQCAtNTY4LDcgKzU2OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25Db250ZXh0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTZWxlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAg
LTYxMCw3ICs2MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzIl9zKSk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoVHdvVG91Y2hlcyhmcm9t
LCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlE
KTsKIH0KIApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZCgpCiAgICAgLy8gV2Ugbm9ybWFsbHkgZGVsYXkgcHJvY2VzcyBz
dXNwZW5zaW9uIHdoZW4gdGhlIGFwcCBpcyBiYWNrZ3JvdW5kZWQgdW50aWwgdGhlIGN1cnJlbnQg
cGFnZSBsb2FkIGNvbXBsZXRlcy4gSG93ZXZlciwKICAgICAvLyB3ZSBkbyBub3Qgd2FudCB0byBk
byBzbyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkIGZvciBwb3dlciByZWFzb25zLgogICAgIGlm
IChpc1N1c3BlbmRlZFVuZGVyTG9jaykKLSAgICAgICAgTmF2aWdhdGlvblN0YXRlOjpmcm9tV2Vi
UGFnZSgqdGhpcykucmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5hdmlnYXRpb25TdGF0ZTo6
TmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQpOworICAgICAg
ICBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp0aGlzKS5yZWxlYXNlTmV0d29ya0FjdGl2
aXR5KE5hdmlnYXRpb25TdGF0ZTo6TmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6U2NyZWVu
TG9ja2VkKTsKICNlbmRpZgogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spLCBtX3dl
YlBhZ2VJRCk7CiB9CkBAIC03MTUsNyArNzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3IK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9y
R3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9m
ZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNl
dCwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpyZXF1
ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQo
b2Zmc2V0LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC03NTIsNyAr
NzUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90
IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0Il9zKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoYm9vbCBpc0ZvcndhcmQs
IFdURjo6RnVuY3Rpb248dm9pZChDYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5Ojpmb2N1c05leHRGb2N1c2VkRWxlbWVudCJfcykpOwogICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRGb2N1c2VkRWxlbWVudChpc0ZvcndhcmQsIGNh
bGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHVpbnQz
Ml90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJh
bWVJZGVudGlmaWVyIGZyYW1lCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpjb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERiJfcykpOwogICAgIHVzaW5nIE1lc3NhZ2Ug
PSBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY7
CiAgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2UoZnJhbWVJRCwgcHJpbnRJbmZvLCBjYWxs
YmFja0lEKSwgTWVzc2FnZTo6UmVwbHkocGFnZUNvdW50KSwgbV93ZWJQYWdlSUQsIFNlY29uZHM6
OmluZmluaXR5KCkpOwogICAgIHJldHVybiBwYWdlQ291bnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381979</attachid>
            <date>2019-10-25 16:42:11 -0700</date>
            <delta_ts>2019-10-28 08:17:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203438-20191025164210.patch</filename>
            <type>text/plain</type>
            <size>105497</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjMGJiZDU0NDVjMGI0YTlj
MTU4MzNhMjRiZTdiMTY4MmI1ZTU4YmYuLjMwZjgyMjdiN2VkMmE3MWM2MWQ0ZWNkZDFhNzhjMTQ1
M2JjZDkwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDE5LTEwLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gSW1wcm92ZSBw
cm9jZXNzIGFzc2VydGlvbi1yZWxhdGVkIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSBjYXVzZXMg
b2YgbGVha2VkIGFzc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcHJvdmUgcHJvY2VzcyBhc3NlcnRpb24tcmVsYXRlZCBsb2dnaW5nIHRv
IGhlbHAgaWRlbnRpZnkgY2F1c2VzIG9mIGxlYWtlZCBhc3NlcnRpb25zLiBQcmV2aW91c2x5LAor
ICAgICAgICB3aGVuZXZlciBvdXIgY29kZSBuZWVkZWQgdG8gcHJldmVudCBzdXNwZW5zaW9uIG9m
IGEgY2hpbGQgcHJvY2VzcyBkdWUgdG8gc29tZSBraW5kIG9mIGFjdGl2aXR5LCBpdAorICAgICAg
ICB3b3VsZCBzaW1wbHkgZ3JhYiBhICJ0b2tlbiIgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcycgUHJv
Y2Vzc1Rocm90dGxlci4gVGhpcywgaW4tdHVybiwgd291bGQgY2F1c2UKKyAgICAgICAgdGhlIFBy
b2Nlc3NUaHJvdHRsZXIgdG8gdGFrZSB0aGUgcmlnaHQga2luZCBvZiBQcm9jZXNzQXNzZXJ0aW9u
IG9yIHJlbGVhc2UgaXQgd2hlbiBub2JvZHkgaG9sZHMKKyAgICAgICAgYW55IHRva2VucyBhbnkg
bW9yZS4KKworICAgICAgICBXZSBmcmVxdWVudGx5IGhhdmUgaXNzdWVzIHdoZXJlIHRoZSBVSVBy
b2Nlc3Mga2VlcHMgaXRzIGFzc2VydGlvbnMgYXJvdW5kIGZvciB0b28gbG9uZyBhZnRlciBnZXR0
aW5nCisgICAgICAgIGJhY2tncm91bmRpbmcuIFRoaXMgY2F1c2VzIHRoZSBhc3NlcnRpb25zIHRv
IGdldCBpbnZhbGlkYXRlZCBhbmQgdGhlIFVJUHJvY2VzcyB3aWxsIHVzdWFsbHkgc3VzcGVuZAor
ICAgICAgICAoYWxiZWl0IHdpdGggYSBkZWxheSwgd2hpY2ggaXMgYmFkIGZvciBwb3dlcikuIFNv
bWV0aW1lcyB0aG91Z2gsIHdlIGdldCBraWxsZWQgYmVjYXVzZSBvdXIgaW52YWxpZGF0aW9uCisg
ICAgICAgIGhhbmRsZXIgZG9lcyBub3QgZ2V0IGEgY2hhbmNlIHRvIHJlbGVhc2UgdGhlIGFzc2Vy
dGlvbiBpbiB0aW1lLgorCisgICAgICAgIEZpbmRpbmcgb3V0IHdoeSB3ZSdyZSBrZWVwaW5nIGFy
b3VuZCBhc3NlcnRpb25zIGlzIGN1cnJlbnRseSB2ZXJ5IGRpZmZpY3VsdCBiZWNhdXNlIHdlIGNh
bm5vdCBlYXNpbHkKKyAgICAgICAgc2VlIGluIHRoZSBsb2dzIHdobyBpcyBzdGlsbCBob2xkaW5n
IFByb2Nlc3NUaHJvdHRsZXIgdG9rZW5zLiBUbyBtYWtlIHN1Y2ggZGVidWdnaW5nIGVhc2llciwg
Y2xpZW50cworICAgICAgICBub3cgbm90aWZ5IHRoZSBQcm9jZXNzVGhyb3R0bGVyIHdoZW4gdGhl
eSBzdGFydCBzb21lIGFjdGl2aXR5IGFuZCBwcm92aWRlIGEgdXNlci1yZWFkYWJsZSBkZXNjcmlw
dGlvbgorICAgICAgICBvZiB0aGUgYWN0aXZpdHkuIFRoZSBjbGllbnQgdGhlbiBnZXRzIGEgRm9y
ZWdyb3VuZEFjdGl2aXR5IG9yIEJhY2tncm91bmRBY3Rpdml0eSBvYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBzaW1wbHkgYSB0b2tlbi4gQXMgYSByZXN1bHQsIHdlIGFyZSBub3cgYWJsZSB0byBs
b2cgd2hlbiBhIGdpdmVuIGFjdGl2aXR5IHRoYXQgcHJldmVudHMgc3VzcGVuc2lvbgorICAgICAg
ICBiZWdpbnMgYW5kIGVuZHMsIHdpdGggYSB1c2VyLWZyaWVuZGx5IHN0cmluZy4gQWxzbywgd2hl
biB0aGUgYXNzZXJ0aW9uIGdldHMgaW52YWxpZGF0ZWQsIGl0IHdpbGwKKyAgICAgICAgaW52YWxp
ZGF0ZSBhbGwgdGhlc2UgcGVuZGluZyBhY3Rpdml0aWVzIGFuZCB3ZSdsbCBzZWUgaW4gdGhlIGxv
Z3MgdGhlIG5hbWUgb2YgdGhlIGFjdGl2aXRpZXMgdGhhdAorICAgICAgICB3ZXJlIHN0aWxsIGdv
aW5nIG9uIHVwb24gaW52YWxpZGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6c2VuZEludm9jYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlSXNMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Jlc3VtZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tNYXA6OnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFN5bmNBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
OjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
flByb2Nlc3NUaHJvdHRsZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjph
ZGRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFj
dGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFs
bEFjdGl2aXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3Rl
ZEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0
QXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1aUFz
c2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6fkFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZp
dHk6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpB
Y3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6
OnNob3VsZEJlUnVubmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpiYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQ
cm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFByb2Nlc3NSZXF1ZXN0VG9TdXNwZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGlj
YXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzaHV0RG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
SW5wdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1l
bnRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJv
bGxlcnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3
b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKToKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRoQXN5bmNSZXBseSgpIHRvIHNpbXBs
aWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCmluZGV4IDg0YjQ3MGM5NTI2
NGJkN2RkMjA4MGMyNzZkNjFmZTJjMDZmNTU5NTYuLjU0Y2RjMDMwYTJlOWMxYWNjYzVjNGVjMzlh
YjliMzM1ZGI0ZjA2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBSZW1vdGVPYmplY3RSZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1lc3Nh
Z2VTZW5kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25J
RCgpID0gMDsKIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVVu
dXNlZFJlcGx5QmxvY2sodWludDY0X3QgcmVwbHlJRCk7CiAKICAgICBXZWFrT2JqQ1B0cjxfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeT4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeTsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9w
ZW5kaW5nUmVwbGllczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9wZW5kaW5nUmVwbGllczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDMwZWM0ZTcwNjNiMzJj
ZGI5ZmZhNzdhNTU0NDc3MDkwYjQ0MDRkM2IuLmU0OGM5Mjg1Nzc4NWMzY2Q4NTA5YjFiMWMzZTI3
MTliMTliZWM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBSZW1vdGVP
YmplY3RSZWdpc3RyeTo6c2VuZEludm9jYXRpb24oY29uc3QgUmVtb3RlT2JqZWN0SW52b2NhdGlv
biYgaW52b2NhdGkKIAogICAgIGlmIChhdXRvKiByZXBseUluZm8gPSBpbnZvY2F0aW9uLnJlcGx5
SW5mbygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nUmVwbGllcy5jb250YWlucyhyZXBs
eUluZm8tPnJlcGx5SUQpKTsKLSAgICAgICAgbV9wZW5kaW5nUmVwbGllcy5hZGQocmVwbHlJbmZv
LT5yZXBseUlELCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgIG1fcGVu
ZGluZ1JlcGxpZXMuYWRkKHJlcGx5SW5mby0+cmVwbHlJRCwgYmFja2dyb3VuZEFjdGl2aXR5KCJS
ZW1vdGVPYmplY3RSZWdpc3RyeSBpbnZvY2F0aW9uIl9zKSk7CiAgICAgfQogCiAgICAgbWVzc2Fn
ZVNlbmRlcigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpJbnZva2VNZXRo
b2QoaW52b2NhdGlvbiksIG1lc3NhZ2VEZXN0aW5hdGlvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKaW5kZXggNDU1NWM2YjMxZDFlZTU0
YzU0MmQ2ZDIwMzM4OTNjMDFiZjA3MTY5Ny4uNWQ5YjkxYzg1MGYyNWEzZjlkMTk2ZDc4OGE4MTg1
OWY4N2RlODFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha09iakNQdHI8aWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2
aXR5OwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCAyNTY2M2FkOTQxYmE3NTcxNzA0YmUwMmJh
M2UzNzY4ODljMzYwYWE2Li42NTFiNzAxNGJlZjU5NjQyOWFjMTViYzc4M2U5MWQ4NDdmYjA5NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQpAQCAtMjY4LDggKzI2OCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRv
a2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdl
KCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBw
cmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKLSAgICAg
ICAgbV9hY3Rpdml0eVRva2VuID0gd2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7CisgICAg
ICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CiAgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CkBAIC0yNzksOSArMjc5LDkgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nh
cnkoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICBpZiAobV9hY3Rpdml0eSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5c3RlbSBw
cmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwotICAgICAgICBtX2FjdGl2aXR5VG9r
ZW4gPSBudWxscHRyOworICAgICAgICBtX2FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRmZGU3Yzk4NjgwMWQ4YzE4
NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uNjc1ZTNhMGM1YjYwMGFiMGJmZjRhMDQ4NzUxNTI0NjQ4
YjY1OTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RQYWlu
dCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIE5ldHdvcmtB
Y3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiB7IExvYWRDb21wbGV0ZWQsIFNjcmVlbkxvY2tlZCB9
OwotICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRv
a2VuUmVsZWFzZVJlYXNvbik7CisgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlSZWxlYXNl
UmVhc29uIHsgTG9hZENvbXBsZXRlZCwgU2NyZWVuTG9ja2VkIH07CisgICAgdm9pZCByZWxlYXNl
TmV0d29ya0FjdGl2aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24pOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN3YXBX
ZWJQcm9jZXNzZXMoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
dm9pZCByZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW5BZnRlckxvYWRDb21wbGV0aW9uKCkgeyBy
ZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVh
c29uOjpMb2FkQ29tcGxldGVkKTsgfQorICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFm
dGVyTG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHkoTmV0d29ya0FjdGl2
aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBsZXRlZCk7IH0KICNlbmRpZgogCiAgICAgV0tXZWJW
aWV3ICptX3dlYlZpZXc7CkBAIC0yNTgsOCArMjU4LDggQEAgcHJpdmF0ZToKICAgICB9IG1faGlz
dG9yeURlbGVnYXRlTWV0aG9kczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOwot
ICAgIFJ1bkxvb3A6OlRpbWVyPE5hdmlnYXRpb25TdGF0ZT4gbV9yZWxlYXNlQWN0aXZpdHlUaW1l
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5PiBtX25ldHdvcmtBY3Rpdml0eTsKKyAgICBSdW5Mb29wOjpUaW1lcjxOYXZpZ2F0aW9uU3Rh
dGU+IG1fcmVsZWFzZU5ldHdyb2tBY3Rpdml0eVRpbWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTRh
ZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVlNjhlMTNlNTJlMDFiMy4uOThjZWNmNmFkODhmMWI5YjEz
ZjJlNTRmODE5YTMyZGMzZDhjYjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvblN0YXRlKFdLV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcygpCiAgICAgLCBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMoKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtB
Y3Rpdml0eVRva2VuQWZ0ZXJMb2FkQ29tcGxldGlvbikKKyAgICAsIG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6
cmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFmdGVyTG9hZENvbXBsZXRpb24pCiAjZW5kaWYKIHsKICAg
ICBBU1NFUlQobV93ZWJWaWV3LT5fcGFnZSk7CkBAIC0xMjA5LDIxICsxMjA5LDIxIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5nKCkKIH0KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0
eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiByZWFzb24pCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3JrQWN0aXZpdHlSZWxl
YXNlUmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKKyAgICBpZiAo
IW1fbmV0d29ya0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKHJlYXNv
bikgewotICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpMb2FkQ29t
cGxldGVkOgorICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBs
ZXRlZDoKICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29y
a0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CisgICAgY2FzZSBOZXR3
b3JrQWN0aXZpdHlSZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3Vu
ZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxvY2tlZCIsIHRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsK
LSAgICBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyLnN0b3AoKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgbV9yZWxlYXNlTmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwog
fQogI2VuZGlmCiAKQEAgLTEyMzEsMjMgKzEyMzEsMjMgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OmRpZENoYW5nZUlzTG9hZGluZygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAobV93ZWJWaWV3LT5fcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmlzTG9hZGluZygpKSB7Ci0gICAg
ICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgbmV0d29yayBhY3Rpdml0eSB0b2tlbiBpZiBhIGxvYWQg
c3RhcnRzIGFmdGVyIHRoZSBzY3JlZW4gaGFzIGJlZW4gbG9ja2VkLgorICAgICAgICAvLyBXZSBk
byBub3Qgc3RhcnQgYSBuZXR3b3JrIGFjdGl2aXR5IGlmIGEgbG9hZCBzdGFydHMgYWZ0ZXIgdGhl
IHNjcmVlbiBoYXMgYmVlbiBsb2NrZWQuCiAgICAgICAgIGlmIChbVUlBcHAgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX3JlbGVhc2VB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1f
d2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAg
ICAgIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIuc3RvcCgpOworICAgICAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9h
Y3Rpdml0eVRva2VuKSB7CisgICAgICAgIGlmICghbV9uZXR3b3JrQWN0aXZpdHkpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRh
a2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFy
dGVkIiwgdGhpcyk7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3dlYlZpZXctPl9w
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2Vzcygp
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9hY3Rpdml0eVRva2VuKSB7CisgICAgfSBlbHNlIGlmIChtX25l
dHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBz
byB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tncm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25k
cyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAg
ICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJv
YmxlbS8yNzkxMDk2ND4uCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2Ut
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2
aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBz
b29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9y
ZWxlYXNlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoM19zKTsKKyAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RhcnRPbmVTaG90KDNfcyk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTEzNTAsOCArMTM1MCw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJv
Y2Vzc2VzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91
ciBiYWNrZ3JvdW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9u
ZS4KLSAgICBpZiAobV9hY3Rpdml0eVRva2VuKQotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKKyAgICBpZiAobV9uZXR3b3JrQWN0aXZpdHkpCisgICAgICAgIG1fbmV0d29ya0Fj
dGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCmlu
ZGV4IDIwY2Q1M2M5NDQzOGJkMWI3OTRjZDQyMzE0ZWIyZTZjYjQ1YzU5ZTMuLjQ5N2FiNzIyMDBj
ZDdkZGFmYjE2M2M2YzZkN2VhNjc2YjI3YzA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Qcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5Ojp0YWtlQmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKQorc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eT4gVUlSZW1vdGVPYmplY3RSZWdpc3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5
KEFTQ0lJTGl0ZXJhbCBuYW1lKQogewotICAgIHJldHVybiBtX3BhZ2UucHJvY2VzcygpLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgcmV0dXJuIG1fcGFnZS5wcm9j
ZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpOwogfQogCiBVSVJlbW90
ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oCmluZGV4IGM0MGI0NTM2NjNjOWZlNTllMDZhODU1YmVkNzYzYjhmM2RiZGRmM2YuLmQ2Mzg4
Mjc1NTQwNzUxYmIxZjA2MGJhOTdjOWU5N2U2MGFiYTY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1l
c3NhZ2VTZW5kZXIoKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25JRCgp
IGZpbmFsOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIHRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQppbmRleCA4MzQzNWY5NmExMDU0ODVhYWFlMmVjMjg3MzcxNTVkNzBmMDgwNDZkLi5mZTgx
OTRmNjQ3NDQ2M2FiNmU3ZmIxOGJhOWUxYmFlYWI1OTAzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpCiAg
ICAgLy8gVGhlIFdlYlByb2Nlc3Mgd2FzIGF3YWtlbmVkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu
IHRoZSBVSVByb2Nlc3MuIFRha2Ugb3V0IGFuIGFzc2VydGlvbiBmb3IgYQogICAgIC8vIGxpbWl0
ZWQgZHVyYXRpb24gdG8gYWxsb3cgd2hhdGV2ZXIgdGFzayBuZWVkcyB0byBiZSBhY2NvbXBsaXNo
ZWQgdGltZSB0byBjb21wbGV0ZS4KICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIFByb2Nlc3Mgd2FzIHVu
ZXhwZWN0ZWRseSByZXN1bWVkLCBzdGFydGluZyBiYWNrZ3JvdW5kIGFjdGl2aXR5IiwgdGhpcyk7
Ci0gICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRv
a2VuID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0geworICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBy
b2Nlc3Mgd2FzIHVuZXhwZWN0ZWRseSByZXN1bWVkIl9zKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5k
IGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwogICAgIG1fdW5l
eHBlY3RlZEFjdGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVT
aG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4
cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCmluZGV4IGIyNzc5MjBkOWU4MDA2MWQ2ZGRlNTJjNGM1YWRkOGI0NTJkZDU0MDYu
LmE5MzVjZmVkYjg0NTQwYWQ5NWQ4ZGVjYTA4MGI0YjAxMWU2MGYxZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC02OSwxNyArNjksMTcgQEAgcHJvdGVj
dGVkOgogICAgIHN0cnVjdCBUeXBlVGFnIHsgfTsKICAgICB0eXBlZGVmIGNvbnN0IFR5cGVUYWcq
IFR5cGU7CiAKLSAgICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAg
ICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5KQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fY2FsbGJhY2tJRChDYWxsYmFja0lEOjpnZW5lcmF0ZUlE
KCkpCi0gICAgICAgICwgbV9hY3Rpdml0eVRva2VuKGFjdGl2aXR5VG9rZW4pCisgICAgICAgICwg
bV9hY3Rpdml0eShXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBt
X2FjdGl2aXR5OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KQEAgLTg3LDkgKzg3LDkg
QEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rp
b247CiAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVu
Y3Rpb24mJiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5ID0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
YWN0aXZpdHkpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdlbmVyaWND
YWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgICAgICA6IENh
bGxiYWNrQmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCisgICAgR2VuZXJpY0NhbGxiYWNrKENh
bGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eT4mJiBhY3Rpdml0eSkKKyAgICAgICAgOiBDYWxsYmFja0Jh
c2UodHlwZSgpLCBXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1v
dmUoY2FsbGJhY2spKQogICAgIHsKICAgICB9CkBAIC0xODksOSArMTg5LDkgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxiYWNrSUQgcHV0
KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQorICAgIENhbGxiYWNrSUQg
cHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIFdURk1vdmUoYWN0aXZpdHkpKTsK
ICAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhZjVjNTUyOGIyN2VmMDRkMDM5MjAwNzE3N2VlYTg0ZmUyODZlMTQxLi42MGUy
Y2IyNDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8VwogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25J
RF0gKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgYWN0aXZpdHkgPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBzZXNzaW9uSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOwogICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25JRF0gKCkgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCBhY3Rp
dml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBX
ZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11
dGFibGUgeworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
ZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBA
IC0zMDIsOSArMzAyLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQogICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaW52YWxpZGF0
ZSgpOwogI2VuZGlmCiAKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0
cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKICAgICAK
LSAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOworICAgIG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgPSAwOwog
CiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xMDkzLDEyICsx
MDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIHsKICAgICBpZiAoIWlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9j
ZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdv
cmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAg
bV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CisgICAgICAgIG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcykgeworICAgIGlmICghbV9h
Y3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcykgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsK
LSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2Vk
RmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zKTsKICAgICB9CiB9CiAKQEAgLTExMDcsMTEgKzExMDcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcygpCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIDApOwogICAgIAogICAgICsrbV9zeW5jQWxsQ29v
a2llc0NvdW50ZXI7Ci0gICAgaWYgKG1fc3luY0FsbENvb2tpZXNUb2tlbikKKyAgICBpZiAobV9z
eW5jQWxsQ29va2llc0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IHN5bmNpbmcgY29va2llcyIsIHRoaXMpOwotICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9zeW5jQWxsQ29va2ll
c0FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeW5jaW5nIGNvb2tp
ZXMiX3MpOwogfQogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29v
a2llcygpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFN5bmNBbGxDb29raWVzKCkKICAgICAtLW1fc3luY0FsbENvb2tpZXNDb3VudGVyOwogICAgIGlm
ICghbV9zeW5jQWxsQ29va2llc0NvdW50ZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRvbmUgc3lu
Y2luZyBjb29raWVzIiwgdGhpcyk7Ci0gICAgICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IG51
bGxwdHI7CisgICAgICAgIG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IGUxMGYwZTAyYjdjMzdiNzc1MDFiMTUxNjJkZWYxZDY4YTdm
ZmMyYzkuLjQ3MjYyZWJmZmI0Njc0ZWI1YzcwMDM2ODkzZjdiMDgwM2I0YWMyNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yNzcsOCArMjc3LDggQEAgcHJpdmF0ZToKICAgICBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogI2VuZGlmCiAgICAg
UHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fc3luY0FsbENvb2tpZXNU
b2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eTsKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7
IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApp
bmRleCA3YzQ1ZjIwMWRmNzU0NTQ0MzRmY2U4ZWRiZjVmYmM4M2I4MjhlNTY5Li4wYzNiM2EyOTJm
ZjI5OTIxOTZlMGU3ZDBmMzAzNzFmMmE3OWNiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtNDIsMTcgKzQyLDU0IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKQogUHJvY2Vzc1Rocm90dGxl
cjo6UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNzLCBib29s
IHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICAsIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZQcm9jZXNzVGhyb3R0bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmly
ZWQpCi0gICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsgfSkKLSAgICAsIG1fYmFja2dyb3VuZENvdW50ZXIo
W3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOyB9KQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKHNob3VsZFRha2VVSUJhY2tn
cm91bmRBc3NlcnRpb24pCiB7CiB9CisKK1Byb2Nlc3NUaHJvdHRsZXI6On5Qcm9jZXNzVGhyb3R0
bGVyKCkKK3sKKyAgICBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7
CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVB
c3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2
aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOwor
fQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEZvcmVncm91bmRBY3Rp
dml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFj
dGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkp
Cit7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFjdGl2aXR5KTsKKyAgICB1
cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6Omlu
dmFsaWRhdGVBbGxBY3Rpdml0aWVzKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgQkVHSU4iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzKTsKKyAgICB3aGlsZSAo
IW1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICB3aGlsZSAoIW1fYmFja2dy
b3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fYmFja2dyb3VuZEFjdGl2aXRp
ZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgRU5EIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7Cit9CiAgICAgCiBBc3Nl
cnRpb25TdGF0ZSBQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKCkKIHsK
LSAgICBpZiAobV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlmICghbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6
Rm9yZWdyb3VuZDsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlm
ICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZDsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3RhdGU6OlN1c3Bl
bmRlZDsKIH0KQEAgLTY4LDcgKzEwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNz
ZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUpCiAgICAgaWYgKG1fYXNzZXJ0aW9u
LT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNl
dEFzc2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUg
KGZvcmVncm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRBY3Rpdml0aWVzOiAlbHUpIiwg
bV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcywgbmV3U3RhdGUsIG1fZm9yZWdyb3VuZENvdW50ZXIu
dmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNldEFz
c2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZv
cmVncm91bmRBY3Rpdml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG1fcHJv
Y2Vzc0lkZW50aWZpZXIsIHRoaXMsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNp
emUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5z
ZXRTdGF0ZShuZXdTdGF0ZSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5l
d1N0YXRlKTsKIH0KQEAgLTE2Myw2ICsyMDAsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnVp
QXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dWlBc3NlcnRp
b25XaWxsRXhwaXJlSW1taW5lbnRseSgpIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7CiAg
ICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7Cisg
ICAgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1l
b3V0VGltZXIuc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmgKaW5kZXggOTc2MjI4YjQ5N2EwOGI1NDQ5OWFkMzY4OWJkNGQ0YTE0YjQwOWEyNS4u
ZWE3M2MwZmE4MjRjOTRiMWI5ZTlmNzgwNWM1MzVlNDRlMGI4NWM3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRl
ZiBQcm9jZXNzVGhyb3R0bGVyX2gKICNkZWZpbmUgUHJvY2Vzc1Rocm90dGxlcl9oCiAKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgotCiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ3LDIwICs0Nyw1MiBAQCBjbGFzcyBQcm9jZXNzVGhyb3R0
bGVyQ2xpZW50OwogCiBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFByb2Nlc3NUaHJvdHRsZXI+LCBwcml2YXRlIFByb2Nlc3NBc3NlcnRpb246OkNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgZW51bSBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci0g
ICAgdHlwZWRlZiBSZWZDb3VudGVyPEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXJUeXBlPiBGb3Jl
Z3JvdW5kQWN0aXZpdHlDb3VudGVyOwotICAgIHR5cGVkZWYgRm9yZWdyb3VuZEFjdGl2aXR5Q291
bnRlcjo6VG9rZW4gRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW47Ci0gICAgZW51bSBCYWNrZ3JvdW5k
QWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci0gICAgdHlwZWRlZiBSZWZDb3VudGVyPEJhY2tncm91
bmRBY3Rpdml0eUNvdW50ZXJUeXBlPiBCYWNrZ3JvdW5kQWN0aXZpdHlDb3VudGVyOwotICAgIHR5
cGVkZWYgQmFja2dyb3VuZEFjdGl2aXR5Q291bnRlcjo6VG9rZW4gQmFja2dyb3VuZEFjdGl2aXR5
VG9rZW47Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyKFByb2Nlc3NUaHJvdHRsZXJDbGllbnQmLCBi
b29sIHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pOwotCi0gICAgRm9yZWdyb3VuZEFj
dGl2aXR5VG9rZW4gZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdDsKLSAgICBCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbiBiYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OworICAgIH5Q
cm9jZXNzVGhyb3R0bGVyKCk7CisKKyAgICBlbnVtIGNsYXNzIEFjdGl2aXR5VHlwZSB7IEJhY2tn
cm91bmQsIEZvcmVncm91bmQgfTsKKyAgICB0ZW1wbGF0ZTxBY3Rpdml0eVR5cGUgdHlwZT4gY2xh
c3MgQWN0aXZpdHkgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIEFjdGl2aXR5KFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlciwgQVNDSUlM
aXRlcmFsIG5hbWUpCisgICAgICAgICAgICA6IG1fdGhyb3R0bGVyKCZ0aHJvdHRsZXIpCisgICAg
ICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdHRsZXIu
YWRkQWN0aXZpdHkoKnRoaXMpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNzVGhyb3R0bGVyIFN0YXJ0aW5nICV7cHVibGlj
fXMgYWN0aXZpdHkgJXAgLyAnJXtwdWJsaWN9cyciLCBtX3Rocm90dGxlci0+bV9wcm9jZXNzSWRl
bnRpZmllciwgbV90aHJvdHRsZXIsIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8g
ImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCB0aGlzLCBtX25hbWUuY2hhcmFjdGVycygpKTsK
KyAgICAgICAgfQorCisgICAgICAgIH5BY3Rpdml0eSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChpc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3Rocm90dGxlcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXI7
CisKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKCFtX3Rocm90dGxlcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXIgRW5kaW5nICV7cHVibGljfXMg
YWN0aXZpdHkgJXAgLyAnJXtwdWJsaWN9cyciLCBtX3Rocm90dGxlci0+bV9wcm9jZXNzSWRlbnRp
ZmllciwgbV90aHJvdHRsZXIsIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZv
cmVncm91bmQiIDogImJhY2tncm91bmQiLCB0aGlzLCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAg
ICAgICAgICAgIG1fdGhyb3R0bGVyLT5yZW1vdmVBY3Rpdml0eSgqdGhpcyk7CisgICAgICAgICAg
ICBtX3Rocm90dGxlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBQcm9jZXNzVGhy
b3R0bGVyKiBtX3Rocm90dGxlciB7IG51bGxwdHIgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG1f
bmFtZTsKKyAgICB9OworCisgICAgdXNpbmcgRm9yZWdyb3VuZEFjdGl2aXR5ID0gQWN0aXZpdHk8
QWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9yZWdyb3Vu
ZEFjdGl2aXR5PiBmb3JlZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpOworCisgICAg
dXNpbmcgQmFja2dyb3VuZEFjdGl2aXR5ID0gQWN0aXZpdHk8QWN0aXZpdHlUeXBlOjpCYWNrZ3Jv
dW5kPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5k
QWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpOwogICAgIAogICAgIHZvaWQgZGlkQ29ubmVjdFRv
UHJvY2VzcyhQcm9jZXNzSUQpOwotICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9yZWdyb3VuZENvdW50ZXIudmFsdWUoKSB8fCBtX2JhY2tncm91bmRDb3VudGVy
LnZhbHVlKCk7IH0KKyAgICBib29sIHNob3VsZEJlUnVubmFibGUoKSBjb25zdCB7IHJldHVybiBt
X2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSB8fCBtX2JhY2tncm91bmRBY3Rpdml0aWVzLnNp
emUoKTsgfQogCiBwcml2YXRlOgogICAgIEFzc2VydGlvblN0YXRlIGV4cGVjdGVkQXNzZXJ0aW9u
U3RhdGUoKTsKQEAgLTcxLDYgKzEwMywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFByZXBh
cmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQpOwogICAgIHZvaWQgcHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCk7CiAKKyAgICB2b2lkIGFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0
eSYpOworICAgIHZvaWQgYWRkQWN0aXZpdHkoQmFja2dyb3VuZEFjdGl2aXR5Jik7CisgICAgdm9p
ZCByZW1vdmVBY3Rpdml0eShGb3JlZ3JvdW5kQWN0aXZpdHkmKTsKKyAgICB2b2lkIHJlbW92ZUFj
dGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYpOworICAgIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2
aXRpZXMoKTsKKwogICAgIC8vIFByb2Nlc3NBc3NlcnRpb25DbGllbnQKICAgICB2b2lkIHVpQXNz
ZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKSBvdmVycmlkZTsKIApAQCAtODAsMjIgKzExOCwy
MiBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NJRCBtX3Byb2Nlc3NJZGVudGlmaWVyIHsgMCB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKICAgICBS
dW5Mb29wOjpUaW1lcjxQcm9jZXNzVGhyb3R0bGVyPiBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0
VGltZXI7Ci0gICAgRm9yZWdyb3VuZEFjdGl2aXR5Q291bnRlciBtX2ZvcmVncm91bmRDb3VudGVy
OwotICAgIEJhY2tncm91bmRBY3Rpdml0eUNvdW50ZXIgbV9iYWNrZ3JvdW5kQ291bnRlcjsKKyAg
ICBIYXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXM7Cisg
ICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRBY3Rpdml0aWVzOwog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CiAgICAg
Ym9vbCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247CiB9OwogCi1pbmxpbmUgUHJv
Y2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6
Zm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdAoraW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90
dGxlcjo6Zm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8Rm9yZWdyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBGb3JlZ3JvdW5kQWN0aXZp
dHlUb2tlbihtX2ZvcmVncm91bmRDb3VudGVyLmNvdW50KCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvcmVncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCi1pbmxpbmUgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6YmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdAoraW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90dGxl
cjo6YmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBzdGQ6OnVuaXF1ZV9w
dHI8QmFja2dyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbihtX2JhY2tncm91bmRDb3VudGVyLmNvdW50KCkpOwotfQotICAgIAorICAgIHJldHVybiBt
YWtlVW5pcXVlPEJhY2tncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKwogI2VuZGlmIC8vIFByb2Nlc3NUaHJvdHRsZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDdlYzVh
NmIxYjBkZTQ3ZmE2N2MyN2EzODcxYTA2Mzc5YTgyNTI3YTEuLjhiMmI4YjJmYzk4ZjBmNzMxYTdi
NGU4NjkzMGUzM2NlNGNkMjRhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTYyLDkgKzYyLDcgQEAgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlBy
b2Nlc3NQcm8KICAgICAsIG1faXNTZXJ2ZXJSZWRpcmVjdChpc1NlcnZlclJlZGlyZWN0KQogICAg
ICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgLCBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCkKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgICwgbV9zdXNwZW5zaW9uVG9rZW4obV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKQotI2VuZGlmCisgICAgLCBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2
aXR5KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJQcm92aXNpb25h
bCBMb2FkIl9zKSkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGlu
ZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiB3ZWJQYWdl
SUQ9JSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6ICVw
IiwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA2MzRmYjc1ZTg3MzhlMTRl
NDI3ZDk3OGJjOGRlZmY2NDUxMmYxZWY0Li42MjdlNjkxZjYyNGQxZWI3ODM4YTg4YzY1ZTliNmM3
MWNiZGQyNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90
PiBtX2FjY2Vzc2liaWxpdHlUb2tlbjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9zdXNwZW5z
aW9uVG9rZW47CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91
bmRBY3Rpdml0eT4gbV9wcm92aXNpb25hbExvYWRBY3Rpdml0eTsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA3Mjhk
OGIwZTVjZTcyNTE4MTNiMTk3NmNkNDIwNGRhNjE1MzkzNThkLi5iN2IwNDY5NTkyNWRjNjhmZGM2
NTYzNThlNTlmMTQyMTVlODVjZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1
bmN0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYTo6QWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBwcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRkVHJhbnNh
Y3Rpb25DYWxsYmFja0lEKG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBwcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nIl9zKSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVu
dGlsUGVuZGluZ1VwZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmNwcAppbmRleCA3Zjg5Y2VlZmMzZjI2ZDZkZGE2MDQ3ZmZlZDQxN2FjZWJkMDQ0
OTAzLi5lYWJlZjlhNzhkMDE0NzZjODRiZTM0ZTdhMTFlNDQxNmIxMjUwYTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJv
eHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JgogICAgICwgbV9zaG91bGREZWxheUNsb3Np
bmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAgICwgbV9zdXNw
ZW5zaW9uVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlN1c3BlbmRlZFBhZ2VQ
cm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
LCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpCisgICAgLCBtX3N1c3BlbnNpb25BY3Rpdml0eShtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBzdXNwZW5zaW9uIGZvciBiYWNrL2Zvcndh
cmQgY2FjaGUiX3MpKQogI2VuZGlmCiB7CiAgICAgYWxsU3VzcGVuZGVkUGFnZXMoKS5hZGQodGhp
cyk7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFByb2Nl
c3NSZXF1ZXN0VG9TdXNwZW5kKFN1c3BlbnNpb25TdGF0ZSBuZXdTdXNwZW5zaW8KICAgICBtX3N1
c3BlbnNpb25UaW1lb3V0VGltZXIuc3RvcCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBtX3N1c3BlbnNpb25Ub2tlbiA9IG51bGxwdHI7CisgICAgbV9zdXNwZW5zaW9uQWN0aXZp
dHkgPSBudWxscHRyOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2Vi
UGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgK
aW5kZXggZWUyYzZhMzc1MjRmMmM5MWFkYWZlYWFiY2Y3OTNhZGU2ZDYxZDhkNy4uNzAyZTk2Mjk2
OGU2MWE2ZTg2MTcxZjlhYTQwYWZjZGRiZDBhOGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1c3BlbmRlZFBhZ2VQcm94eSopPiBtX3JlYWR5VG9V
bnN1c3BlbmRIYW5kbGVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPFN1c3BlbmRlZFBhZ2VQcm94eT4g
bV9zdXNwZW5zaW9uVGltZW91dFRpbWVyOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9zdXNwZW5zaW9uVG9r
ZW47CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rp
dml0eT4gbV9zdXNwZW5zaW9uQWN0aXZpdHk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCmluZGV4IDU5
ZmJlZDVmMGNjZWJmMWU5YWU1Mjk5YmFjOGE2ZGFjZTVhYjM1NmUuLmFlNTZlNTMzYTYwYjI3Zjc5
Y2MxYWUzZTc2NmFjODE3NDlhN2QxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJC
YWNrRm9yd2FyZENhY2hlRW50cnk6On5XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoKQogewogICAg
IGlmIChtX2JhY2tGb3J3YXJkSXRlbUlEICYmICFtX3N1c3BlbmRlZFBhZ2UpIHsKICAgICAgICAg
YXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKLSAgICAgICAgcHJvY2Vzcy5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZShtX2JhY2tG
b3J3YXJkSXRlbUlEKSwgW3Rva2VuID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpXSB7IH0pOworICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVtSUQp
LCBbYWN0aXZpdHkgPSBwcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiQ2xl
YXJpbmcgYmFjay9mb3J3YXJkIGNhY2hlIGVudHJ5Il9zKV0geyB9KTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDFiM2UxNTVhZDlkNGMyYTJhMTJmZGVjNjY0NjVlMGMzZGUzMmVlNjYuLmRjMmNkNjk2MzUx
MjgxNGNiZWRiMTA4ZmJiNWQ0MzJjZDI2ZGE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHBy
b2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKV0oVmVjdG9yPFN0cmluZz4mJiBob3N0bmFtZXMpIG11dGFibGUg
eworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNr
RnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyJfcyldKFZlY3RvcjxTdHJpbmc+JiYgaG9zdG5h
bWVzKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGhvc3RuYW1l
cykpOwogICAgIH0pOwogfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9v
bCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Np
b25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBj
b29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFj
dGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSJfcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgQ29va2llJgogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRp
bWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lv
bklELCB0aW1lKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlIl9zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAg
IH0pOwogfQpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHBy
b2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUo
c2Vzc2lvbklELCBjb29raWVzKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lvbklE
LCBjb29raWVzKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzIl9zKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTQ0LDcgKzE0NCw3IEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPENvCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5l
dHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAg
ICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVS
TCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4g
PSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXSgp
IG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwg
bWFpbkRvY3VtZW50VVJMKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzIl9zKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTUyLDcgKzE1
Miw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBh
dXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9u
ID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXShWZWN0b3I8Q29va2llPiYmIGNvb2tp
ZXMpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0QWxsQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29y
a1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEFsbENvb2tpZXMiX3MpXShWZWN0b3I8Q29va2llPiYmIGNvb2tpZXMpIG11dGFi
bGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoY29va2llcykpOwogICAgIH0p
OwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRB
bGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxDb29raWU+JiYp
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9j
ZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhz
ZXNzaW9uSUQsIHVybCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpXShWZWN0b3I8Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUgeworICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyJfcyld
KFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oV1RGTW92ZShjb29raWVzKSk7CiAgICAgfSk7CiB9CkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFM
OjpTZXNzaW9uSUQsIEhUVFBDb29raWUKICNlbmRpZgogCiAgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5Il9zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwog
ICAgIH0pOwogfQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2llCiB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIVFRQQ29va2llQWNjZXB0UG9saWN5
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCldKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAg
ICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5Il9zKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHBvbGljeSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4YTA2ZDdmMjM5MGEx
MzZiY2VkYzcwMTk4ODExMTE4NjIwYmI3ODJmLi4xN2U0YTY3ODlhNzk2OTJlNjY4ZGUxY2FhMTk3
ODcwNjBmNTBlNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTEwNTUsNyArMTA1NSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgaG9sZCBhIHBy
b2Nlc3MgYXNzZXJ0aW9uIGFmdGVyIGdldHRpbmcgY2xvc2VkLgotICAgIG1fYWN0aXZpdHlUb2tl
biA9IG51bGxwdHI7CisgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgbV9p
c0F1ZGlibGVBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0g
bnVsbHB0cjsKKyAgICBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5ID0g
bnVsbHB0cjsKICNlbmRpZgogCiAgICAgc3RvcEFsbFVSTFNjaGVtZVRhc2tzKCk7CkBAIC0xOTI5
LDIzICsxOTMyLDQ2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkK
ICAgICAgICAgbV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnVzZXJPYnNlcnZhYmxlUGFnZUNvdW50KCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGJvb2wgaXNDYXB0dXJpbmdNZWRpYSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKLSAgICBib29sIGlzQXVkaWJsZSA9
IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOwotICAg
IGlmICghaXNWaWV3VmlzaWJsZSgpICYmICFtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eSAmJiAhaXNDYXB0dXJpbmdNZWRpYSAmJiAhaXNBdWRpYmxlKSB7Ci0gICAgICAgIGlmIChtX2Fj
dGl2aXR5VG9rZW4pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5n
IGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlz
aWJsZSIpOwotICAgICAgICAgICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAoIW1fYWN0aXZpdHlUb2tlbikgewotICAgICAgICBpZiAoaXNWaWV3
VmlzaWJsZSgpKQorICAgIGlmIChpc1ZpZXdWaXNpYmxlKCkpIHsKKyAgICAgICAgaWYgKCFtX2lz
VmlzaWJsZUFjdGl2aXR5IHx8ICFtX2lzVmlzaWJsZUFjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRp
b24gYmVjYXVzZSB0aGUgdmlldyBpcyB2aXNpYmxlIik7Ci0gICAgICAgIGVsc2UgaWYgKGlzQXVk
aWJsZSkKKyAgICAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyB2aXNpYmxlIl9zKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAobV9pc1Zpc2libGVBY3Rpdml0eSkgeworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTog
VUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhl
IHZpZXcgaXMgbm8gbG9uZ2VyIHZpc2libGUiKTsKKyAgICAgICAgbV9pc1Zpc2libGVBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgfQorCisgICAgYm9vbCBpc0F1ZGlibGUgPSBtX2FjdGl2aXR5U3Rh
dGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKKyAgICBpZiAoaXNBdWRpYmxl
KSB7CisgICAgICAgIGlmICghbV9pc0F1ZGlibGVBY3Rpdml0eSB8fCAhbV9pc0F1ZGlibGVBY3Rp
dml0eS0+aXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2lu
ZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIHBsYXlpbmcgYXVkaW8iKTsK
LSAgICAgICAgZWxzZSBpZiAoaXNDYXB0dXJpbmdNZWRpYSkKKyAgICAgICAgICAgIG1faXNBdWRp
YmxlQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgi
VmlldyBpcyBwbGF5aW5nIGF1ZGlvIl9zKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9p
c0F1ZGlibGVBY3Rpdml0eSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2lu
ZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5n
IGF1ZGlvIik7CisgICAgICAgIG1faXNBdWRpYmxlQWN0aXZpdHkgPSBudWxscHRyOworICAgIH0K
KworICAgIGJvb2wgaXNDYXB0dXJpbmdNZWRpYSA9IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhB
Y3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhKTsKKyAgICBpZiAoaXNDYXB0dXJpbmdNZWRp
YSkgeworICAgICAgICBpZiAoIW1faXNDYXB0dXJpbmdBY3Rpdml0eSB8fCAhbV9pc0NhcHR1cmlu
Z0FjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMg
dGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlzIGFj
dGl2ZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRh
a2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGV2ZW4gdGhvdWdoIHRoZSB2aWV3IGlzIG5vdCB2
aXNpYmxlIGJlY2F1c2UgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgdHJ1ZSIp
OwotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgICAgICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkg
PSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBjYXB0
dXJpbmcgbWVkaWEiX3MpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2lzQ2FwdHVyaW5n
QWN0aXZpdHkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVu
c2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3Jl
Z3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2
ZSIpOworICAgICAgICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBudWxscHRyOworICAgIH0KKwor
ICAgIGlmIChtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSkgeworICAgICAgICBpZiAo
IW1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHkgfHwgIW1fYWx3YXlzUnVu
c0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHktPmlzVmFsaWQoKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxl
U3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5IGlzIHRydWUiKTsKKyAgICAgICAgICAg
IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBhbHdheXMgcnVucyBhdCBmb3JlZ3Jv
dW5kIHByaW9yaXR5Il9zKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNz
IGlzIHJlbGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgbm8gbG9uZ2VyIHRydWUiKTsKKyAgICAgICAgbV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgfQogI2Vu
ZGlmCiB9CkBAIC0xOTg1LDcgKzIwMTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5UwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gSGFpbCBNYXJ5IGNoZWNrLiBTaG91bGQgbm90
IGJlIHBvc3NpYmxlIChkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2Ugc2hvdWxkIGZvcmNlIGFz
eW5jIGlmIG5vdCB2aXNpYmxlLAogICAgIC8vIGFuZCBpZiB2aXNpYmxlIHdlIHNob3VsZCBiZSBo
b2xkaW5nIGFuIGFzc2VydGlvbikgLSBidXQgd2Ugc2hvdWxkIG5ldmVyIGJsb2NrIG9uIGEgc3Vz
cGVuZGVkIHByb2Nlc3MuCi0gICAgaWYgKCFtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICBpZiAoIW1f
aXNWaXNpYmxlQWN0aXZpdHkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMDA4LDcgKzIwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxp
ZCwgY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNldEluaXRpYWxG
b2N1cyJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5p
dGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0yMDMzLDcgKzIwNTksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUs
IFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OnZhbGlkYXRlQ29tbWFuZCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCkBAIC0yMTMxLDcgKzIxNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRD
b21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KICAgICAKQEAgLTIxNTUsNyArMjE4MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1bmN0aW9uPHZvaWQo
Y29uc3QgV2ViCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKQEAgLTM3MTMsNyArMzczOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJp
bmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyJfcykpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRj
aEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHksIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM3MzgsMTQgKzM3NjQsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBo
YWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJ
RCgpICE9IGZyYW1lSUQpOwotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSJfcykpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJh
bWUoZnJhbWVJRCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSwgbV93ZWJQ
YWdlSUQpOwogfQogCkBAIC0zNzU2LDcgKzM3ODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzc2Nyw3ICszNzkzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0
U291cmNlRm9yRnJhbWUiX3MpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lE
cy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV93ZWJQ
YWdlSUQpOwogfQpAQCAtMzc3OSw3ICszODA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENv
bnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0
cmluZyJfcykpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxs
YmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRl
bnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTM4MDMsNyArMzgy
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZSJfcykpOwogICAgIG1fbG9hZERlcGVu
ZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOwogfQpAQCAtMzgxNSw3ICszODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0Il9zKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMu
YWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQpA
QCAtMzgyOCw3ICszODU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRN
TERhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhIl9zKSk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxE
YXRhKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAjZW5kaWYKQEAgLTM4NDAsNyArMzg2
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyJfcykpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50
c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM4NTEsNyArMzg3
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEiX3MpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzg2Miw3ICszODg4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUiX3MpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZy
YW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM4NzMs
NyArMzg5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSJfcykpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCks
IG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzg4NCw3ICszOTEwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2
b2lkIChBUEkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0V2Vi
QXJjaGl2ZU9mRnJhbWUiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM5MTcsNyArMzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKICAgICAgICAg
fSk7CiAgICAgfTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCJfcykp
OwogICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWlu
dCgpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50
KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC03MjA5LDcgKzcyMzUsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uIHRlcm1pbmEKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fd2Fp
dGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50ID0g
ZmFsc2U7CiAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IG51bGxwdHI7
Ci0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKKworICAgIG1faXNWaXNpYmxlQWN0aXZp
dHkgPSBudWxscHRyOworICAgIG1faXNBdWRpYmxlQWN0aXZpdHkgPSBudWxscHRyOworICAgIG1f
aXNDYXB0dXJpbmdBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgbV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHlBY3Rpdml0eSA9IG51bGxwdHI7CiAjZW5kaWYKIAogICAgIG1fcGFnZUlzVXNl
ck9ic2VydmFibGVDb3VudCA9IG51bGxwdHI7CkBAIC03ODI4LDcgKzc4NTgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGIl9zKSk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREYoZnJhbWVJRCwg
cmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODE2OCw3ICs4MTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2
b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jIl9zKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIApAQCAtODE3OSw3ICs4MjA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNl
bGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5
bmMiX3MpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0
ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTgxOTAsNyAr
ODIyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jIl9zKSk7CiAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3lu
Yyhwb2ludCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODIwMSw3ICs4MjMx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMo
Y29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgV1QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jIl9zKSk7CiAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
QXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTgyNDUsNyAr
ODI3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJ
bnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUYWtlU25hcHNob3QocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtODUyMSw3ICs4NTUxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRs
ZXIoRnVuY3Rpb248dm9pZCgpPiYKIAogICAgIGF1dG8gdm9pZENhbGxiYWNrID0gVm9pZENhbGxi
YWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB9LCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnN0
YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyIl9zKSk7CiAgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAg
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9
CkBAIC04NjY1LDcgKzg2OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICB9
CiAKICAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247Ci0gICAg
ICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENhbGxi
YWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9uYWxDYWxs
YmFja0lEKCk7CisgICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24g
PyBPcHRpb25hbENhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24iX3MpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQo
KTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExv
YWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lk
ZW50aWZpZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgfSk7CkBAIC04ODgyLDcgKzg5MTIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYm
IGF0dGFjaG1lbnQsIEZ1bmN0aW9uPAogICAgIH0KIAogICAgIGF1dG8gYXR0YWNobWVudElkZW50
aWZpZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudCJfcykpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRh
Y2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1h
cC5zZXQoYXR0YWNobWVudElkZW50aWZpZXIsIFdURk1vdmUoYXR0YWNobWVudCkpOwogfQpAQCAt
ODg5OCw3ICs4OTI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICBpZiAoYXV0byBk
YXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkKICAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IHsgKmRhdGEgfTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIl9zKSk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXko
KSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1v
dmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTkw
NTcsNyArOTA4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KEZ1bmN0aW9uPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCJfcykpOwogICAgIG1f
bG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggZDQ3YjdmNGYyN2RkMzQwYTkzZWEzNmM1OGU2YzE2Zjc4OGRiODI1NS4uZDRj
OGU4YjZkOGE1ZGExYjdlZDhkMjI3Yzk4ZDBlMGNhMjliNzhmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIyOTEsNyArMjI5MSwxMCBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxp
bmVQbGF5YmFjayB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQ
cmlvcml0eSB7IGZhbHNlIH07Ci0gICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2
aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhy
b3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1faXNWaXNpYmxlQWN0aXZpdHk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4gbV9pc0F1
ZGlibGVBY3Rpdml0eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9y
ZWdyb3VuZEFjdGl2aXR5PiBtX2lzQ2FwdHVyaW5nQWN0aXZpdHk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4gbV9hbHdheXNSdW5zQXRG
b3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eTsKICNlbmRpZgogICAgIGJvb2wgbV9pbml0aWFsQ2Fw
aXRhbGl6YXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1
TGltaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXgg
YmJkNDhjMzdjN2ZkMmMxZjBkNzA3N2JmMTE4NzNiYzgwNDZiYTQ2Ny4uY2EzMGI2N2I5MDViODFh
YmM4YTljMDJmNTY0NTA5ZWU0MTUxYTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcApAQCAtOTE3LDEyICs5MTcsMTIgQEAgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMgV2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
KFdlYlAKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3Jl
LCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkIGlzUHJld2FybWVkKQogewotICAgIGF1dG8g
aW5pdGlhbGl6YXRpb25BY3Rpdml0eVRva2VuID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpOwotICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChb
JnByb2Nlc3MsIGluaXRpYWxpemF0aW9uQWN0aXZpdHlUb2tlbl0geworICAgIGF1dG8gaW5pdGlh
bGl6YXRpb25BY3Rpdml0eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQcm9jZXNzIGluaXRpYWxpemF0aW9uIl9zKTsKKyAgICBhdXRvIHNjb3BlRXhpdCA9IG1h
a2VTY29wZUV4aXQoWyZwcm9jZXNzLCBpbml0aWFsaXphdGlvbkFjdGl2aXR5ID0gV1RGTW92ZShp
bml0aWFsaXphdGlvbkFjdGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gUm91bmQtdHJp
cCB0byB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcyBiZWZvcmUgcmVsZWFzaW5nIHRoZQotICAgICAg
ICAvLyBpbml0aWFsaXphdGlvbiBhY3Rpdml0eSB0b2tlbiwgc28gdGhhdCB3ZSdyZSBzdXJlIHRo
YXQgYWxsCisgICAgICAgIC8vIGluaXRpYWxpemF0aW9uIGFjdGl2aXR5LCBzbyB0aGF0IHdlJ3Jl
IHN1cmUgdGhhdCBhbGwKICAgICAgICAgLy8gbWVzc2FnZXMgc2VudCBmcm9tIHRoaXMgZnVuY3Rp
b24gaGF2ZSBiZWVuIGhhbmRsZWQuCi0gICAgICAgIHByb2Nlc3MuaXNSZXNwb25zaXZlKFtpbml0
aWFsaXphdGlvbkFjdGl2aXR5VG9rZW5dIChib29sKSB7IH0pOworICAgICAgICBwcm9jZXNzLmlz
UmVzcG9uc2l2ZShbaW5pdGlhbGl6YXRpb25BY3Rpdml0eSA9IFdURk1vdmUoaW5pdGlhbGl6YXRp
b25BY3Rpdml0eSldIChib29sKSB7IH0pOwogICAgIH0pOwogCiAgICAgZW5zdXJlTmV0d29ya1By
b2Nlc3MoKTsKQEAgLTIwNDksMjQgKzIwNDksMjQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBi
ZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAg
ICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYWJsZURvbWFp
biA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgICAgICAg
ICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9yZWdy
b3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRBY3Rpdml0
aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtl
clByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIg
Zm9yIHZpc2libGUgdmlldyhzKSJfcykpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9i
YWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOworICAgICAg
ICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xl
YXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoIW1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0Nv
dW50ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIg
dGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBm
b3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgICAgICAgICAgICAg
IGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlu
cyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRv
a2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAg
ICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclByb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJh
Y2tncm91bmQgdmlldyhzKSJfcykpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9mb3Jl
Z3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOworICAgICAgICAg
ICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2ZvcmVncm91bmRU
b2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7Ci0gICAgICAgIG1fYmFja2dy
b3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKKyAgICAgICAgbV9m
b3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKKyAg
ICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xl
YXIoKTsKICAgICB9OwogICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
CiAjZW5kaWYKQEAgLTIwNzUsMjMgKzIwNzUsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IGVu
c3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICAgICAgaWYgKG1fZm9yZWdyb3VuZFdlYlByb2Nl
c3NDb3VudGVyLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzcykgewotICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9y
TmV0d29ya1Byb2Nlc3MgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0
aXZpdHlUb2tlbigpOworICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5l
dHdvcmtQcm9jZXNzKSB7CisgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JO
ZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rp
dml0eSgiTmV0d29ya2luZyBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgICAg
ICAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQo
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29y
a1Byb2Nlc3MgPSBudWxscHRyOworICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JO
ZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcykgewotICAg
ICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBuZXR3b3Jr
UHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAgICAg
ICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKSB7CisgICAgICAg
ICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBmb3IgZm9y
ZWdyb3VuZCBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwogICAgICAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAgICAgICAgbV9iYWNr
Z3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAgICAgIG1fZm9yZWdy
b3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOworICAgICAgICBtX2JhY2tn
cm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAgICB9OwogICAgIHVw
ZGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5kaWYKQEAgLTIxMDAsMTEgKzIxMDAs
MTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KQogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkOyB0YWtl
IG5ldyB0b2tlbnMgZm9yIHRoZSBuZXcgbmV0d29yayBwcm9jZXNzLgotICAgIGlmIChtX2JhY2tn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzKQotICAgICAgICBtX2JhY2tncm91bmRUb2tlbkZv
ck5ldHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpOwotICAgIGVsc2UgaWYgKG1fZm9yZWdyb3VuZFRva2VuRm9y
TmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nl
c3MgPSBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eVRva2VuKCk7CisgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkOyB0YWtlIG5ldyBh
Y3Rpdml0aWVzIGZvciB0aGUgbmV3IG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBpZiAobV9iYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZp
dHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBiYWNrZ3JvdW5kIHZpZXcocykiX3Mp
OworICAgIGVsc2UgaWYgKG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MpCisg
ICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBuZXdOZXR3b3Jr
UHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBm
b3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5ld05l
dHdvcmtQcm9jZXNzUHJveHkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCAwNGNjYzk2YjljZWI1ODhjNDQ4MGU0Y2Y0Y2I3NzVjZTQ3M2IzZWMz
Li44ZGEwYjE3MjU5ZjY0ZTBjNDNiMDNhOTEyMDdmOWVjYTQyZDJmODlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTc2MCwxMSArNzYwLDExIEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc0Nv
dW50ZXIgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiAgICAgQmFja2dyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwotICAgIFByb2Nlc3NU
aHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0
d29ya1Byb2Nlc3M7Ci0gICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4gbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX2ZvcmVncm91bmRBY3Rp
dml0eUZvck5ldHdvcmtQcm9jZXNzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1By
b2Nlc3M7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRv
a2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwotICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5p
cXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PiBtX2ZvcmVncm91
bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwYWVhNWJhOTZlYTBiMjU0Y2Y0ODg3YmE5YmQ3NDAy
ZTUwYTYwYjU5Li5lZDU0ZDRhY2M4Y2Y5NjNmZWM1ODYyY2RlYWVhODQzMjY2YmJmMjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM3Miw3ICsz
NzIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24oKQogCiAgICAgbV9yZXNwb25z
aXZlbmVzc1RpbWVyLmludmFsaWRhdGUoKTsKICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVz
c1RpbWVyLmludmFsaWRhdGUoKTsKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0g
bnVsbHB0cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsK
IAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBjb3B5VG9WZWN0b3IobV9mcmFtZU1hcC52YWx1ZXMo
KSkpCiAgICAgICAgIGZyYW1lLT53ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7CkBAIC0xMDEzLDEw
ICsxMDEzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgQVNTRVJUKGNhblNlbmRN
ZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhp
cy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0byBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhIl9zKTsKICAg
ICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0
aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGZldGNoaW5nIFdlYnNpdGUgZGF0YSIsIHRo
aXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoZGF0YVR5cGVzKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdG9rZW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRl
RGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBh
Y3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMDMw
LDEwICsxMDMwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzCiAgICAgQVNTRVJUKGNhblNl
bmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0g
dGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0byBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSJfcyk7
CiAgICAgUkVMRUFTRV9MT0dfSUYoaXNSZWxlYXNlTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHRoZSBXZWIgcHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEi
LCB0aGlzKTsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2Up
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0b2tlbiwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAg
Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRl
bGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
ewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsK
ICNlbmRpZgpAQCAtMTA0NywxMCArMTA0NywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aQog
ICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25J
RCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gdG9rZW4gPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgIGF1dG8gYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VM
b2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5
IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNz
IGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAK
LSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRva2VuLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewog
I2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICNl
bmRpZgpAQCAtMTI5MiwxMiArMTI5MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNI
b2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIHsKICAgICBpZiAo
IWlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQg
ZmlsZXMiKTsKLSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7
CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxl
cykgeworICAgIGlmICghbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcykgewogICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBi
YWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgaXMgaG9s
ZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxl
cyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYWN0
aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZp
dHkoIkhvbGRpbmcgbG9ja2VkIGZpbGVzIl9zKTsKICAgICB9CiB9CiAKQEAgLTE1MTgsMjEgKzE1
MTgsMjEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odWludDMyX3QgaGFzaCkKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5w
dXQoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVs
bHNjcmVlbklucHV0KCkKIHsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1
bGxzY3JlZW5Gb3JtQ29udHJvbHMpCisgICAgaWYgKG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVs
bHNjcmVlbkZvcm1Db250cm9scykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHMgPSBtX3Rocm90dGxlci5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNj
cmVlbkZvcm1Db250cm9scyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiRnVsbHNj
cmVlbiBpbnB1dCJfcyk7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVBy
b2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBwcmVz
ZW50aW5nIGZ1bGxzY3JlZW4gVUkgZm9yIGZvcm0gY29udHJvbHMuIik7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVu
SW5wdXQoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1
bGxzY3JlZW5JbnB1dCgpCiB7Ci0gICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9y
RnVsbHNjcmVlbkZvcm1Db250cm9scykKKyAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXR5Rm9y
RnVsbHNjcmVlbkZvcm1Db250cm9scykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHMgPSBudWxscHRyOworICAg
IG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG51bGxwdHI7
CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgcmVsZWFz
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBoYXMgZGlzbWlzc2VkIGZ1bGxz
Y3JlZW4gVUkgZm9yIGZvcm0gY29udHJvbHMuIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDYzMmI2OTc1OGRlOTE4Y2Q2OGY0YWRjN2NmYzY4
MzAxMjFiYWYxOS4uMmEyNDZlN2VkMmU2MWM4MTFkYTJmMWIwNzQ1MjFhNGY0ZTQ3YzdkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTI0Niw4ICsyNDYs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CiAKICNp
ZiBQTEFURk9STShXQVRDSE9TKQotICAgIHZvaWQgdGFrZUJhY2tncm91bmRBY3Rpdml0eVRva2Vu
Rm9yRnVsbHNjcmVlbklucHV0KCk7Ci0gICAgdm9pZCByZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5
VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKKyAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZEFjdGl2
aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CisgICAgdm9pZCBlbmRCYWNrZ3JvdW5kQWN0aXZpdHlG
b3JGdWxsc2NyZWVuSW5wdXQoKTsKICNlbmRpZgogCiAgICAgYm9vbCBpc1ByZXdhcm1lZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNQcmV3YXJtZWQ7IH0KQEAgLTQ3OSw3ICs0NzksNyBAQCBwcml2YXRl
OgogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7
CiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+
IG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIG1fZm9yZWdyb3VuZFRva2VuOwogICAg
IEJhY2tncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW47CkBAIC01MTIsNyAr
NTEyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQXVkaWJsZVdlYlBhZ2UgeyBmYWxzZSB9
OwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbkZv
cm1Db250cm9sczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbkZvcm1D
b250cm9sczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCAzOGZhZTE2MTM1ZDk2NmUwM2I3ODA4YTcyNDM2NzFlMzg1YWYzNDE0Li5mMDJkMGMyMjk3NGY4
YmEwODJlMGI0MzA5MDQ3MTQzYmUxZGEzMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTU5MDYsNyAr
NTkwNiw3IEBAIC0gKHZvaWQpcHJlc2VudFZpZXdDb250cm9sbGVyRm9yQ3VycmVudEZvY3VzZWRF
bGVtZW50CiAgICAgICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250
cm9sbGVyOl9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmlt
YXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwogCiAgICAgLy8gUHJlc2VudGluZyBhIGZ1bGxzY3Jl
ZW4gaW5wdXQgdmlldyBjb250cm9sbGVyIGZ1bGx5IG9ic2N1cmVzIHRoZSB3ZWIgdmlldy4gV2l0
aG91dCB0YWtpbmcgdGhpcyB0b2tlbiwgdGhlIHdlYiBjb250ZW50IHByb2Nlc3Mgd2lsbCBnZXQg
YmFja2dyb3VuZGVkLgotICAgIF9wYWdlLT5wcm9jZXNzKCkudGFrZUJhY2tncm91bmRBY3Rpdml0
eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCk7CisgICAgX3BhZ2UtPnByb2Nlc3MoKS5zdGFydEJh
Y2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpOwogCiAgICAgW3ByZXNlbnRpbmdW
aWV3Q29udHJvbGxlci50cmFuc2l0aW9uQ29vcmRpbmF0b3IgYW5pbWF0ZUFsb25nc2lkZVRyYW5z
aXRpb246bmlsIGNvbXBsZXRpb246W3dlYWtXZWJWaWV3ID0gV2Vha09iakNQdHI8V0tXZWJWaWV3
Pihfd2ViVmlldyksIGNvbnRyb2xsZXIgPSBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0Nv
bnRyb2xsZXJdIChpZCA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db29yZGluYXRvckNvbnRl
eHQ+KSB7CiAgICAgICAgIGF1dG8gc3Ryb25nV2ViVmlldyA9IHdlYWtXZWJWaWV3LmdldCgpOwpA
QCAtNTk0Miw3ICs1OTQyLDcgQEAgLSAodm9pZClkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJvbGxl
cnM6KEJPT0wpYW5pbWF0ZWQKICAgICAgICAgICAgIFtzZWxmIGJlY29tZUZpcnN0UmVzcG9uZGVy
XTsKICAgICB9CiAKLSAgICBfcGFnZS0+cHJvY2VzcygpLnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpOworICAgIF9wYWdlLT5wcm9jZXNzKCkuZW5kQmFj
a2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CiB9CiAKIC0gKHZvaWQpZm9jdXNl
ZEZvcm1Db250cm9sVmlld0RpZFN1Ym1pdDooV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3ICopdmll
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggMDQyYmI1ZDMyMTRmZTAwMDE1NTZmOWE2MTMyOTU5M2NkZjk4YjE0ZC4uOTg5ZmNkNmIwZWJk
MjY4NjZiZWIzYjc3NGJlMmMxY2NhMTVkYjJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgRm9jdXNlZEUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdp
dGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXgKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSJfcykp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1
cmUocG9pbnQsICh1aW50MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0
ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVT
ZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWluCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRv
dWNoZXMiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKHBvaW50LCB0b3VjaGVzLCBiYXNlSXNTdGFydCwgY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24s
IGNvbnN0IFN0cmluZyYgbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmFw
cGx5QXV0b2NvcnJlY3Rpb24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50IHBvaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6
c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KHBv
aW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC01MDAs
NyArNTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
biJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9z
aXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
QEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1v
dmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Z3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlEKTsKIH0KICAgICAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCBib29sIGlzSQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtNTMzLDcg
KzUzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdl
YkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24iX3MpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rp
b24oZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC01NDQsNyAr
NTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50Il9zKSk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxi
YWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiAgICAgCiB9CkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNv
bnN0IFdlYkNvcmU6OkludFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94
eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkiX3MpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICAKIH0KQEAgLTU2
OCw3ICs1NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQo
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjbwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0Il9zKSk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0aW9uQ29udGV4dCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OwogfQogCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyJfcykp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1Rv
dWNoZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogICAgIC8vIFdlIG5vcm1hbGx5IGRlbGF5
IHByb2Nlc3Mgc3VzcGVuc2lvbiB3aGVuIHRoZSBhcHAgaXMgYmFja2dyb3VuZGVkIHVudGlsIHRo
ZSBjdXJyZW50IHBhZ2UgbG9hZCBjb21wbGV0ZXMuIEhvd2V2ZXIsCiAgICAgLy8gd2UgZG8gbm90
IHdhbnQgdG8gZG8gc28gd2hlbiB0aGUgc2NyZWVuIGlzIGxvY2tlZCBmb3IgcG93ZXIgcmVhc29u
cy4KICAgICBpZiAoaXNTdXNwZW5kZWRVbmRlckxvY2spCi0gICAgICAgIE5hdmlnYXRpb25TdGF0
ZTo6ZnJvbVdlYlBhZ2UoKnRoaXMpLnJlbGVhc2VOZXR3b3JrQWN0aXZpdHlUb2tlbihOYXZpZ2F0
aW9uU3RhdGU6Ok5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbjo6U2NyZWVuTG9ja2Vk
KTsKKyAgICAgICAgTmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqdGhpcykucmVsZWFzZU5l
dHdvcmtBY3Rpdml0eShOYXZpZ2F0aW9uU3RhdGU6Ok5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFz
b246OlNjcmVlbkxvY2tlZCk7CiAjZW5kaWYKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJM
b2NrKSwgbV93ZWJQYWdlSUQpOwogfQpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29y
ZTo6VGV4dEdyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVl
c3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCJfcykpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhT
ZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgb2Zmc2V0
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50
MzJfdCBvZmZzZXQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCJfcykpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApA
QCAtNzUyLDcgKzc1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZz
ZXQoaW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCJfcykpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zm
c2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMTAxNiw3ICsx
MDE2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEZvY3VzZWRFbGVtZW50KGJvb2wg
aXNGb3J3YXJkLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2EKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQiX3MpKTsKICAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQoaXNG
b3J3YXJkLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0xMDk1LDcgKzEwOTUs
NyBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZQogICAgIH0KIAogICAgIHVpbnQzMl90IHBhZ2VD
b3VudCA9IDA7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYiX3MpKTsKICAgICB1c2lu
ZyBNZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50
SW5mbywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fd2ViUGFnZUlE
LCBTZWNvbmRzOjppbmZpbml0eSgpKTsKICAgICByZXR1cm4gcGFnZUNvdW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382071</attachid>
            <date>2019-10-28 08:17:17 -0700</date>
            <delta_ts>2019-10-28 09:04:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203438-20191028081716.patch</filename>
            <type>text/plain</type>
            <size>105451</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjMGJiZDU0NDVjMGI0YTlj
MTU4MzNhMjRiZTdiMTY4MmI1ZTU4YmYuLjMwZjgyMjdiN2VkMmE3MWM2MWQ0ZWNkZDFhNzhjMTQ1
M2JjZDkwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDE5LTEwLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gSW1wcm92ZSBw
cm9jZXNzIGFzc2VydGlvbi1yZWxhdGVkIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSBjYXVzZXMg
b2YgbGVha2VkIGFzc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcHJvdmUgcHJvY2VzcyBhc3NlcnRpb24tcmVsYXRlZCBsb2dnaW5nIHRv
IGhlbHAgaWRlbnRpZnkgY2F1c2VzIG9mIGxlYWtlZCBhc3NlcnRpb25zLiBQcmV2aW91c2x5LAor
ICAgICAgICB3aGVuZXZlciBvdXIgY29kZSBuZWVkZWQgdG8gcHJldmVudCBzdXNwZW5zaW9uIG9m
IGEgY2hpbGQgcHJvY2VzcyBkdWUgdG8gc29tZSBraW5kIG9mIGFjdGl2aXR5LCBpdAorICAgICAg
ICB3b3VsZCBzaW1wbHkgZ3JhYiBhICJ0b2tlbiIgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcycgUHJv
Y2Vzc1Rocm90dGxlci4gVGhpcywgaW4tdHVybiwgd291bGQgY2F1c2UKKyAgICAgICAgdGhlIFBy
b2Nlc3NUaHJvdHRsZXIgdG8gdGFrZSB0aGUgcmlnaHQga2luZCBvZiBQcm9jZXNzQXNzZXJ0aW9u
IG9yIHJlbGVhc2UgaXQgd2hlbiBub2JvZHkgaG9sZHMKKyAgICAgICAgYW55IHRva2VucyBhbnkg
bW9yZS4KKworICAgICAgICBXZSBmcmVxdWVudGx5IGhhdmUgaXNzdWVzIHdoZXJlIHRoZSBVSVBy
b2Nlc3Mga2VlcHMgaXRzIGFzc2VydGlvbnMgYXJvdW5kIGZvciB0b28gbG9uZyBhZnRlciBnZXR0
aW5nCisgICAgICAgIGJhY2tncm91bmRpbmcuIFRoaXMgY2F1c2VzIHRoZSBhc3NlcnRpb25zIHRv
IGdldCBpbnZhbGlkYXRlZCBhbmQgdGhlIFVJUHJvY2VzcyB3aWxsIHVzdWFsbHkgc3VzcGVuZAor
ICAgICAgICAoYWxiZWl0IHdpdGggYSBkZWxheSwgd2hpY2ggaXMgYmFkIGZvciBwb3dlcikuIFNv
bWV0aW1lcyB0aG91Z2gsIHdlIGdldCBraWxsZWQgYmVjYXVzZSBvdXIgaW52YWxpZGF0aW9uCisg
ICAgICAgIGhhbmRsZXIgZG9lcyBub3QgZ2V0IGEgY2hhbmNlIHRvIHJlbGVhc2UgdGhlIGFzc2Vy
dGlvbiBpbiB0aW1lLgorCisgICAgICAgIEZpbmRpbmcgb3V0IHdoeSB3ZSdyZSBrZWVwaW5nIGFy
b3VuZCBhc3NlcnRpb25zIGlzIGN1cnJlbnRseSB2ZXJ5IGRpZmZpY3VsdCBiZWNhdXNlIHdlIGNh
bm5vdCBlYXNpbHkKKyAgICAgICAgc2VlIGluIHRoZSBsb2dzIHdobyBpcyBzdGlsbCBob2xkaW5n
IFByb2Nlc3NUaHJvdHRsZXIgdG9rZW5zLiBUbyBtYWtlIHN1Y2ggZGVidWdnaW5nIGVhc2llciwg
Y2xpZW50cworICAgICAgICBub3cgbm90aWZ5IHRoZSBQcm9jZXNzVGhyb3R0bGVyIHdoZW4gdGhl
eSBzdGFydCBzb21lIGFjdGl2aXR5IGFuZCBwcm92aWRlIGEgdXNlci1yZWFkYWJsZSBkZXNjcmlw
dGlvbgorICAgICAgICBvZiB0aGUgYWN0aXZpdHkuIFRoZSBjbGllbnQgdGhlbiBnZXRzIGEgRm9y
ZWdyb3VuZEFjdGl2aXR5IG9yIEJhY2tncm91bmRBY3Rpdml0eSBvYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBzaW1wbHkgYSB0b2tlbi4gQXMgYSByZXN1bHQsIHdlIGFyZSBub3cgYWJsZSB0byBs
b2cgd2hlbiBhIGdpdmVuIGFjdGl2aXR5IHRoYXQgcHJldmVudHMgc3VzcGVuc2lvbgorICAgICAg
ICBiZWdpbnMgYW5kIGVuZHMsIHdpdGggYSB1c2VyLWZyaWVuZGx5IHN0cmluZy4gQWxzbywgd2hl
biB0aGUgYXNzZXJ0aW9uIGdldHMgaW52YWxpZGF0ZWQsIGl0IHdpbGwKKyAgICAgICAgaW52YWxp
ZGF0ZSBhbGwgdGhlc2UgcGVuZGluZyBhY3Rpdml0aWVzIGFuZCB3ZSdsbCBzZWUgaW4gdGhlIGxv
Z3MgdGhlIG5hbWUgb2YgdGhlIGFjdGl2aXRpZXMgdGhhdAorICAgICAgICB3ZXJlIHN0aWxsIGdv
aW5nIG9uIHVwb24gaW52YWxpZGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6c2VuZEludm9jYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlSXNMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Jlc3VtZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tNYXA6OnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFN5bmNBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
OjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
flByb2Nlc3NUaHJvdHRsZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjph
ZGRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFj
dGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFs
bEFjdGl2aXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3Rl
ZEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0
QXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1aUFz
c2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6fkFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZp
dHk6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpB
Y3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6
OnNob3VsZEJlUnVubmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpiYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQ
cm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFByb2Nlc3NSZXF1ZXN0VG9TdXNwZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGlj
YXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzaHV0RG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
SW5wdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1l
bnRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJv
bGxlcnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3
b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKToKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRoQXN5bmNSZXBseSgpIHRvIHNpbXBs
aWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCmluZGV4IDg0YjQ3MGM5NTI2
NGJkN2RkMjA4MGMyNzZkNjFmZTJjMDZmNTU5NTYuLjU0Y2RjMDMwYTJlOWMxYWNjYzVjNGVjMzlh
YjliMzM1ZGI0ZjA2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBSZW1vdGVPYmplY3RSZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1lc3Nh
Z2VTZW5kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25J
RCgpID0gMDsKIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVVu
dXNlZFJlcGx5QmxvY2sodWludDY0X3QgcmVwbHlJRCk7CiAKICAgICBXZWFrT2JqQ1B0cjxfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeT4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeTsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9w
ZW5kaW5nUmVwbGllczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9wZW5kaW5nUmVwbGllczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDMwZWM0ZTcwNjNiMzJj
ZGI5ZmZhNzdhNTU0NDc3MDkwYjQ0MDRkM2IuLmU0OGM5Mjg1Nzc4NWMzY2Q4NTA5YjFiMWMzZTI3
MTliMTliZWM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBSZW1vdGVP
YmplY3RSZWdpc3RyeTo6c2VuZEludm9jYXRpb24oY29uc3QgUmVtb3RlT2JqZWN0SW52b2NhdGlv
biYgaW52b2NhdGkKIAogICAgIGlmIChhdXRvKiByZXBseUluZm8gPSBpbnZvY2F0aW9uLnJlcGx5
SW5mbygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nUmVwbGllcy5jb250YWlucyhyZXBs
eUluZm8tPnJlcGx5SUQpKTsKLSAgICAgICAgbV9wZW5kaW5nUmVwbGllcy5hZGQocmVwbHlJbmZv
LT5yZXBseUlELCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgIG1fcGVu
ZGluZ1JlcGxpZXMuYWRkKHJlcGx5SW5mby0+cmVwbHlJRCwgYmFja2dyb3VuZEFjdGl2aXR5KCJS
ZW1vdGVPYmplY3RSZWdpc3RyeSBpbnZvY2F0aW9uIl9zKSk7CiAgICAgfQogCiAgICAgbWVzc2Fn
ZVNlbmRlcigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpJbnZva2VNZXRo
b2QoaW52b2NhdGlvbiksIG1lc3NhZ2VEZXN0aW5hdGlvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKaW5kZXggNDU1NWM2YjMxZDFlZTU0
YzU0MmQ2ZDIwMzM4OTNjMDFiZjA3MTY5Ny4uNWQ5YjkxYzg1MGYyNWEzZjlkMTk2ZDc4OGE4MTg1
OWY4N2RlODFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha09iakNQdHI8aWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2
aXR5OwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCAyNTY2M2FkOTQxYmE3NTcxNzA0YmUwMmJh
M2UzNzY4ODljMzYwYWE2Li42NTFiNzAxNGJlZjU5NjQyOWFjMTViYzc4M2U5MWQ4NDdmYjA5NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQpAQCAtMjY4LDggKzI2OCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRv
a2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdl
KCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBw
cmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKLSAgICAg
ICAgbV9hY3Rpdml0eVRva2VuID0gd2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7CisgICAg
ICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CiAgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CkBAIC0yNzksOSArMjc5LDkgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nh
cnkoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICBpZiAobV9hY3Rpdml0eSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5c3RlbSBw
cmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwotICAgICAgICBtX2FjdGl2aXR5VG9r
ZW4gPSBudWxscHRyOworICAgICAgICBtX2FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRmZGU3Yzk4NjgwMWQ4YzE4
NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uNjc1ZTNhMGM1YjYwMGFiMGJmZjRhMDQ4NzUxNTI0NjQ4
YjY1OTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RQYWlu
dCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIE5ldHdvcmtB
Y3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiB7IExvYWRDb21wbGV0ZWQsIFNjcmVlbkxvY2tlZCB9
OwotICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRv
a2VuUmVsZWFzZVJlYXNvbik7CisgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlSZWxlYXNl
UmVhc29uIHsgTG9hZENvbXBsZXRlZCwgU2NyZWVuTG9ja2VkIH07CisgICAgdm9pZCByZWxlYXNl
TmV0d29ya0FjdGl2aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24pOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN3YXBX
ZWJQcm9jZXNzZXMoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
dm9pZCByZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW5BZnRlckxvYWRDb21wbGV0aW9uKCkgeyBy
ZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVh
c29uOjpMb2FkQ29tcGxldGVkKTsgfQorICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFm
dGVyTG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHkoTmV0d29ya0FjdGl2
aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBsZXRlZCk7IH0KICNlbmRpZgogCiAgICAgV0tXZWJW
aWV3ICptX3dlYlZpZXc7CkBAIC0yNTgsOCArMjU4LDggQEAgcHJpdmF0ZToKICAgICB9IG1faGlz
dG9yeURlbGVnYXRlTWV0aG9kczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOwot
ICAgIFJ1bkxvb3A6OlRpbWVyPE5hdmlnYXRpb25TdGF0ZT4gbV9yZWxlYXNlQWN0aXZpdHlUaW1l
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5PiBtX25ldHdvcmtBY3Rpdml0eTsKKyAgICBSdW5Mb29wOjpUaW1lcjxOYXZpZ2F0aW9uU3Rh
dGU+IG1fcmVsZWFzZU5ldHdyb2tBY3Rpdml0eVRpbWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTRh
ZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVlNjhlMTNlNTJlMDFiMy4uOThjZWNmNmFkODhmMWI5YjEz
ZjJlNTRmODE5YTMyZGMzZDhjYjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvblN0YXRlKFdLV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcygpCiAgICAgLCBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMoKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtB
Y3Rpdml0eVRva2VuQWZ0ZXJMb2FkQ29tcGxldGlvbikKKyAgICAsIG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6
cmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFmdGVyTG9hZENvbXBsZXRpb24pCiAjZW5kaWYKIHsKICAg
ICBBU1NFUlQobV93ZWJWaWV3LT5fcGFnZSk7CkBAIC0xMjA5LDIxICsxMjA5LDIxIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5nKCkKIH0KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0
eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiByZWFzb24pCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3JrQWN0aXZpdHlSZWxl
YXNlUmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKKyAgICBpZiAo
IW1fbmV0d29ya0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKHJlYXNv
bikgewotICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpMb2FkQ29t
cGxldGVkOgorICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBs
ZXRlZDoKICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29y
a0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CisgICAgY2FzZSBOZXR3
b3JrQWN0aXZpdHlSZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3Vu
ZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxvY2tlZCIsIHRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsK
LSAgICBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyLnN0b3AoKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgbV9yZWxlYXNlTmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwog
fQogI2VuZGlmCiAKQEAgLTEyMzEsMjMgKzEyMzEsMjMgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OmRpZENoYW5nZUlzTG9hZGluZygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAobV93ZWJWaWV3LT5fcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmlzTG9hZGluZygpKSB7Ci0gICAg
ICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgbmV0d29yayBhY3Rpdml0eSB0b2tlbiBpZiBhIGxvYWQg
c3RhcnRzIGFmdGVyIHRoZSBzY3JlZW4gaGFzIGJlZW4gbG9ja2VkLgorICAgICAgICAvLyBXZSBk
byBub3Qgc3RhcnQgYSBuZXR3b3JrIGFjdGl2aXR5IGlmIGEgbG9hZCBzdGFydHMgYWZ0ZXIgdGhl
IHNjcmVlbiBoYXMgYmVlbiBsb2NrZWQuCiAgICAgICAgIGlmIChbVUlBcHAgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX3JlbGVhc2VB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1f
d2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAg
ICAgIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIuc3RvcCgpOworICAgICAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9h
Y3Rpdml0eVRva2VuKSB7CisgICAgICAgIGlmICghbV9uZXR3b3JrQWN0aXZpdHkpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRh
a2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFy
dGVkIiwgdGhpcyk7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3dlYlZpZXctPl9w
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2Vzcygp
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9hY3Rpdml0eVRva2VuKSB7CisgICAgfSBlbHNlIGlmIChtX25l
dHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBz
byB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tncm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25k
cyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAg
ICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJv
YmxlbS8yNzkxMDk2ND4uCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2Ut
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2
aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBz
b29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9y
ZWxlYXNlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoM19zKTsKKyAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RhcnRPbmVTaG90KDNfcyk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTEzNTAsOCArMTM1MCw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJv
Y2Vzc2VzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91
ciBiYWNrZ3JvdW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9u
ZS4KLSAgICBpZiAobV9hY3Rpdml0eVRva2VuKQotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKKyAgICBpZiAobV9uZXR3b3JrQWN0aXZpdHkpCisgICAgICAgIG1fbmV0d29ya0Fj
dGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCmlu
ZGV4IDIwY2Q1M2M5NDQzOGJkMWI3OTRjZDQyMzE0ZWIyZTZjYjQ1YzU5ZTMuLjQ5N2FiNzIyMDBj
ZDdkZGFmYjE2M2M2YzZkN2VhNjc2YjI3YzA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Qcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5Ojp0YWtlQmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKQorc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eT4gVUlSZW1vdGVPYmplY3RSZWdpc3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5
KEFTQ0lJTGl0ZXJhbCBuYW1lKQogewotICAgIHJldHVybiBtX3BhZ2UucHJvY2VzcygpLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgcmV0dXJuIG1fcGFnZS5wcm9j
ZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpOwogfQogCiBVSVJlbW90
ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oCmluZGV4IGM0MGI0NTM2NjNjOWZlNTllMDZhODU1YmVkNzYzYjhmM2RiZGRmM2YuLmQ2Mzg4
Mjc1NTQwNzUxYmIxZjA2MGJhOTdjOWU5N2U2MGFiYTY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1l
c3NhZ2VTZW5kZXIoKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25JRCgp
IGZpbmFsOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIHRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQppbmRleCA4MzQzNWY5NmExMDU0ODVhYWFlMmVjMjg3MzcxNTVkNzBmMDgwNDZkLi5mZTgx
OTRmNjQ3NDQ2M2FiNmU3ZmIxOGJhOWUxYmFlYWI1OTAzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpCiAg
ICAgLy8gVGhlIFdlYlByb2Nlc3Mgd2FzIGF3YWtlbmVkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu
IHRoZSBVSVByb2Nlc3MuIFRha2Ugb3V0IGFuIGFzc2VydGlvbiBmb3IgYQogICAgIC8vIGxpbWl0
ZWQgZHVyYXRpb24gdG8gYWxsb3cgd2hhdGV2ZXIgdGFzayBuZWVkcyB0byBiZSBhY2NvbXBsaXNo
ZWQgdGltZSB0byBjb21wbGV0ZS4KICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIFByb2Nlc3Mgd2FzIHVu
ZXhwZWN0ZWRseSByZXN1bWVkLCBzdGFydGluZyBiYWNrZ3JvdW5kIGFjdGl2aXR5IiwgdGhpcyk7
Ci0gICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRv
a2VuID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0geworICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBy
b2Nlc3Mgd2FzIHVuZXhwZWN0ZWRseSByZXN1bWVkIl9zKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5k
IGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwogICAgIG1fdW5l
eHBlY3RlZEFjdGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVT
aG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4
cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCmluZGV4IGIyNzc5MjBkOWU4MDA2MWQ2ZGRlNTJjNGM1YWRkOGI0NTJkZDU0MDYu
LmE5MzVjZmVkYjg0NTQwYWQ5NWQ4ZGVjYTA4MGI0YjAxMWU2MGYxZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC02OSwxNyArNjksMTcgQEAgcHJvdGVj
dGVkOgogICAgIHN0cnVjdCBUeXBlVGFnIHsgfTsKICAgICB0eXBlZGVmIGNvbnN0IFR5cGVUYWcq
IFR5cGU7CiAKLSAgICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAg
ICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5KQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fY2FsbGJhY2tJRChDYWxsYmFja0lEOjpnZW5lcmF0ZUlE
KCkpCi0gICAgICAgICwgbV9hY3Rpdml0eVRva2VuKGFjdGl2aXR5VG9rZW4pCisgICAgICAgICwg
bV9hY3Rpdml0eShXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBt
X2FjdGl2aXR5OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KQEAgLTg3LDkgKzg3LDkg
QEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rp
b247CiAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVu
Y3Rpb24mJiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5ID0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
YWN0aXZpdHkpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdlbmVyaWND
YWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgICAgICA6IENh
bGxiYWNrQmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCisgICAgR2VuZXJpY0NhbGxiYWNrKENh
bGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eT4mJiBhY3Rpdml0eSkKKyAgICAgICAgOiBDYWxsYmFja0Jh
c2UodHlwZSgpLCBXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1v
dmUoY2FsbGJhY2spKQogICAgIHsKICAgICB9CkBAIC0xODksOSArMTg5LDkgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxiYWNrSUQgcHV0
KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQorICAgIENhbGxiYWNrSUQg
cHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIFdURk1vdmUoYWN0aXZpdHkpKTsK
ICAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhZjVjNTUyOGIyN2VmMDRkMDM5MjAwNzE3N2VlYTg0ZmUyODZlMTQxLi42MGUy
Y2IyNDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8VwogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25J
RF0gKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgYWN0aXZpdHkgPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBzZXNzaW9uSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOwogICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25JRF0gKCkgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCBhY3Rp
dml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBX
ZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11
dGFibGUgeworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
ZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBA
IC0zMDIsOSArMzAyLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQogICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaW52YWxpZGF0
ZSgpOwogI2VuZGlmCiAKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0
cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKICAgICAK
LSAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOworICAgIG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgPSAwOwog
CiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xMDkzLDEyICsx
MDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIHsKICAgICBpZiAoIWlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9j
ZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdv
cmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAg
bV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CisgICAgICAgIG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcykgeworICAgIGlmICghbV9h
Y3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcykgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsK
LSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2Vk
RmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zKTsKICAgICB9CiB9CiAKQEAgLTExMDcsMTEgKzExMDcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcygpCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIDApOwogICAgIAogICAgICsrbV9zeW5jQWxsQ29v
a2llc0NvdW50ZXI7Ci0gICAgaWYgKG1fc3luY0FsbENvb2tpZXNUb2tlbikKKyAgICBpZiAobV9z
eW5jQWxsQ29va2llc0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IHN5bmNpbmcgY29va2llcyIsIHRoaXMpOwotICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9zeW5jQWxsQ29va2ll
c0FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeW5jaW5nIGNvb2tp
ZXMiX3MpOwogfQogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29v
a2llcygpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFN5bmNBbGxDb29raWVzKCkKICAgICAtLW1fc3luY0FsbENvb2tpZXNDb3VudGVyOwogICAgIGlm
ICghbV9zeW5jQWxsQ29va2llc0NvdW50ZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRvbmUgc3lu
Y2luZyBjb29raWVzIiwgdGhpcyk7Ci0gICAgICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IG51
bGxwdHI7CisgICAgICAgIG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IGUxMGYwZTAyYjdjMzdiNzc1MDFiMTUxNjJkZWYxZDY4YTdm
ZmMyYzkuLjQ3MjYyZWJmZmI0Njc0ZWI1YzcwMDM2ODkzZjdiMDgwM2I0YWMyNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yNzcsOCArMjc3LDggQEAgcHJpdmF0ZToKICAgICBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogI2VuZGlmCiAgICAg
UHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fc3luY0FsbENvb2tpZXNU
b2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eTsKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7
IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApp
bmRleCA3YzQ1ZjIwMWRmNzU0NTQ0MzRmY2U4ZWRiZjVmYmM4M2I4MjhlNTY5Li4wYzNiM2EyOTJm
ZjI5OTIxOTZlMGU3ZDBmMzAzNzFmMmE3OWNiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtNDIsMTcgKzQyLDU0IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKQogUHJvY2Vzc1Rocm90dGxl
cjo6UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNzLCBib29s
IHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICAsIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZQcm9jZXNzVGhyb3R0bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmly
ZWQpCi0gICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsgfSkKLSAgICAsIG1fYmFja2dyb3VuZENvdW50ZXIo
W3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOyB9KQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKHNob3VsZFRha2VVSUJhY2tn
cm91bmRBc3NlcnRpb24pCiB7CiB9CisKK1Byb2Nlc3NUaHJvdHRsZXI6On5Qcm9jZXNzVGhyb3R0
bGVyKCkKK3sKKyAgICBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7
CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVB
c3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2
aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOwor
fQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEZvcmVncm91bmRBY3Rp
dml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFj
dGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkp
Cit7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFjdGl2aXR5KTsKKyAgICB1
cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6Omlu
dmFsaWRhdGVBbGxBY3Rpdml0aWVzKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgQkVHSU4iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzKTsKKyAgICB3aGlsZSAo
IW1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICB3aGlsZSAoIW1fYmFja2dy
b3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fYmFja2dyb3VuZEFjdGl2aXRp
ZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgRU5EIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7Cit9CiAgICAgCiBBc3Nl
cnRpb25TdGF0ZSBQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKCkKIHsK
LSAgICBpZiAobV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlmICghbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6
Rm9yZWdyb3VuZDsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlm
ICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZDsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3RhdGU6OlN1c3Bl
bmRlZDsKIH0KQEAgLTY4LDcgKzEwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNz
ZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUpCiAgICAgaWYgKG1fYXNzZXJ0aW9u
LT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNl
dEFzc2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUg
KGZvcmVncm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRBY3Rpdml0aWVzOiAlbHUpIiwg
bV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcywgbmV3U3RhdGUsIG1fZm9yZWdyb3VuZENvdW50ZXIu
dmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNldEFz
c2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZv
cmVncm91bmRBY3Rpdml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG1fcHJv
Y2Vzc0lkZW50aWZpZXIsIHRoaXMsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNp
emUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5z
ZXRTdGF0ZShuZXdTdGF0ZSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5l
d1N0YXRlKTsKIH0KQEAgLTE2Myw2ICsyMDAsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnVp
QXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dWlBc3NlcnRp
b25XaWxsRXhwaXJlSW1taW5lbnRseSgpIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7CiAg
ICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7Cisg
ICAgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1l
b3V0VGltZXIuc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmgKaW5kZXggOTc2MjI4YjQ5N2EwOGI1NDQ5OWFkMzY4OWJkNGQ0YTE0YjQwOWEyNS4u
ZWE3M2MwZmE4MjRjOTRiMWI5ZTlmNzgwNWM1MzVlNDRlMGI4NWM3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRl
ZiBQcm9jZXNzVGhyb3R0bGVyX2gKICNkZWZpbmUgUHJvY2Vzc1Rocm90dGxlcl9oCiAKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgotCiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ3LDIwICs0Nyw1MiBAQCBjbGFzcyBQcm9jZXNzVGhyb3R0
bGVyQ2xpZW50OwogCiBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFByb2Nlc3NUaHJvdHRsZXI+LCBwcml2YXRlIFByb2Nlc3NBc3NlcnRpb246OkNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgZW51bSBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci0g
ICAgdHlwZWRlZiBSZWZDb3VudGVyPEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXJUeXBlPiBGb3Jl
Z3JvdW5kQWN0aXZpdHlDb3VudGVyOwotICAgIHR5cGVkZWYgRm9yZWdyb3VuZEFjdGl2aXR5Q291
bnRlcjo6VG9rZW4gRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW47Ci0gICAgZW51bSBCYWNrZ3JvdW5k
QWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci0gICAgdHlwZWRlZiBSZWZDb3VudGVyPEJhY2tncm91
bmRBY3Rpdml0eUNvdW50ZXJUeXBlPiBCYWNrZ3JvdW5kQWN0aXZpdHlDb3VudGVyOwotICAgIHR5
cGVkZWYgQmFja2dyb3VuZEFjdGl2aXR5Q291bnRlcjo6VG9rZW4gQmFja2dyb3VuZEFjdGl2aXR5
VG9rZW47Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyKFByb2Nlc3NUaHJvdHRsZXJDbGllbnQmLCBi
b29sIHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pOwotCi0gICAgRm9yZWdyb3VuZEFj
dGl2aXR5VG9rZW4gZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdDsKLSAgICBCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbiBiYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OworICAgIH5Q
cm9jZXNzVGhyb3R0bGVyKCk7CisKKyAgICBlbnVtIGNsYXNzIEFjdGl2aXR5VHlwZSB7IEJhY2tn
cm91bmQsIEZvcmVncm91bmQgfTsKKyAgICB0ZW1wbGF0ZTxBY3Rpdml0eVR5cGUgdHlwZT4gY2xh
c3MgQWN0aXZpdHkgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIEFjdGl2aXR5KFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlciwgQVNDSUlM
aXRlcmFsIG5hbWUpCisgICAgICAgICAgICA6IG1fdGhyb3R0bGVyKCZ0aHJvdHRsZXIpCisgICAg
ICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdHRsZXIu
YWRkQWN0aXZpdHkoKnRoaXMpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNzVGhyb3R0bGVyIFN0YXJ0aW5nICV7cHVibGlj
fXMgYWN0aXZpdHkgJXAgLyAnJXtwdWJsaWN9cyciLCBtX3Rocm90dGxlci0+bV9wcm9jZXNzSWRl
bnRpZmllciwgbV90aHJvdHRsZXIsIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8g
ImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCB0aGlzLCBtX25hbWUuY2hhcmFjdGVycygpKTsK
KyAgICAgICAgfQorCisgICAgICAgIH5BY3Rpdml0eSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChpc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3Rocm90dGxlcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXI7
CisKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKCFtX3Rocm90dGxlcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXIgRW5kaW5nICV7cHVibGljfXMg
YWN0aXZpdHkgJXAgLyAnJXtwdWJsaWN9cyciLCBtX3Rocm90dGxlci0+bV9wcm9jZXNzSWRlbnRp
ZmllciwgbV90aHJvdHRsZXIsIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZv
cmVncm91bmQiIDogImJhY2tncm91bmQiLCB0aGlzLCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAg
ICAgICAgICAgIG1fdGhyb3R0bGVyLT5yZW1vdmVBY3Rpdml0eSgqdGhpcyk7CisgICAgICAgICAg
ICBtX3Rocm90dGxlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBQcm9jZXNzVGhy
b3R0bGVyKiBtX3Rocm90dGxlciB7IG51bGxwdHIgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG1f
bmFtZTsKKyAgICB9OworCisgICAgdXNpbmcgRm9yZWdyb3VuZEFjdGl2aXR5ID0gQWN0aXZpdHk8
QWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9yZWdyb3Vu
ZEFjdGl2aXR5PiBmb3JlZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpOworCisgICAg
dXNpbmcgQmFja2dyb3VuZEFjdGl2aXR5ID0gQWN0aXZpdHk8QWN0aXZpdHlUeXBlOjpCYWNrZ3Jv
dW5kPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5k
QWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpOwogICAgIAogICAgIHZvaWQgZGlkQ29ubmVjdFRv
UHJvY2VzcyhQcm9jZXNzSUQpOwotICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9yZWdyb3VuZENvdW50ZXIudmFsdWUoKSB8fCBtX2JhY2tncm91bmRDb3VudGVy
LnZhbHVlKCk7IH0KKyAgICBib29sIHNob3VsZEJlUnVubmFibGUoKSBjb25zdCB7IHJldHVybiBt
X2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSB8fCBtX2JhY2tncm91bmRBY3Rpdml0aWVzLnNp
emUoKTsgfQogCiBwcml2YXRlOgogICAgIEFzc2VydGlvblN0YXRlIGV4cGVjdGVkQXNzZXJ0aW9u
U3RhdGUoKTsKQEAgLTcxLDYgKzEwMywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFByZXBh
cmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQpOwogICAgIHZvaWQgcHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCk7CiAKKyAgICB2b2lkIGFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0
eSYpOworICAgIHZvaWQgYWRkQWN0aXZpdHkoQmFja2dyb3VuZEFjdGl2aXR5Jik7CisgICAgdm9p
ZCByZW1vdmVBY3Rpdml0eShGb3JlZ3JvdW5kQWN0aXZpdHkmKTsKKyAgICB2b2lkIHJlbW92ZUFj
dGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYpOworICAgIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2
aXRpZXMoKTsKKwogICAgIC8vIFByb2Nlc3NBc3NlcnRpb25DbGllbnQKICAgICB2b2lkIHVpQXNz
ZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKSBvdmVycmlkZTsKIApAQCAtODAsMjIgKzExOCwy
MiBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NJRCBtX3Byb2Nlc3NJZGVudGlmaWVyIHsgMCB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKICAgICBS
dW5Mb29wOjpUaW1lcjxQcm9jZXNzVGhyb3R0bGVyPiBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0
VGltZXI7Ci0gICAgRm9yZWdyb3VuZEFjdGl2aXR5Q291bnRlciBtX2ZvcmVncm91bmRDb3VudGVy
OwotICAgIEJhY2tncm91bmRBY3Rpdml0eUNvdW50ZXIgbV9iYWNrZ3JvdW5kQ291bnRlcjsKKyAg
ICBIYXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXM7Cisg
ICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRBY3Rpdml0aWVzOwog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CiAgICAg
Ym9vbCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247CiB9OwogCi1pbmxpbmUgUHJv
Y2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6
Zm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdAoraW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90
dGxlcjo6Zm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8Rm9yZWdyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBGb3JlZ3JvdW5kQWN0aXZp
dHlUb2tlbihtX2ZvcmVncm91bmRDb3VudGVyLmNvdW50KCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvcmVncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCi1pbmxpbmUgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6YmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdAoraW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90dGxl
cjo6YmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBzdGQ6OnVuaXF1ZV9w
dHI8QmFja2dyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbihtX2JhY2tncm91bmRDb3VudGVyLmNvdW50KCkpOwotfQotICAgIAorICAgIHJldHVybiBt
YWtlVW5pcXVlPEJhY2tncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKwogI2VuZGlmIC8vIFByb2Nlc3NUaHJvdHRsZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDdlYzVh
NmIxYjBkZTQ3ZmE2N2MyN2EzODcxYTA2Mzc5YTgyNTI3YTEuLjdlMTUwZTM3ZTdiMDU3OGM1NjNl
NjExNjlmOGY5MThjOTczY2Q4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlBy
b2Nlc3NQcm8KICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9wcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50KHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSkKKyAgICAsIG1fcHJvdmlzaW9uYWxMb2Fk
QWN0aXZpdHkobV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlByb3Zp
c2lvbmFsIExvYWQiX3MpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94eTogcGFnZVByb3h5SUQ9JSIgUFJJ
dTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIiBzdXNw
ZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdl
SUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDYzNGZi
NzVlODczOGUxNGU0MjdkOTc4YmM4ZGVmZjY0NTEyZjFlZjQuLjYyN2U2OTFmNjI0ZDFlYjc4Mzhh
ODhjNjVlOWI2YzcxY2JkZDI2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG1fYWNjZXNzaWJpbGl0eVRva2VuOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
biBtX3N1c3BlbnNpb25Ub2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2aXR5OwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
CmluZGV4IDcyOGQ4YjBlNWNlNzI1MTgxM2IxOTc2Y2Q0MjA0ZGE2MTUzOTM1OGQuLmI3YjA0Njk1
OTI1ZGM2OGZkYzY1NjM1OGU1OWYxNDIxNWU4NWNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKFdURjo6RnVuY3Rpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmQoTWVz
c2FnZXM6OkRyYXdpbmdBcmVhOjpBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQobV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVh
OjpBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIHByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdp
bmciX3MpKSkpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omhp
ZGVDb250ZW50VW50aWxQZW5kaW5nVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDdmODljZWVmYzNmMjZkNmRkYTYwNDdmZmVk
NDE3YWNlYmQwNDQ5MDMuLmVhYmVmOWE3OGQwMTQ3NmM4NGJlMzRlN2ExMWU0NDE2YjEyNTBhMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMTAyLDcgKzEwMiw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5
KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX3Nob3Vs
ZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShzaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiAg
ICAgLCBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU3Vz
cGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQpCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkKKyAgICAsIG1fc3VzcGVuc2lvbkFjdGl2aXR5KG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIHN1c3BlbnNpb24gZm9y
IGJhY2svZm9yd2FyZCBjYWNoZSJfcykpCiAjZW5kaWYKIHsKICAgICBhbGxTdXNwZW5kZWRQYWdl
cygpLmFkZCh0aGlzKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94
eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNp
bwogICAgIG1fc3VzcGVuc2lvblRpbWVvdXRUaW1lci5zdG9wKCk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0cjsKKyAgICBtX3N1c3Bl
bnNpb25BY3Rpdml0eSA9IG51bGxwdHI7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaAppbmRleCBlZTJjNmEzNzUyNGYyYzkxYWRhZmVhYWJjZjc5M2FkZTZkNjFkOGQ3
Li43MDJlOTYyOTY4ZTYxYTZlODYxNzFmOWFhNDBhZmNkZGJkMGE4ZWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+
IG1fcmVhZHlUb1Vuc3VzcGVuZEhhbmRsZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8U3VzcGVuZGVk
UGFnZVByb3h5PiBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXI7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N1
c3BlbnNpb25Ub2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5PiBtX3N1c3BlbnNpb25BY3Rpdml0eTsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5j
cHAKaW5kZXggNTlmYmVkNWYwY2NlYmYxZTlhZTUyOTliYWM4YTZkYWNlNWFiMzU2ZS4uYWU1NmU1
MzNhNjBiMjdmNzljYzFhZTNlNzY2YWM4MTc0OWE3ZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eSgpCiB7CiAgICAgaWYgKG1fYmFja0ZvcndhcmRJdGVtSUQgJiYgIW1fc3VzcGVuZGVkUGFnZSkg
ewogICAgICAgICBhdXRvJiBwcm9jZXNzID0gdGhpcy0+cHJvY2VzcygpOwotICAgICAgICBwcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQ
YWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbdG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9y
d2FyZEl0ZW1JRCksIFthY3Rpdml0eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJDbGVhcmluZyBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkiX3MpXSB7IH0pOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggMWIzZTE1NWFkOWQ0YzJhMmExMmZkZWM2NjQ2NWUwYzNkZTMyZWU2Ni4u
ZGMyY2Q2OTYzNTEyODE0Y2JlZGIxMDhmYmI1ZDQzMmNkMjZkYTVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0g
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXShWZWN0b3I8U3RyaW5nPiYmIGhvc3RuYW1l
cykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzIl9zKV0oVmVjdG9yPFN0cmlu
Zz4mJiBob3N0bmFtZXMpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1v
dmUoaG9zdG5hbWVzKSk7CiAgICAgfSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9
IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nl
c3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVD
b29raWUoc2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShz
ZXNzaW9uSUQsIGNvb2tpZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llIl9zKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXYWxsVGltZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVu
c3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UiX3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb24KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVu
dFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFp
bkRvY3VtZW50VVJMKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29v
a2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3Mp
XSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBA
IC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxi
YWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxDb29r
aWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25J
RCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZp
dHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29v
a2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVz
KSk7CiAgICAgfSk7CiB9CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGEKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29y
a1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRD
b29raWVzIl9zKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKICAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKICAgICB9KTsKIH0KQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZQogI2VuZGlmCiAKICAgICBhdXRvJiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0g
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXSgpIG11dGFibGUgeworICAgIG5l
dHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kiX3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhU
VFBDb29raWUKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1By
b2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIG11
dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tG
dW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1By
b2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhh
MDZkN2YyMzkwYTEzNmJjZWRjNzAxOTg4MTExMTg2MjBiYjc4MmYuLjE3ZTRhNjc4OWE3OTY5MmU2
NjhkZTFjYWExOTc4NzA2MGY1MGU1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTA1NSw3ICsxMDU1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9z
ZSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24n
dCBob2xkIGEgcHJvY2VzcyBhc3NlcnRpb24gYWZ0ZXIgZ2V0dGluZyBjbG9zZWQuCi0gICAgbV9h
Y3Rpdml0eVRva2VuID0gbnVsbHB0cjsKKyAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0
cjsKKyAgICBtX2lzQXVkaWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2lzQ2FwdHVyaW5n
QWN0aXZpdHkgPSBudWxscHRyOworICAgIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5
QWN0aXZpdHkgPSBudWxscHRyOwogI2VuZGlmCiAKICAgICBzdG9wQWxsVVJMU2NoZW1lVGFza3Mo
KTsKQEAgLTE5MjksMjMgKzE5MzIsNDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90
dGxlU3RhdGUoKQogICAgICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBtX3Byb2Nl
c3MtPnByb2Nlc3NQb29sKCkudXNlck9ic2VydmFibGVQYWdlQ291bnQoKTsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0
YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpOwotICAgIGJvb2wg
aXNBdWRpYmxlID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQXVk
aWJsZSk7Ci0gICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgJiYgIW1fYWx3YXlzUnVuc0F0Rm9yZWdy
b3VuZFByaW9yaXR5ICYmICFpc0NhcHR1cmluZ01lZGlhICYmICFpc0F1ZGlibGUpIHsKLSAgICAg
ICAgaWYgKG1fYWN0aXZpdHlUb2tlbikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBp
cyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIG5v
IGxvbmdlciB2aXNpYmxlIik7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRy
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghbV9hY3Rpdml0eVRva2VuKSB7Ci0gICAgICAg
IGlmIChpc1ZpZXdWaXNpYmxlKCkpCisgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgeworICAgICAg
ICBpZiAoIW1faXNWaXNpYmxlQWN0aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFs
aWQoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVu
c2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIHZpc2libGUiKTsKLSAgICAgICAgZWxz
ZSBpZiAoaXNBdWRpYmxlKQorICAgICAgICAgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHZpc2libGUiX3Mp
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2lzVmlzaWJsZUFjdGl2aXR5KSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJv
dHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJsZSIpOworICAgICAgICBtX2lzVmlz
aWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBib29sIGlzQXVkaWJsZSA9IG1f
YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOworICAgIGlm
IChpc0F1ZGlibGUpIHsKKyAgICAgICAgaWYgKCFtX2lzQXVkaWJsZUFjdGl2aXR5IHx8ICFtX2lz
QXVkaWJsZUFjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgcGxheWlu
ZyBhdWRpbyIpOwotICAgICAgICBlbHNlIGlmIChpc0NhcHR1cmluZ01lZGlhKQorICAgICAgICAg
ICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3Vu
ZEFjdGl2aXR5KCJWaWV3IGlzIHBsYXlpbmcgYXVkaW8iX3MpOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChtX2lzQXVkaWJsZUFjdGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3Mg
aXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgbm8gbG9u
Z2VyIHBsYXlpbmcgYXVkaW8iKTsKKyAgICAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgfQorCisgICAgYm9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpOworICAgIGlmIChpc0Nh
cHR1cmluZ01lZGlhKSB7CisgICAgICAgIGlmICghbV9pc0NhcHR1cmluZ0FjdGl2aXR5IHx8ICFt
X2lzQ2FwdHVyaW5nQWN0aXZpdHktPmlzVmFsaWQoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJ
UHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNh
cHR1cmUgaXMgYWN0aXZlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVBy
b2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gZXZlbiB0aG91Z2ggdGhlIHZp
ZXcgaXMgbm90IHZpc2libGUgYmVjYXVzZSBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eSBpcyB0cnVlIik7Ci0gICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAgICAgICAgIG1faXNDYXB0dXJp
bmdBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJW
aWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1f
aXNDYXB0dXJpbmdBY3Rpdml0eSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVh
c2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBubyBs
b25nZXIgYWN0aXZlIik7CisgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7Cisg
ICAgICAgIGlmICghbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSB8fCAh
bV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0
aW9uIGJlY2F1c2UgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgdHJ1ZSIpOwor
ICAgICAgICAgICAgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGFsd2F5cyBydW5z
IGF0IGZvcmVncm91bmQgcHJpb3JpdHkiX3MpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICht
X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5KSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRl
OiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBt
X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBpcyBubyBsb25nZXIgdHJ1ZSIpOworICAg
ICAgICBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5ID0gbnVsbHB0cjsK
ICAgICB9CiAjZW5kaWYKIH0KQEAgLTE5ODUsNyArMjAxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0
aXZpdHlTCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBIYWlsIE1hcnkgY2hlY2su
IFNob3VsZCBub3QgYmUgcG9zc2libGUgKGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSBzaG91
bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2libGUsCiAgICAgLy8gYW5kIGlmIHZpc2libGUgd2Ug
c2hvdWxkIGJlIGhvbGRpbmcgYW4gYXNzZXJ0aW9uKSAtIGJ1dCB3ZSBzaG91bGQgbmV2ZXIgYmxv
Y2sgb24gYSBzdXNwZW5kZWQgcHJvY2Vzcy4KLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikgewor
ICAgIGlmICghbV9pc1Zpc2libGVBY3Rpdml0eSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMDgsNyArMjAzNCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9h
cmRFdmVudFZhbGlkLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6
c2V0SW5pdGlhbEZvY3VzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJv
YXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTIwMzMsNyArMjA1
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBj
b21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTIxMzEsNyArMjE1Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3Qg
U3RyaW5nJiBhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVk
aXRDb21tYW5kIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpF
eGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtMjE1NSw3ICsyMTgxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVu
Y3Rpb248dm9pZChjb25zdCBXZWIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzcxMyw3ICszNzM5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMs
IGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzIl9zKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhX
VEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzczOCwxNCArMzc2NCwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFt
ZSgpLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZy
YW1lIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM3NTYsNyArMzc4Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zNzY3LDcgKzM3OTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUs
IFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZSJfcykpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmlu
Z0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zNzc5LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzU3RyaW5nIl9zKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQpAQCAt
MzgwMyw3ICszODI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlIl9zKSk7CiAgICAg
bV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxi
YWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zODE1LDcgKzM4NDEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQiX3MpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdD
YWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CkBAIC0zODI4LDcgKzM4NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29u
dGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhcwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERh
dGEiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRl
bnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgpAQCAt
Mzg0MCw3ICszODY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAt
Mzg1MSw3ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zODYy
LDcgKzM4ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSJfcykpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IApAQCAtMzg3Myw3ICszODk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0
YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zODg0LDcgKzM5MTAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUs
IEZ1bmN0aW9uPHZvaWQgKEFQSQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVBy
b3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzkxNyw3ICszOTQzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNr
KQogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Zm9yY2VS
ZXBhaW50Il9zKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0
ZU9uTmV4dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
b3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTcyMDksNyArNzIz
NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgbV93YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2lu
Z0VsZW1lbnQgPSBmYWxzZTsKICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRz
ID0gbnVsbHB0cjsKLSAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOworCisgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2Fsd2F5c1J1
bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5ID0gbnVsbHB0cjsKICNlbmRpZgogCiAgICAg
bV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbnVsbHB0cjsKQEAgLTc4MjgsNyArNzg1OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpkcmF3VG9Q
REYiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BE
RihmcmFtZUlELCByZWN0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04MTY4
LDcgKzgxOTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6
OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMiX3MpKTsKICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04MTc5LDcgKzgyMDksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jh
bmdlLCBDYWxsYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGVkUmFuZ2VBc3luYyJfcykpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApA
QCAtODE5MCw3ICs4MjIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMiX3Mp
KTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhG
b3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04
MjAxLDcgKzgyMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMiX3Mp
KTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApA
QCAtODI0NSw3ICs4Mjc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRS
ZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QiX3MpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXpl
LCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04NTIxLDcgKzg1
NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcihGdW5jdGlvbjx2b2lkKCk+JgogCiAgICAgYXV0byB2b2lkQ2FsbGJhY2sg
PSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGF1dG8pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAg
ICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIiX3MpKTsK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJh
Y2spKTsKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxs
YmFja0lEKTsKIH0KQEAgLTg2NjUsNyArODY5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFj
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5j
dGlvbjsKLSAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9w
dGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBP
cHRpb25hbENhbGxiYWNrSUQoKTsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIg
PSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbiJfcykpKSA6IE9wdGlvbmFs
Q2FsbGJhY2tJRCgpOwogCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5l
d0NhbGxiYWNrSWRlbnRpZmllciksIG1fd2ViUGFnZUlEKTsKICAgICB9KTsKQEAgLTg4ODIsNyAr
ODkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0
dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgRnVuY3Rpb248CiAgICAgfQogCiAgICAgYXV0byBhdHRh
Y2htZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50
Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRh
Y2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3Bs
YXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwg
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9B
dHRhY2htZW50TWFwLnNldChhdHRhY2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50
KSk7CiB9CkBAIC04ODk4LDcgKzg5MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAg
IGlmIChhdXRvIGRhdGEgPSBhdHRhY2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQogICAgICAg
ICBkYXRhUmVmZXJlbmNlID0geyAqZGF0YSB9OwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMiX3Mp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXpl
Rm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5h
bWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsK
IH0KIApAQCAtOTA1Nyw3ICs5MDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0
aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjoKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0Il9z
KSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25N
YW5pZmVzdChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBkNDdiN2Y0ZjI3ZGQzNDBhOTNlYTM2YzU4ZTZjMTZmNzg4
ZGI4MjU1Li5kNGM4ZThiNmQ4YTVkYTFiN2VkOGQyMjdjOThkMGUwY2EyOWI3OGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjI5MSw3ICsyMjkxLDEwIEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fYWxsb3dzTWVkaWFE
b2N1bWVudElubGluZVBsYXliYWNrIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWx3YXlzUnVuc0F0
Rm9yZWdyb3VuZFByaW9yaXR5IHsgZmFsc2UgfTsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX2FjdGl2aXR5VG9rZW47CisgICAgc3RkOjp1bmlxdWVfcHRy
PFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4gbV9pc1Zpc2libGVBY3Rpdml0
eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2
aXR5PiBtX2lzQXVkaWJsZUFjdGl2aXR5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhy
b3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1faXNDYXB0dXJpbmdBY3Rpdml0eTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX2Fs
d2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5OwogI2VuZGlmCiAgICAgYm9vbCBt
X2luaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPGRv
dWJsZT4gbV9jcHVMaW1pdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBiYmQ0OGMzN2M3ZmQyYzFmMGQ3MDc3YmYxMTg3M2JjODA0NmJhNDY3Li5jYTMw
YjY3YjkwNWI4MWFiYzhhOWMwMmY1NjQ1MDllZTQxNTFhMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05MTcsMTIgKzkxNywxMiBAQCBXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMoV2ViUAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQpCiB7
Ci0gICAgYXV0byBpbml0aWFsaXphdGlvbkFjdGl2aXR5VG9rZW4gPSBwcm9jZXNzLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Ci0gICAgYXV0byBzY29wZUV4aXQgPSBtYWtl
U2NvcGVFeGl0KFsmcHJvY2VzcywgaW5pdGlhbGl6YXRpb25BY3Rpdml0eVRva2VuXSB7CisgICAg
YXV0byBpbml0aWFsaXphdGlvbkFjdGl2aXR5ID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlByb2Nlc3MgaW5pdGlhbGl6YXRpb24iX3MpOworICAgIGF1dG8gc2Nv
cGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJnByb2Nlc3MsIGluaXRpYWxpemF0aW9uQWN0aXZpdHkg
PSBXVEZNb3ZlKGluaXRpYWxpemF0aW9uQWN0aXZpdHkpXSgpIG11dGFibGUgewogICAgICAgICAv
LyBSb3VuZC10cmlwIHRvIHRoZSBXZWIgQ29udGVudCBwcm9jZXNzIGJlZm9yZSByZWxlYXNpbmcg
dGhlCi0gICAgICAgIC8vIGluaXRpYWxpemF0aW9uIGFjdGl2aXR5IHRva2VuLCBzbyB0aGF0IHdl
J3JlIHN1cmUgdGhhdCBhbGwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gYWN0aXZpdHksIHNv
IHRoYXQgd2UncmUgc3VyZSB0aGF0IGFsbAogICAgICAgICAvLyBtZXNzYWdlcyBzZW50IGZyb20g
dGhpcyBmdW5jdGlvbiBoYXZlIGJlZW4gaGFuZGxlZC4KLSAgICAgICAgcHJvY2Vzcy5pc1Jlc3Bv
bnNpdmUoW2luaXRpYWxpemF0aW9uQWN0aXZpdHlUb2tlbl0gKGJvb2wpIHsgfSk7CisgICAgICAg
IHByb2Nlc3MuaXNSZXNwb25zaXZlKFtpbml0aWFsaXphdGlvbkFjdGl2aXR5ID0gV1RGTW92ZShp
bml0aWFsaXphdGlvbkFjdGl2aXR5KV0gKGJvb2wpIHsgfSk7CiAgICAgfSk7CiAKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2VzcygpOwpAQCAtMjA0OSwyNCArMjA0OSwyNCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdp
bi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5m
b3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9yZWdy
b3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0Zv
clNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2
aWNlIFdvcmtlciBmb3IgdmlzaWJsZSB2aWV3KHMpIl9zKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFy
KCk7CisgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRX
ZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2Fu
IGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAg
ICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxl
RG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9i
YWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFj
dGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSkKKyAgICAgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdv
cmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7
CisgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Zm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKLSAgICAg
ICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwor
ICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5j
bGVhcigpOworICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5jbGVhcigpOwogICAgIH07CiAgICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKICNlbmRpZgpAQCAtMjA3NSwyMyArMjA3NSwyMyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgICAgICBpZiAobV9mb3JlZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2ZvcmVn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmZv
cmVncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFj
dGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwog
ICAgICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRv
Rm9yZWdyb3VuZCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9r
ZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2JhY2tncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFs
dWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9j
ZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vz
cyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7
CisgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3Mp
IHsKKyAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3Jr
aW5nIGZvciBmb3JlZ3JvdW5kIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQ
cm9jZXNzID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0
d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAg
ICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAg
ICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAg
IH07CiAgICAgdXBkYXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgpAQCAtMjEw
MCwxMSArMjEwMCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2Vy
dGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNy
YXNoZWQ7IHRha2UgbmV3IHRva2VucyBmb3IgdGhlIG5ldyBuZXR3b3JrIHByb2Nlc3MuCi0gICAg
aWYgKG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fYmFja2dy
b3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Ci0gICAgZWxzZSBpZiAobV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcykKLSAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuZm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZWQ7
IHRha2UgbmV3IGFjdGl2aXRpZXMgZm9yIHRoZSBuZXcgbmV0d29yayBwcm9jZXNzLgorICAgIGlm
IChtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKQorICAgICAgICBtX2JhY2tn
cm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGJhY2tncm91bmQg
dmlldyhzKSJfcyk7CisgICAgZWxzZSBpZiAobV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3Jr
UHJvY2VzcykKKyAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJO
ZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obmV3TmV0d29ya1Byb2Nlc3NQcm94eSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA0Y2NjOTZiOWNlYjU4OGM0NDgwZTRjZjRjYjc3
NWNlNDczYjNlYzMuLjhkYTBiMTcyNTlmNjRlMGM0M2IwM2E5MTIwN2Y5ZWNhNDJkMmY4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYwLDExICs3NjAs
MTEgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRX
ZWJQcm9jZXNzQ291bnRlciBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKICAgICBCYWNr
Z3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7Ci0g
ICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1fZm9y
ZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlG
b3JOZXR3b3JrUHJvY2VzczsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1h
cDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3Vu
ZEFjdGl2aXR5VG9rZW4+IG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc1Rocm90
dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+
IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNz
VGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PiBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9y
U2VydmljZVdvcmtlclByb2Nlc3NlczsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBhZWE1YmE5NmVhMGIyNTRjZjQ4
ODdiYTliZDc0MDJlNTBhNjBiNTkuLmVkNTRkNGFjYzhjZjk2M2ZlYzU4NjJjZGVhZWE4NDMyNjZi
YmYyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAKICAg
ICBtX3Jlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwogICAgIG1fYmFja2dyb3VuZFJl
c3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwotICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9j
a2VkRmlsZXMgPSBudWxscHRyOworICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMg
PSBudWxscHRyOwogCiAgICAgZm9yIChhdXRvJiBmcmFtZSA6IGNvcHlUb1ZlY3RvcihtX2ZyYW1l
TWFwLnZhbHVlcygpKSkKICAgICAgICAgZnJhbWUtPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsK
QEAgLTEwMTMsMTAgKzEwMTMsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBBU1NF
UlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Np
b25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFBy
b2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0
ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gcmVwbHkpIG11dGFibGUgeworICAg
IGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpG
ZXRjaFdlYnNpdGVEYXRhKGRhdGFUeXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKICNp
ZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5k
aWYKQEAgLTEwMzAsMTAgKzEwMzAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnMKICAgICBB
U1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNl
c3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICBhdXRvIGFjdGl2aXR5ID0gdGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgp
LCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdl
YnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9k
aWZpZWRTaW5jZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRva2Vu
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFj
dGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BB
UkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMDQ3LDEwICsxMDQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0
byB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0
byBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lG
KGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
V2ViIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIGZvciBzZXZlcmFsIG9yaWdpbnMi
LCB0aGlzKTsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmln
aW5zKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdG9rZW4sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmlnaW5zKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2
aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFN
KHRoaXMpOwogI2VuZGlmCkBAIC0xMjkyLDEyICsxMjkyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQog
ewogICAgIGlmICghaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBh
c3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlzIG5vIGxvbmdlciBob2xk
aW5nIGxvY2tlZCBmaWxlcyIpOwotICAgICAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVz
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX3Rva2VuRm9ySG9sZGlu
Z0xvY2tlZEZpbGVzKSB7CisgICAgaWYgKCFtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVz
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlz
IHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOwotICAgICAgICBtX3Rva2VuRm9ySG9sZGlu
Z0xvY2tlZEZpbGVzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiSG9sZGluZyBsb2NrZWQgZmlsZXMiX3MpOwogICAgIH0KIH0KIApAQCAt
MTUxOCwyMSArMTUxOCwyMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGx1Z0luRGlkUmVjZWl2
ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJfdCBoYXNoKQogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykK
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRha2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1
bGxzY3JlZW5JbnB1dCgpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRCYWNrZ3JvdW5kQWN0
aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogewotICAgIGlmIChtX2JhY2tncm91bmRBY3Rpdml0
eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scykKKyAgICBpZiAobV9iYWNrZ3JvdW5kQWN0
aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG1fdGhy
b3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZp
dHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2
aXR5KCJGdWxsc2NyZWVuIGlucHV0Il9zKTsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IGl0IGlzIHByZXNlbnRpbmcgZnVsbHNjcmVlbiBVSSBmb3IgZm9ybSBjb250cm9scy4iKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZv
ckZ1bGxzY3JlZW5JbnB1dCgpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kQmFja2dyb3VuZEFj
dGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW5Gb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzKQorICAgIGlmICghbV9iYWNrZ3JvdW5k
QWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG51
bGxwdHI7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xz
ID0gbnVsbHB0cjsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2Vz
cyBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGl0IGhhcyBkaXNt
aXNzZWQgZnVsbHNjcmVlbiBVSSBmb3IgZm9ybSBjb250cm9scy4iKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwNjMyYjY5NzU4ZGU5MThjZDY4
ZjRhZGM3Y2ZjNjgzMDEyMWJhZjE5Li4yYTI0NmU3ZWQyZTYxYzgxMWRhMmYxYjA3NDUyMWE0ZjRl
NDdjN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAt
MjQ2LDggKzI0Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zpc2lv
bmFsTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9h
ZHM7IH0KIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCi0gICAgdm9pZCB0YWtlQmFja2dyb3VuZEFj
dGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKLSAgICB2b2lkIHJlbGVhc2VCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpOworICAgIHZvaWQgc3RhcnRCYWNr
Z3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKKyAgICB2b2lkIGVuZEJhY2tncm91
bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpOwogI2VuZGlmCiAKICAgICBib29sIGlzUHJl
d2FybWVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ByZXdhcm1lZDsgfQpAQCAtNDc5LDcgKzQ3OSw3
IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25X
YXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JIb2xkaW5nTG9j
a2VkRmlsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eT4gbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlczsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9mb3JlZ3JvdW5k
VG9rZW47CiAgICAgQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbiBtX2JhY2tncm91bmRUb2tlbjsK
QEAgLTUxMiw3ICs1MTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBdWRpYmxlV2ViUGFn
ZSB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShXQVRDSE9TKQotICAgIFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JG
dWxsc2NyZWVuRm9ybUNvbnRyb2xzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxs
c2NyZWVuRm9ybUNvbnRyb2xzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDM4ZmFlMTYxMzVkOTY2ZTAzYjc4MDhhNzI0MzY3MWUzODVhZjM0MTQuLmYw
MmQwYzIyOTc0ZjhiYTA4MmUwYjQzMDkwNDcxNDNiZTFkYTMxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNTkwNiw3ICs1OTA2LDcgQEAgLSAodm9pZClwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJy
ZW50Rm9jdXNlZEVsZW1lbnQKICAgICAgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVz
ZW50Vmlld0NvbnRyb2xsZXI6X3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVy
LmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CiAKICAgICAvLyBQcmVzZW50aW5n
IGEgZnVsbHNjcmVlbiBpbnB1dCB2aWV3IGNvbnRyb2xsZXIgZnVsbHkgb2JzY3VyZXMgdGhlIHdl
YiB2aWV3LiBXaXRob3V0IHRha2luZyB0aGlzIHRva2VuLCB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vz
cyB3aWxsIGdldCBiYWNrZ3JvdW5kZWQuCi0gICAgX3BhZ2UtPnByb2Nlc3MoKS50YWtlQmFja2dy
b3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKKyAgICBfcGFnZS0+cHJvY2Vz
cygpLnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CiAKICAgICBb
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyLnRyYW5zaXRpb25Db29yZGluYXRvciBhbmltYXRlQWxv
bmdzaWRlVHJhbnNpdGlvbjpuaWwgY29tcGxldGlvbjpbd2Vha1dlYlZpZXcgPSBXZWFrT2JqQ1B0
cjxXS1dlYlZpZXc+KF93ZWJWaWV3KSwgY29udHJvbGxlciA9IF9wcmVzZW50ZWRGdWxsU2NyZWVu
SW5wdXRWaWV3Q29udHJvbGxlcl0gKGlkIDxVSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvb3Jk
aW5hdG9yQ29udGV4dD4pIHsKICAgICAgICAgYXV0byBzdHJvbmdXZWJWaWV3ID0gd2Vha1dlYlZp
ZXcuZ2V0KCk7CkBAIC01OTQyLDcgKzU5NDIsNyBAQCAtICh2b2lkKWRpc21pc3NBbGxJbnB1dFZp
ZXdDb250cm9sbGVyczooQk9PTClhbmltYXRlZAogICAgICAgICAgICAgW3NlbGYgYmVjb21lRmly
c3RSZXNwb25kZXJdOwogICAgIH0KIAotICAgIF9wYWdlLT5wcm9jZXNzKCkucmVsZWFzZUJhY2tn
cm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCk7CisgICAgX3BhZ2UtPnByb2Nl
c3MoKS5lbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKIH0KIAogLSAo
dm9pZClmb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGlkU3VibWl0OihXS0ZvY3VzZWRGb3JtQ29udHJv
bFZpZXcgKil2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCAwNDJiYjVkMzIxNGZlMDAwMTU1NmY5YTYxMzI5NTkzY2RmOThiMTRkLi45
ODlmY2Q2YjBlYmQyNjg2NmJlYjNiNzc0YmUyYzFjY2ExNWRiMmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE5OSw3ICsxOTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oRnVu
Y3Rpb248dm9pZChjb25zdCBGb2N1c2VkRQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNv
cmU6OlRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhH
ZXN0dXJlIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwg
Z2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0
YXJ0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtNDcxLDcgKzQ3MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5h
bFRleHQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTQ4OSw3ICs0ODksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCJfcykpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0
eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9u
KSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0
PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24p
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtNTIyLDcgKzUyMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQ
YWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2ludCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQog
CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5E
aXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbiJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rp
b25JbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
QEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9p
bnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNl
bGVjdGlvbldpdGhFeHRlbnRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxl
bWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICAKIH0KQEAgLTU1Niw3ICs1NTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5k
Qm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkocG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogICAg
IAogfQpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0
aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQiX3Mp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRp
b25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTU4OSw3ICs1ODks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3Qg
V2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29U
b3VjaGVzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RXaXRoVHdvVG91Y2hlcyhmcm9tLCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCiAgICAgLy8gV2Ugbm9y
bWFsbHkgZGVsYXkgcHJvY2VzcyBzdXNwZW5zaW9uIHdoZW4gdGhlIGFwcCBpcyBiYWNrZ3JvdW5k
ZWQgdW50aWwgdGhlIGN1cnJlbnQgcGFnZSBsb2FkIGNvbXBsZXRlcy4gSG93ZXZlciwKICAgICAv
LyB3ZSBkbyBub3Qgd2FudCB0byBkbyBzbyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkIGZvciBw
b3dlciByZWFzb25zLgogICAgIGlmIChpc1N1c3BlbmRlZFVuZGVyTG9jaykKLSAgICAgICAgTmF2
aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqdGhpcykucmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRv
a2VuKE5hdmlnYXRpb25TdGF0ZTo6TmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpT
Y3JlZW5Mb2NrZWQpOworICAgICAgICBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp0aGlz
KS5yZWxlYXNlTmV0d29ya0FjdGl2aXR5KE5hdmlnYXRpb25TdGF0ZTo6TmV0d29ya0FjdGl2aXR5
UmVsZWFzZVJlYXNvbjo6U2NyZWVuTG9ja2VkKTsKICNlbmRpZgogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNw
ZW5kZWRVbmRlckxvY2spLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC03MTUsNyArNzE1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9m
ZnNldChXZWJDb3JlOjpUZXh0R3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0Il9zKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJp
dHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTcyNiw3ICs3
MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRX
aXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0Il9z
KSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0U2Vs
ZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCkBAIC03NTIsNyArNzUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxl
Y3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zm
c2V0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2Vs
ZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBA
IC0xMDE2LDcgKzEwMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVs
ZW1lbnQoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZChDYQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpmb2N1c05leHRGb2N1c2VkRWxlbWVudCJfcykp
OwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRGb2N1c2Vk
RWxlbWVudChpc0ZvcndhcmQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTEw
OTUsNyArMTA5NSw3IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgfQogCiAgICAgdWlu
dDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERiJfcykp
OwogICAgIHVzaW5nIE1lc3NhZ2UgPSBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdBbmREcmF3VG9QREY7CiAgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2UoZnJh
bWVJRCwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgTWVzc2FnZTo6UmVwbHkocGFnZUNvdW50KSwg
bV93ZWJQYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCkpOwogICAgIHJldHVybiBwYWdlQ291bnQ7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382074</attachid>
            <date>2019-10-28 09:04:46 -0700</date>
            <delta_ts>2019-10-30 10:31:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203438-20191028090445.patch</filename>
            <type>text/plain</type>
            <size>106756</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjMGJiZDU0NDVjMGI0YTlj
MTU4MzNhMjRiZTdiMTY4MmI1ZTU4YmYuLjMwZjgyMjdiN2VkMmE3MWM2MWQ0ZWNkZDFhNzhjMTQ1
M2JjZDkwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDE5LTEwLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gSW1wcm92ZSBw
cm9jZXNzIGFzc2VydGlvbi1yZWxhdGVkIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSBjYXVzZXMg
b2YgbGVha2VkIGFzc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcHJvdmUgcHJvY2VzcyBhc3NlcnRpb24tcmVsYXRlZCBsb2dnaW5nIHRv
IGhlbHAgaWRlbnRpZnkgY2F1c2VzIG9mIGxlYWtlZCBhc3NlcnRpb25zLiBQcmV2aW91c2x5LAor
ICAgICAgICB3aGVuZXZlciBvdXIgY29kZSBuZWVkZWQgdG8gcHJldmVudCBzdXNwZW5zaW9uIG9m
IGEgY2hpbGQgcHJvY2VzcyBkdWUgdG8gc29tZSBraW5kIG9mIGFjdGl2aXR5LCBpdAorICAgICAg
ICB3b3VsZCBzaW1wbHkgZ3JhYiBhICJ0b2tlbiIgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcycgUHJv
Y2Vzc1Rocm90dGxlci4gVGhpcywgaW4tdHVybiwgd291bGQgY2F1c2UKKyAgICAgICAgdGhlIFBy
b2Nlc3NUaHJvdHRsZXIgdG8gdGFrZSB0aGUgcmlnaHQga2luZCBvZiBQcm9jZXNzQXNzZXJ0aW9u
IG9yIHJlbGVhc2UgaXQgd2hlbiBub2JvZHkgaG9sZHMKKyAgICAgICAgYW55IHRva2VucyBhbnkg
bW9yZS4KKworICAgICAgICBXZSBmcmVxdWVudGx5IGhhdmUgaXNzdWVzIHdoZXJlIHRoZSBVSVBy
b2Nlc3Mga2VlcHMgaXRzIGFzc2VydGlvbnMgYXJvdW5kIGZvciB0b28gbG9uZyBhZnRlciBnZXR0
aW5nCisgICAgICAgIGJhY2tncm91bmRpbmcuIFRoaXMgY2F1c2VzIHRoZSBhc3NlcnRpb25zIHRv
IGdldCBpbnZhbGlkYXRlZCBhbmQgdGhlIFVJUHJvY2VzcyB3aWxsIHVzdWFsbHkgc3VzcGVuZAor
ICAgICAgICAoYWxiZWl0IHdpdGggYSBkZWxheSwgd2hpY2ggaXMgYmFkIGZvciBwb3dlcikuIFNv
bWV0aW1lcyB0aG91Z2gsIHdlIGdldCBraWxsZWQgYmVjYXVzZSBvdXIgaW52YWxpZGF0aW9uCisg
ICAgICAgIGhhbmRsZXIgZG9lcyBub3QgZ2V0IGEgY2hhbmNlIHRvIHJlbGVhc2UgdGhlIGFzc2Vy
dGlvbiBpbiB0aW1lLgorCisgICAgICAgIEZpbmRpbmcgb3V0IHdoeSB3ZSdyZSBrZWVwaW5nIGFy
b3VuZCBhc3NlcnRpb25zIGlzIGN1cnJlbnRseSB2ZXJ5IGRpZmZpY3VsdCBiZWNhdXNlIHdlIGNh
bm5vdCBlYXNpbHkKKyAgICAgICAgc2VlIGluIHRoZSBsb2dzIHdobyBpcyBzdGlsbCBob2xkaW5n
IFByb2Nlc3NUaHJvdHRsZXIgdG9rZW5zLiBUbyBtYWtlIHN1Y2ggZGVidWdnaW5nIGVhc2llciwg
Y2xpZW50cworICAgICAgICBub3cgbm90aWZ5IHRoZSBQcm9jZXNzVGhyb3R0bGVyIHdoZW4gdGhl
eSBzdGFydCBzb21lIGFjdGl2aXR5IGFuZCBwcm92aWRlIGEgdXNlci1yZWFkYWJsZSBkZXNjcmlw
dGlvbgorICAgICAgICBvZiB0aGUgYWN0aXZpdHkuIFRoZSBjbGllbnQgdGhlbiBnZXRzIGEgRm9y
ZWdyb3VuZEFjdGl2aXR5IG9yIEJhY2tncm91bmRBY3Rpdml0eSBvYmplY3QgaW5zdGVhZCBvZgor
ICAgICAgICBzaW1wbHkgYSB0b2tlbi4gQXMgYSByZXN1bHQsIHdlIGFyZSBub3cgYWJsZSB0byBs
b2cgd2hlbiBhIGdpdmVuIGFjdGl2aXR5IHRoYXQgcHJldmVudHMgc3VzcGVuc2lvbgorICAgICAg
ICBiZWdpbnMgYW5kIGVuZHMsIHdpdGggYSB1c2VyLWZyaWVuZGx5IHN0cmluZy4gQWxzbywgd2hl
biB0aGUgYXNzZXJ0aW9uIGdldHMgaW52YWxpZGF0ZWQsIGl0IHdpbGwKKyAgICAgICAgaW52YWxp
ZGF0ZSBhbGwgdGhlc2UgcGVuZGluZyBhY3Rpdml0aWVzIGFuZCB3ZSdsbCBzZWUgaW4gdGhlIGxv
Z3MgdGhlIG5hbWUgb2YgdGhlIGFjdGl2aXRpZXMgdGhhdAorICAgICAgICB3ZXJlIHN0aWxsIGdv
aW5nIG9uIHVwb24gaW52YWxpZGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6c2VuZEludm9jYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlSXNMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2VzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Jlc3VtZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tNYXA6OnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFN5bmNBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
OjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
flByb2Nlc3NUaHJvdHRsZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjph
ZGRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFj
dGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFs
bEFjdGl2aXRpZXMpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3Rl
ZEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0
QXNzZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1aUFz
c2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eTo6fkFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZp
dHk6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpB
Y3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6
OnNob3VsZEJlUnVubmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpiYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQ
cm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFByb2Nlc3NSZXF1ZXN0VG9TdXNwZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGlj
YXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzaHV0RG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVu
SW5wdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1l
bnRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJv
bGxlcnM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3
b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKToKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRoQXN5bmNSZXBseSgpIHRvIHNpbXBs
aWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCmluZGV4IDg0YjQ3MGM5NTI2
NGJkN2RkMjA4MGMyNzZkNjFmZTJjMDZmNTU5NTYuLjU0Y2RjMDMwYTJlOWMxYWNjYzVjNGVjMzlh
YjliMzM1ZGI0ZjA2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBSZW1vdGVPYmplY3RSZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1lc3Nh
Z2VTZW5kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25J
RCgpID0gMDsKIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVVu
dXNlZFJlcGx5QmxvY2sodWludDY0X3QgcmVwbHlJRCk7CiAKICAgICBXZWFrT2JqQ1B0cjxfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeT4gbV9yZW1vdGVPYmplY3RSZWdpc3RyeTsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9w
ZW5kaW5nUmVwbGllczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4gbV9wZW5kaW5nUmVwbGllczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDMwZWM0ZTcwNjNiMzJj
ZGI5ZmZhNzdhNTU0NDc3MDkwYjQ0MDRkM2IuLmU0OGM5Mjg1Nzc4NWMzY2Q4NTA5YjFiMWMzZTI3
MTliMTliZWM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBSZW1vdGVP
YmplY3RSZWdpc3RyeTo6c2VuZEludm9jYXRpb24oY29uc3QgUmVtb3RlT2JqZWN0SW52b2NhdGlv
biYgaW52b2NhdGkKIAogICAgIGlmIChhdXRvKiByZXBseUluZm8gPSBpbnZvY2F0aW9uLnJlcGx5
SW5mbygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nUmVwbGllcy5jb250YWlucyhyZXBs
eUluZm8tPnJlcGx5SUQpKTsKLSAgICAgICAgbV9wZW5kaW5nUmVwbGllcy5hZGQocmVwbHlJbmZv
LT5yZXBseUlELCB0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgIG1fcGVu
ZGluZ1JlcGxpZXMuYWRkKHJlcGx5SW5mby0+cmVwbHlJRCwgYmFja2dyb3VuZEFjdGl2aXR5KCJS
ZW1vdGVPYmplY3RSZWdpc3RyeSBpbnZvY2F0aW9uIl9zKSk7CiAgICAgfQogCiAgICAgbWVzc2Fn
ZVNlbmRlcigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpJbnZva2VNZXRo
b2QoaW52b2NhdGlvbiksIG1lc3NhZ2VEZXN0aW5hdGlvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgKaW5kZXggNDU1NWM2YjMxZDFlZTU0
YzU0MmQ2ZDIwMzM4OTNjMDFiZjA3MTY5Ny4uNWQ5YjkxYzg1MGYyNWEzZjlkMTk2ZDc4OGE4MTg1
OWY4N2RlODFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha09iakNQdHI8aWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbiB7IG51bGxwdHIgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2
aXR5OwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCAyNTY2M2FkOTQxYmE3NTcxNzA0YmUwMmJh
M2UzNzY4ODljMzYwYWE2Li42NTFiNzAxNGJlZjU5NjQyOWFjMTViYzc4M2U5MWQ4NDdmYjA5NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQpAQCAtMjY4LDggKzI2OCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OnRha2VBY3Rpdml0eVRv
a2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdl
KCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBw
cmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eVRva2VuKTsKLSAgICAg
ICAgbV9hY3Rpdml0eVRva2VuID0gd2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7CisgICAg
ICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CiAgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CkBAIC0yNzksOSArMjc5LDkgQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nh
cnkoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pIHsKKyAgICBpZiAobV9hY3Rpdml0eSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5c3RlbSBw
cmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOwotICAgICAgICBtX2FjdGl2aXR5VG9r
ZW4gPSBudWxscHRyOworICAgICAgICBtX2FjdGl2aXR5ID0gbnVsbHB0cjsKICAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMGRmZGU3Yzk4NjgwMWQ4YzE4
NTgyYzJhOGEzNTc5MjVhZTZjMjAyOC4uNjc1ZTNhMGM1YjYwMGFiMGJmZjRhMDQ4NzUxNTI0NjQ4
YjY1OTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RQYWlu
dCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIE5ldHdvcmtB
Y3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiB7IExvYWRDb21wbGV0ZWQsIFNjcmVlbkxvY2tlZCB9
OwotICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRv
a2VuUmVsZWFzZVJlYXNvbik7CisgICAgZW51bSBjbGFzcyBOZXR3b3JrQWN0aXZpdHlSZWxlYXNl
UmVhc29uIHsgTG9hZENvbXBsZXRlZCwgU2NyZWVuTG9ja2VkIH07CisgICAgdm9pZCByZWxlYXNl
TmV0d29ya0FjdGl2aXR5KE5ldHdvcmtBY3Rpdml0eVJlbGVhc2VSZWFzb24pOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN3YXBX
ZWJQcm9jZXNzZXMoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
dm9pZCByZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW5BZnRlckxvYWRDb21wbGV0aW9uKCkgeyBy
ZWxlYXNlTmV0d29ya0FjdGl2aXR5VG9rZW4oTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVh
c29uOjpMb2FkQ29tcGxldGVkKTsgfQorICAgIHZvaWQgcmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFm
dGVyTG9hZENvbXBsZXRpb24oKSB7IHJlbGVhc2VOZXR3b3JrQWN0aXZpdHkoTmV0d29ya0FjdGl2
aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBsZXRlZCk7IH0KICNlbmRpZgogCiAgICAgV0tXZWJW
aWV3ICptX3dlYlZpZXc7CkBAIC0yNTgsOCArMjU4LDggQEAgcHJpdmF0ZToKICAgICB9IG1faGlz
dG9yeURlbGVnYXRlTWV0aG9kczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOwot
ICAgIFJ1bkxvb3A6OlRpbWVyPE5hdmlnYXRpb25TdGF0ZT4gbV9yZWxlYXNlQWN0aXZpdHlUaW1l
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5PiBtX25ldHdvcmtBY3Rpdml0eTsKKyAgICBSdW5Mb29wOjpUaW1lcjxOYXZpZ2F0aW9uU3Rh
dGU+IG1fcmVsZWFzZU5ldHdyb2tBY3Rpdml0eVRpbWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTRh
ZTliMTMwZmI4OTk5MzhlOWNlMjYxYjVlNjhlMTNlNTJlMDFiMy4uOThjZWNmNmFkODhmMWI5YjEz
ZjJlNTRmODE5YTMyZGMzZDhjYjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvblN0YXRlKFdLV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcygpCiAgICAgLCBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMoKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtB
Y3Rpdml0eVRva2VuQWZ0ZXJMb2FkQ29tcGxldGlvbikKKyAgICAsIG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk5hdmlnYXRpb25TdGF0ZTo6
cmVsZWFzZU5ldHdvcmtBY3Rpdml0eUFmdGVyTG9hZENvbXBsZXRpb24pCiAjZW5kaWYKIHsKICAg
ICBBU1NFUlQobV93ZWJWaWV3LT5fcGFnZSk7CkBAIC0xMjA5LDIxICsxMjA5LDIxIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlSXNMb2FkaW5nKCkKIH0KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0
eVRva2VuKE5ldHdvcmtBY3Rpdml0eVRva2VuUmVsZWFzZVJlYXNvbiByZWFzb24pCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6cmVsZWFzZU5ldHdvcmtBY3Rpdml0eShOZXR3b3JrQWN0aXZpdHlSZWxl
YXNlUmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikKKyAgICBpZiAo
IW1fbmV0d29ya0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKHJlYXNv
bikgewotICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpMb2FkQ29t
cGxldGVkOgorICAgIGNhc2UgTmV0d29ya0FjdGl2aXR5UmVsZWFzZVJlYXNvbjo6TG9hZENvbXBs
ZXRlZDoKICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgTmF2aWdhdGlvblN0YXRl
IGlzIHJlbGVhc2luZyBiYWNrZ3JvdW5kIHByb2Nlc3MgYXNzZXJ0aW9uIGJlY2F1c2UgYSBwYWdl
IGxvYWQgY29tcGxldGVkIiwgdGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29y
a0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CisgICAgY2FzZSBOZXR3
b3JrQWN0aXZpdHlSZWxlYXNlUmVhc29uOjpTY3JlZW5Mb2NrZWQ6CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIE5hdmlnYXRpb25TdGF0ZSBpcyByZWxlYXNpbmcgYmFja2dyb3Vu
ZCBwcm9jZXNzIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBzY3JlZW4gd2FzIGxvY2tlZCIsIHRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsK
LSAgICBtX3JlbGVhc2VBY3Rpdml0eVRpbWVyLnN0b3AoKTsKKyAgICBtX25ldHdvcmtBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgbV9yZWxlYXNlTmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwog
fQogI2VuZGlmCiAKQEAgLTEyMzEsMjMgKzEyMzEsMjMgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OmRpZENoYW5nZUlzTG9hZGluZygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAobV93ZWJWaWV3LT5fcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmlzTG9hZGluZygpKSB7Ci0gICAg
ICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgbmV0d29yayBhY3Rpdml0eSB0b2tlbiBpZiBhIGxvYWQg
c3RhcnRzIGFmdGVyIHRoZSBzY3JlZW4gaGFzIGJlZW4gbG9ja2VkLgorICAgICAgICAvLyBXZSBk
byBub3Qgc3RhcnQgYSBuZXR3b3JrIGFjdGl2aXR5IGlmIGEgbG9hZCBzdGFydHMgYWZ0ZXIgdGhl
IHNjcmVlbiBoYXMgYmVlbiBsb2NrZWQuCiAgICAgICAgIGlmIChbVUlBcHAgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX3JlbGVhc2VB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1fcmVsZWFzZU5ldHdyb2tB
Y3Rpdml0eVRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1f
d2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGtlZXBzIGl0cyBwcm9jZXNzIG5ldHdvcmsgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAg
ICAgIG1fcmVsZWFzZUFjdGl2aXR5VGltZXIuc3RvcCgpOworICAgICAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RvcCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9h
Y3Rpdml0eVRva2VuKSB7CisgICAgICAgIGlmICghbV9uZXR3b3JrQWN0aXZpdHkpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2UtPmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2aWdhdGlvblN0YXRlIGlzIHRh
a2luZyBhIHByb2Nlc3MgbmV0d29yayBhc3NlcnRpb24gYmVjYXVzZSBhIHBhZ2UgbG9hZCBzdGFy
dGVkIiwgdGhpcyk7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBtX3dlYlZpZXctPl9w
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2Vzcygp
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9hY3Rpdml0eVRva2VuKSB7CisgICAgfSBlbHNlIGlmIChtX25l
dHdvcmtBY3Rpdml0eSkgewogICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMgdmlzaWJsZSBz
byB3ZSBkZWxheSByZWxlYXNpbmcgdGhlIGJhY2tncm91bmQgYWN0aXZpdHkgZm9yIDMgc2Vjb25k
cyB0byBnaXZlIGl0IGEgY2hhbmNlIHRvIHN0YXJ0IGFub3RoZXIgbmF2aWdhdGlvbgogICAgICAg
ICAvLyBiZWZvcmUgc3VzcGVuZGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIDxyZGFyOi8vcHJv
YmxlbS8yNzkxMDk2ND4uCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKG1fd2ViVmlldy0+X3BhZ2Ut
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmF2
aWdhdGlvblN0YXRlIHdpbGwgcmVsZWFzZSBpdHMgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBz
b29uIGJlY2F1c2UgdGhlIHBhZ2UgbG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9y
ZWxlYXNlQWN0aXZpdHlUaW1lci5zdGFydE9uZVNob3QoM19zKTsKKyAgICAgICAgbV9yZWxlYXNl
TmV0d3Jva0FjdGl2aXR5VGltZXIuc3RhcnRPbmVTaG90KDNfcyk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTEzNTAsOCArMTM1MCw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJv
Y2Vzc2VzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91
ciBiYWNrZ3JvdW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9u
ZS4KLSAgICBpZiAobV9hY3Rpdml0eVRva2VuKQotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKKyAgICBpZiAobV9uZXR3b3JrQWN0aXZpdHkpCisgICAgICAgIG1fbmV0d29ya0Fj
dGl2aXR5ID0gbV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiUGFnZSBMb2FkIl9zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCmlu
ZGV4IDIwY2Q1M2M5NDQzOGJkMWI3OTRjZDQyMzE0ZWIyZTZjYjQ1YzU5ZTMuLjQ5N2FiNzIyMDBj
ZDdkZGFmYjE2M2M2YzZkN2VhNjc2YjI3YzA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Qcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5Ojp0YWtlQmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKQorc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eT4gVUlSZW1vdGVPYmplY3RSZWdpc3RyeTo6YmFja2dyb3VuZEFjdGl2aXR5
KEFTQ0lJTGl0ZXJhbCBuYW1lKQogewotICAgIHJldHVybiBtX3BhZ2UucHJvY2VzcygpLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgcmV0dXJuIG1fcGFnZS5wcm9j
ZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpOwogfQogCiBVSVJlbW90
ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oCmluZGV4IGM0MGI0NTM2NjNjOWZlNTllMDZhODU1YmVkNzYzYjhmM2RiZGRmM2YuLmQ2Mzg4
Mjc1NTQwNzUxYmIxZjA2MGJhOTdjOWU5N2U2MGFiYTY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXImIG1l
c3NhZ2VTZW5kZXIoKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlRGVzdGluYXRpb25JRCgp
IGZpbmFsOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIHRh
a2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQppbmRleCA4MzQzNWY5NmExMDU0ODVhYWFlMmVjMjg3MzcxNTVkNzBmMDgwNDZkLi5mZTgx
OTRmNjQ3NDQ2M2FiNmU3ZmIxOGJhOWUxYmFlYWI1OTAzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpCiAg
ICAgLy8gVGhlIFdlYlByb2Nlc3Mgd2FzIGF3YWtlbmVkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu
IHRoZSBVSVByb2Nlc3MuIFRha2Ugb3V0IGFuIGFzc2VydGlvbiBmb3IgYQogICAgIC8vIGxpbWl0
ZWQgZHVyYXRpb24gdG8gYWxsb3cgd2hhdGV2ZXIgdGFzayBuZWVkcyB0byBiZSBhY2NvbXBsaXNo
ZWQgdGltZSB0byBjb21wbGV0ZS4KICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIFByb2Nlc3Mgd2FzIHVu
ZXhwZWN0ZWRseSByZXN1bWVkLCBzdGFydGluZyBiYWNrZ3JvdW5kIGFjdGl2aXR5IiwgdGhpcyk7
Ci0gICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRv
a2VuID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0geworICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBy
b2Nlc3Mgd2FzIHVuZXhwZWN0ZWRseSByZXN1bWVkIl9zKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzUmVzdW1lZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5k
IGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwogICAgIG1fdW5l
eHBlY3RlZEFjdGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVT
aG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4
cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCmluZGV4IGIyNzc5MjBkOWU4MDA2MWQ2ZGRlNTJjNGM1YWRkOGI0NTJkZDU0MDYu
LmE5MzVjZmVkYjg0NTQwYWQ5NWQ4ZGVjYTA4MGI0YjAxMWU2MGYxZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC02OSwxNyArNjksMTcgQEAgcHJvdGVj
dGVkOgogICAgIHN0cnVjdCBUeXBlVGFnIHsgfTsKICAgICB0eXBlZGVmIGNvbnN0IFR5cGVUYWcq
IFR5cGU7CiAKLSAgICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAg
ICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5KQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fY2FsbGJhY2tJRChDYWxsYmFja0lEOjpnZW5lcmF0ZUlE
KCkpCi0gICAgICAgICwgbV9hY3Rpdml0eVRva2VuKGFjdGl2aXR5VG9rZW4pCisgICAgICAgICwg
bV9hY3Rpdml0eShXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBt
X2FjdGl2aXR5OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KQEAgLTg3LDkgKzg3LDkg
QEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rp
b247CiAKLSAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVu
Y3Rpb24mJiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiYmIGFjdGl2aXR5ID0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
YWN0aXZpdHkpKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdlbmVyaWND
YWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQotICAgICAgICA6IENh
bGxiYWNrQmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCisgICAgR2VuZXJpY0NhbGxiYWNrKENh
bGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eT4mJiBhY3Rpdml0eSkKKyAgICAgICAgOiBDYWxsYmFja0Jh
c2UodHlwZSgpLCBXVEZNb3ZlKGFjdGl2aXR5KSkKICAgICAgICAgLCBtX2NhbGxiYWNrKFdURk1v
dmUoY2FsbGJhY2spKQogICAgIHsKICAgICB9CkBAIC0xODksOSArMTg5LDkgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxiYWNrSUQgcHV0
KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQorICAgIENhbGxiYWNrSUQg
cHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQu
Li4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIFdURk1vdmUoYWN0aXZpdHkpKTsK
ICAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhZjVjNTUyOGIyN2VmMDRkMDM5MjAwNzE3N2VlYTg0ZmUyODZlMTQxLi42MGUy
Y2IyNDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8VwogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlz
KTsKIAotICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25J
RF0gKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdGZXRj
aFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhpcywgYWN0aXZpdHkgPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBzZXNzaW9uSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogICAg
ICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOwogICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCB0b2tlbiA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHNlc3Npb25JRF0gKCkgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0aGlzLCBhY3Rp
dml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBS
RUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBkZWxldGluZyBX
ZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdGhp
cywgdG9rZW4gPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZXNzaW9uSURdICgpIG11
dGFibGUgeworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNr
cy5hZGQoY2FsbGJhY2tJRCwgW3RoaXMsIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
ZXNzaW9uSURdICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0aGlzKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBA
IC0zMDIsOSArMzAyLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQogICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaW52YWxpZGF0
ZSgpOwogI2VuZGlmCiAKLSAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0
cjsKKyAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKICAgICAK
LSAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOworICAgIG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgPSAwOwog
CiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xMDkzLDEyICsx
MDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIHsKICAgICBpZiAoIWlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9j
ZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdv
cmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKLSAgICAgICAg
bV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CisgICAgICAgIG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcykgeworICAgIGlmICghbV9h
Y3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcykgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsK
LSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2Vk
RmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zKTsKICAgICB9CiB9CiAKQEAgLTExMDcsMTEgKzExMDcsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcygpCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIDApOwogICAgIAogICAgICsrbV9zeW5jQWxsQ29v
a2llc0NvdW50ZXI7Ci0gICAgaWYgKG1fc3luY0FsbENvb2tpZXNUb2tlbikKKyAgICBpZiAobV9z
eW5jQWxsQ29va2llc0FjdGl2aXR5KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IHN5bmNpbmcgY29va2llcyIsIHRoaXMpOwotICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9zeW5jQWxsQ29va2ll
c0FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeW5jaW5nIGNvb2tp
ZXMiX3MpOwogfQogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29v
a2llcygpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFN5bmNBbGxDb29raWVzKCkKICAgICAtLW1fc3luY0FsbENvb2tpZXNDb3VudGVyOwogICAgIGlm
ICghbV9zeW5jQWxsQ29va2llc0NvdW50ZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgcmVsZWFzaW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGRvbmUgc3lu
Y2luZyBjb29raWVzIiwgdGhpcyk7Ci0gICAgICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IG51
bGxwdHI7CisgICAgICAgIG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eSA9IG51bGxwdHI7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IGUxMGYwZTAyYjdjMzdiNzc1MDFiMTUxNjJkZWYxZDY4YTdm
ZmMyYzkuLjQ3MjYyZWJmZmI0Njc0ZWI1YzcwMDM2ODkzZjdiMDgwM2I0YWMyNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yNzcsOCArMjc3LDggQEAgcHJpdmF0ZToKICAgICBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwogI2VuZGlmCiAgICAg
UHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fc3luY0FsbENvb2tpZXNU
b2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tp
ZXNBY3Rpdml0eTsKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7
IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApp
bmRleCA3YzQ1ZjIwMWRmNzU0NTQ0MzRmY2U4ZWRiZjVmYmM4M2I4MjhlNTY5Li4wYzNiM2EyOTJm
ZjI5OTIxOTZlMGU3ZDBmMzAzNzFmMmE3OWNiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtNDIsMTcgKzQyLDU0IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZVByZXBhcmVUb1N1c3BlbmRSZXF1ZXN0SUQoKQogUHJvY2Vzc1Rocm90dGxl
cjo6UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNzLCBib29s
IHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICAsIG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZQcm9jZXNzVGhyb3R0bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmly
ZWQpCi0gICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsgfSkKLSAgICAsIG1fYmFja2dyb3VuZENvdW50ZXIo
W3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOyB9KQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKHNob3VsZFRha2VVSUJhY2tn
cm91bmRBc3NlcnRpb24pCiB7CiB9CisKK1Byb2Nlc3NUaHJvdHRsZXI6On5Qcm9jZXNzVGhyb3R0
bGVyKCkKK3sKKyAgICBpbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OmFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7
CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVB
c3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmFkZEFjdGl2
aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5hZGQoJmFjdGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOwor
fQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEZvcmVncm91bmRBY3Rp
dml0eSYgYWN0aXZpdHkpCit7CisgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFj
dGl2aXR5KTsKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnJlbW92ZUFjdGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYgYWN0aXZpdHkp
Cit7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5yZW1vdmUoJmFjdGl2aXR5KTsKKyAgICB1
cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFByb2Nlc3NUaHJvdHRsZXI6Omlu
dmFsaWRhdGVBbGxBY3Rpdml0aWVzKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgQkVHSU4iLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCB0aGlzKTsKKyAgICB3aGlsZSAo
IW1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fZm9yZWdyb3Vu
ZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICB3aGlsZSAoIW1fYmFja2dy
b3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgICAgICAoKm1fYmFja2dyb3VuZEFjdGl2aXRp
ZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OmludmFsaWRhdGVBbGxBY3Rp
dml0aWVzKCkgRU5EIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7Cit9CiAgICAgCiBBc3Nl
cnRpb25TdGF0ZSBQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKCkKIHsK
LSAgICBpZiAobV9mb3JlZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlmICghbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6
Rm9yZWdyb3VuZDsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKQorICAgIGlm
ICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZDsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3RhdGU6OlN1c3Bl
bmRlZDsKIH0KQEAgLTY4LDcgKzEwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNz
ZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUpCiAgICAgaWYgKG1fYXNzZXJ0aW9u
LT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNl
dEFzc2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUg
KGZvcmVncm91bmRBY3Rpdml0aWVzOiAlbHUsIGJhY2tncm91bmRBY3Rpdml0aWVzOiAlbHUpIiwg
bV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcywgbmV3U3RhdGUsIG1fZm9yZWdyb3VuZENvdW50ZXIu
dmFsdWUoKSwgbV9iYWNrZ3JvdW5kQ291bnRlci52YWx1ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXI6OnNldEFz
c2VydGlvblN0YXRlKCkgVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZv
cmVncm91bmRBY3Rpdml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG1fcHJv
Y2Vzc0lkZW50aWZpZXIsIHRoaXMsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNp
emUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5z
ZXRTdGF0ZShuZXdTdGF0ZSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKG5l
d1N0YXRlKTsKIH0KQEAgLTE2Myw2ICsyMDAsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OnVp
QXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiW1BJRDogJWRdICVwIC0gUHJvY2Vzc1Rocm90dGxlcjo6dWlBc3NlcnRp
b25XaWxsRXhwaXJlSW1taW5lbnRseSgpIiwgbV9wcm9jZXNzSWRlbnRpZmllciwgdGhpcyk7CiAg
ICAgc2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQ6Olllcyk7Cisg
ICAgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1l
b3V0VGltZXIuc3RvcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmgKaW5kZXggOTc2MjI4YjQ5N2EwOGI1NDQ5OWFkMzY4OWJkNGQ0YTE0YjQwOWEyNS4u
ZWE3M2MwZmE4MjRjOTRiMWI5ZTlmNzgwNWM1MzVlNDRlMGI4NWM3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRl
ZiBQcm9jZXNzVGhyb3R0bGVyX2gKICNkZWZpbmUgUHJvY2Vzc1Rocm90dGxlcl9oCiAKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgotCiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ3LDIwICs0Nyw1MiBAQCBjbGFzcyBQcm9jZXNzVGhyb3R0
bGVyQ2xpZW50OwogCiBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFByb2Nlc3NUaHJvdHRsZXI+LCBwcml2YXRlIFByb2Nlc3NBc3NlcnRpb246OkNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgZW51bSBGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci0g
ICAgdHlwZWRlZiBSZWZDb3VudGVyPEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXJUeXBlPiBGb3Jl
Z3JvdW5kQWN0aXZpdHlDb3VudGVyOwotICAgIHR5cGVkZWYgRm9yZWdyb3VuZEFjdGl2aXR5Q291
bnRlcjo6VG9rZW4gRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW47Ci0gICAgZW51bSBCYWNrZ3JvdW5k
QWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci0gICAgdHlwZWRlZiBSZWZDb3VudGVyPEJhY2tncm91
bmRBY3Rpdml0eUNvdW50ZXJUeXBlPiBCYWNrZ3JvdW5kQWN0aXZpdHlDb3VudGVyOwotICAgIHR5
cGVkZWYgQmFja2dyb3VuZEFjdGl2aXR5Q291bnRlcjo6VG9rZW4gQmFja2dyb3VuZEFjdGl2aXR5
VG9rZW47Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyKFByb2Nlc3NUaHJvdHRsZXJDbGllbnQmLCBi
b29sIHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pOwotCi0gICAgRm9yZWdyb3VuZEFj
dGl2aXR5VG9rZW4gZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdDsKLSAgICBCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbiBiYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0OworICAgIH5Q
cm9jZXNzVGhyb3R0bGVyKCk7CisKKyAgICBlbnVtIGNsYXNzIEFjdGl2aXR5VHlwZSB7IEJhY2tn
cm91bmQsIEZvcmVncm91bmQgfTsKKyAgICB0ZW1wbGF0ZTxBY3Rpdml0eVR5cGUgdHlwZT4gY2xh
c3MgQWN0aXZpdHkgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIEFjdGl2aXR5KFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlciwgQVNDSUlM
aXRlcmFsIG5hbWUpCisgICAgICAgICAgICA6IG1fdGhyb3R0bGVyKCZ0aHJvdHRsZXIpCisgICAg
ICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdHRsZXIu
YWRkQWN0aXZpdHkoKnRoaXMpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICJbUElEOiAlZF0gJXAgLSBQcm9jZXNzVGhyb3R0bGVyIFN0YXJ0aW5nICV7cHVibGlj
fXMgYWN0aXZpdHkgJXAgLyAnJXtwdWJsaWN9cyciLCBtX3Rocm90dGxlci0+bV9wcm9jZXNzSWRl
bnRpZmllciwgbV90aHJvdHRsZXIsIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8g
ImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCB0aGlzLCBtX25hbWUuY2hhcmFjdGVycygpKTsK
KyAgICAgICAgfQorCisgICAgICAgIH5BY3Rpdml0eSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChpc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3Rocm90dGxlcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXI7
CisKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKCFtX3Rocm90dGxlcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIltQSUQ6ICVkXSAlcCAtIFByb2Nlc3NUaHJvdHRsZXIgRW5kaW5nICV7cHVibGljfXMg
YWN0aXZpdHkgJXAgLyAnJXtwdWJsaWN9cyciLCBtX3Rocm90dGxlci0+bV9wcm9jZXNzSWRlbnRp
ZmllciwgbV90aHJvdHRsZXIsIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZv
cmVncm91bmQiIDogImJhY2tncm91bmQiLCB0aGlzLCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAg
ICAgICAgICAgIG1fdGhyb3R0bGVyLT5yZW1vdmVBY3Rpdml0eSgqdGhpcyk7CisgICAgICAgICAg
ICBtX3Rocm90dGxlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBQcm9jZXNzVGhy
b3R0bGVyKiBtX3Rocm90dGxlciB7IG51bGxwdHIgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG1f
bmFtZTsKKyAgICB9OworCisgICAgdXNpbmcgRm9yZWdyb3VuZEFjdGl2aXR5ID0gQWN0aXZpdHk8
QWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9yZWdyb3Vu
ZEFjdGl2aXR5PiBmb3JlZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpOworCisgICAg
dXNpbmcgQmFja2dyb3VuZEFjdGl2aXR5ID0gQWN0aXZpdHk8QWN0aXZpdHlUeXBlOjpCYWNrZ3Jv
dW5kPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5k
QWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpOwogICAgIAogICAgIHZvaWQgZGlkQ29ubmVjdFRv
UHJvY2VzcyhQcm9jZXNzSUQpOwotICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9yZWdyb3VuZENvdW50ZXIudmFsdWUoKSB8fCBtX2JhY2tncm91bmRDb3VudGVy
LnZhbHVlKCk7IH0KKyAgICBib29sIHNob3VsZEJlUnVubmFibGUoKSBjb25zdCB7IHJldHVybiBt
X2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSB8fCBtX2JhY2tncm91bmRBY3Rpdml0aWVzLnNp
emUoKTsgfQogCiBwcml2YXRlOgogICAgIEFzc2VydGlvblN0YXRlIGV4cGVjdGVkQXNzZXJ0aW9u
U3RhdGUoKTsKQEAgLTcxLDYgKzEwMywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFByZXBh
cmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQpOwogICAgIHZvaWQgcHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCk7CiAKKyAgICB2b2lkIGFkZEFjdGl2aXR5KEZvcmVncm91bmRBY3Rpdml0
eSYpOworICAgIHZvaWQgYWRkQWN0aXZpdHkoQmFja2dyb3VuZEFjdGl2aXR5Jik7CisgICAgdm9p
ZCByZW1vdmVBY3Rpdml0eShGb3JlZ3JvdW5kQWN0aXZpdHkmKTsKKyAgICB2b2lkIHJlbW92ZUFj
dGl2aXR5KEJhY2tncm91bmRBY3Rpdml0eSYpOworICAgIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2
aXRpZXMoKTsKKwogICAgIC8vIFByb2Nlc3NBc3NlcnRpb25DbGllbnQKICAgICB2b2lkIHVpQXNz
ZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKSBvdmVycmlkZTsKIApAQCAtODAsMjIgKzExOCwy
MiBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NJRCBtX3Byb2Nlc3NJZGVudGlmaWVyIHsgMCB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKICAgICBS
dW5Mb29wOjpUaW1lcjxQcm9jZXNzVGhyb3R0bGVyPiBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0
VGltZXI7Ci0gICAgRm9yZWdyb3VuZEFjdGl2aXR5Q291bnRlciBtX2ZvcmVncm91bmRDb3VudGVy
OwotICAgIEJhY2tncm91bmRBY3Rpdml0eUNvdW50ZXIgbV9iYWNrZ3JvdW5kQ291bnRlcjsKKyAg
ICBIYXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXM7Cisg
ICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRBY3Rpdml0aWVzOwog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CiAgICAg
Ym9vbCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247CiB9OwogCi1pbmxpbmUgUHJv
Y2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6
Zm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdAoraW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90
dGxlcjo6Zm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8Rm9yZWdyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBGb3JlZ3JvdW5kQWN0aXZp
dHlUb2tlbihtX2ZvcmVncm91bmRDb3VudGVyLmNvdW50KCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvcmVncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCi1pbmxpbmUgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gUHJvY2Vzc1Rocm90dGxlcjo6YmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSBjb25zdAoraW5saW5lIGF1dG8gUHJvY2Vzc1Rocm90dGxl
cjo6YmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAtPiBzdGQ6OnVuaXF1ZV9w
dHI8QmFja2dyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbihtX2JhY2tncm91bmRDb3VudGVyLmNvdW50KCkpOwotfQotICAgIAorICAgIHJldHVybiBt
YWtlVW5pcXVlPEJhY2tncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKwogI2VuZGlmIC8vIFByb2Nlc3NUaHJvdHRsZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDdlYzVh
NmIxYjBkZTQ3ZmE2N2MyN2EzODcxYTA2Mzc5YTgyNTI3YTEuLjdlMTUwZTM3ZTdiMDU3OGM1NjNl
NjExNjlmOGY5MThjOTczY2Q4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlBy
b2Nlc3NQcm8KICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9wcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50KHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSkKKyAgICAsIG1fcHJvdmlzaW9uYWxMb2Fk
QWN0aXZpdHkobV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlByb3Zp
c2lvbmFsIExvYWQiX3MpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94eTogcGFnZVByb3h5SUQ9JSIgUFJJ
dTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRD0lIiBQUkl1NjQgIiBzdXNw
ZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdl
SUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDYzNGZi
NzVlODczOGUxNGU0MjdkOTc4YmM4ZGVmZjY0NTEyZjFlZjQuLjYyN2U2OTFmNjI0ZDFlYjc4Mzhh
ODhjNjVlOWI2YzcxY2JkZDI2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG1fYWNjZXNzaWJpbGl0eVRva2VuOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
biBtX3N1c3BlbnNpb25Ub2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2aXR5OwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
CmluZGV4IDcyOGQ4YjBlNWNlNzI1MTgxM2IxOTc2Y2Q0MjA0ZGE2MTUzOTM1OGQuLmI3YjA0Njk1
OTI1ZGM2OGZkYzY1NjM1OGU1OWYxNDIxNWU4NWNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKFdURjo6RnVuY3Rpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmQoTWVz
c2FnZXM6OkRyYXdpbmdBcmVhOjpBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQobV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVh
OjpBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIHByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdp
bmciX3MpKSkpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omhp
ZGVDb250ZW50VW50aWxQZW5kaW5nVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDdmODljZWVmYzNmMjZkNmRkYTYwNDdmZmVk
NDE3YWNlYmQwNDQ5MDMuLmVhYmVmOWE3OGQwMTQ3NmM4NGJlMzRlN2ExMWU0NDE2YjEyNTBhMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMTAyLDcgKzEwMiw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5
KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX3Nob3Vs
ZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShzaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiAg
ICAgLCBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU3Vz
cGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQpCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkKKyAgICAsIG1fc3VzcGVuc2lvbkFjdGl2aXR5KG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIHN1c3BlbnNpb24gZm9y
IGJhY2svZm9yd2FyZCBjYWNoZSJfcykpCiAjZW5kaWYKIHsKICAgICBhbGxTdXNwZW5kZWRQYWdl
cygpLmFkZCh0aGlzKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94
eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNp
bwogICAgIG1fc3VzcGVuc2lvblRpbWVvdXRUaW1lci5zdG9wKCk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0cjsKKyAgICBtX3N1c3Bl
bnNpb25BY3Rpdml0eSA9IG51bGxwdHI7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaAppbmRleCBlZTJjNmEzNzUyNGYyYzkxYWRhZmVhYWJjZjc5M2FkZTZkNjFkOGQ3
Li43MDJlOTYyOTY4ZTYxYTZlODYxNzFmOWFhNDBhZmNkZGJkMGE4ZWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+
IG1fcmVhZHlUb1Vuc3VzcGVuZEhhbmRsZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8U3VzcGVuZGVk
UGFnZVByb3h5PiBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXI7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N1
c3BlbnNpb25Ub2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5PiBtX3N1c3BlbnNpb25BY3Rpdml0eTsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5j
cHAKaW5kZXggNTlmYmVkNWYwY2NlYmYxZTlhZTUyOTliYWM4YTZkYWNlNWFiMzU2ZS4uYWU1NmU1
MzNhNjBiMjdmNzljYzFhZTNlNzY2YWM4MTc0OWE3ZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eSgpCiB7CiAgICAgaWYgKG1fYmFja0ZvcndhcmRJdGVtSUQgJiYgIW1fc3VzcGVuZGVkUGFnZSkg
ewogICAgICAgICBhdXRvJiBwcm9jZXNzID0gdGhpcy0+cHJvY2VzcygpOwotICAgICAgICBwcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQ
YWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbdG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCldIHsgfSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9y
d2FyZEl0ZW1JRCksIFthY3Rpdml0eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJDbGVhcmluZyBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkiX3MpXSB7IH0pOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggMWIzZTE1NWFkOWQ0YzJhMmExMmZkZWM2NjQ2NWUwYzNkZTMyZWU2Ni4u
ZGMyY2Q2OTYzNTEyODE0Y2JlZGIxMDhmYmI1ZDQzMmNkMjZkYTVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0g
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXShWZWN0b3I8U3RyaW5nPiYmIGhvc3RuYW1l
cykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzIl9zKV0oVmVjdG9yPFN0cmlu
Zz4mJiBob3N0bmFtZXMpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1v
dmUoaG9zdG5hbWVzKSk7CiAgICAgfSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9
IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nl
c3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVD
b29raWUoc2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShz
ZXNzaW9uSUQsIGNvb2tpZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llIl9zKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXYWxsVGltZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVu
c3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UiX3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb24KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVu
dFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFp
bkRvY3VtZW50VVJMKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29v
a2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3Mp
XSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBA
IC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxi
YWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQ
cm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxDb29r
aWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25J
RCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZp
dHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29v
a2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVz
KSk7CiAgICAgfSk7CiB9CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGEKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29y
a1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCB0b2tlbiA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRD
b29raWVzIl9zKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKICAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKICAgICB9KTsKIH0KQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZQogI2VuZGlmCiAKICAgICBhdXRvJiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0g
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgdG9rZW4gPSBuZXR3b3JrUHJvY2Vzcy50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpXSgpIG11dGFibGUgeworICAgIG5l
dHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kiX3MpXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQsIEhU
VFBDb29raWUKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1By
b2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIHRva2VuID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIG11
dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tG
dW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1By
b2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhh
MDZkN2YyMzkwYTEzNmJjZWRjNzAxOTg4MTExMTg2MjBiYjc4MmYuLjE3ZTRhNjc4OWE3OTY5MmU2
NjhkZTFjYWExOTc4NzA2MGY1MGU1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTA1NSw3ICsxMDU1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9z
ZSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24n
dCBob2xkIGEgcHJvY2VzcyBhc3NlcnRpb24gYWZ0ZXIgZ2V0dGluZyBjbG9zZWQuCi0gICAgbV9h
Y3Rpdml0eVRva2VuID0gbnVsbHB0cjsKKyAgICBtX2lzVmlzaWJsZUFjdGl2aXR5ID0gbnVsbHB0
cjsKKyAgICBtX2lzQXVkaWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2lzQ2FwdHVyaW5n
QWN0aXZpdHkgPSBudWxscHRyOworICAgIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5
QWN0aXZpdHkgPSBudWxscHRyOwogI2VuZGlmCiAKICAgICBzdG9wQWxsVVJMU2NoZW1lVGFza3Mo
KTsKQEAgLTE5MjksMjMgKzE5MzIsNDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90
dGxlU3RhdGUoKQogICAgICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBtX3Byb2Nl
c3MtPnByb2Nlc3NQb29sKCkudXNlck9ic2VydmFibGVQYWdlQ291bnQoKTsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0
YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpOwotICAgIGJvb2wg
aXNBdWRpYmxlID0gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQXVk
aWJsZSk7Ci0gICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgJiYgIW1fYWx3YXlzUnVuc0F0Rm9yZWdy
b3VuZFByaW9yaXR5ICYmICFpc0NhcHR1cmluZ01lZGlhICYmICFpc0F1ZGlibGUpIHsKLSAgICAg
ICAgaWYgKG1fYWN0aXZpdHlUb2tlbikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBp
cyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIG5v
IGxvbmdlciB2aXNpYmxlIik7Ci0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRy
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghbV9hY3Rpdml0eVRva2VuKSB7Ci0gICAgICAg
IGlmIChpc1ZpZXdWaXNpYmxlKCkpCisgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgeworICAgICAg
ICBpZiAoIW1faXNWaXNpYmxlQWN0aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFs
aWQoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVu
c2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIHZpc2libGUiKTsKLSAgICAgICAgZWxz
ZSBpZiAoaXNBdWRpYmxlKQorICAgICAgICAgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHZpc2libGUiX3Mp
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2lzVmlzaWJsZUFjdGl2aXR5KSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJv
dHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSB0aGUgdmlldyBpcyBubyBsb25nZXIgdmlzaWJsZSIpOworICAgICAgICBtX2lzVmlz
aWJsZUFjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBib29sIGlzQXVkaWJsZSA9IG1f
YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOworICAgIGlm
IChpc0F1ZGlibGUpIHsKKyAgICAgICAgaWYgKCFtX2lzQXVkaWJsZUFjdGl2aXR5IHx8ICFtX2lz
QXVkaWJsZUFjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgcGxheWlu
ZyBhdWRpbyIpOwotICAgICAgICBlbHNlIGlmIChpc0NhcHR1cmluZ01lZGlhKQorICAgICAgICAg
ICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3Vu
ZEFjdGl2aXR5KCJWaWV3IGlzIHBsYXlpbmcgYXVkaW8iX3MpOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChtX2lzQXVkaWJsZUFjdGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3Mg
aXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgbm8gbG9u
Z2VyIHBsYXlpbmcgYXVkaW8iKTsKKyAgICAgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgfQorCisgICAgYm9vbCBpc0NhcHR1cmluZ01lZGlhID0gbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEpOworICAgIGlmIChpc0Nh
cHR1cmluZ01lZGlhKSB7CisgICAgICAgIGlmICghbV9pc0NhcHR1cmluZ0FjdGl2aXR5IHx8ICFt
X2lzQ2FwdHVyaW5nQWN0aXZpdHktPmlzVmFsaWQoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxlU3RhdGU6IFVJ
UHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIG1lZGlhIGNh
cHR1cmUgaXMgYWN0aXZlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVBy
b2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gZXZlbiB0aG91Z2ggdGhlIHZp
ZXcgaXMgbm90IHZpc2libGUgYmVjYXVzZSBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eSBpcyB0cnVlIik7Ci0gICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAgICAgICAgIG1faXNDYXB0dXJp
bmdBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJW
aWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1f
aXNDYXB0dXJpbmdBY3Rpdml0eSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVh
c2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBubyBs
b25nZXIgYWN0aXZlIik7CisgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7Cisg
ICAgICAgIGlmICghbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSB8fCAh
bV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eS0+aXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0
aW9uIGJlY2F1c2UgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgdHJ1ZSIpOwor
ICAgICAgICAgICAgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGFsd2F5cyBydW5z
IGF0IGZvcmVncm91bmQgcHJpb3JpdHkiX3MpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICht
X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5KSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRl
OiBVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBt
X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBpcyBubyBsb25nZXIgdHJ1ZSIpOworICAg
ICAgICBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5ID0gbnVsbHB0cjsK
ICAgICB9CiAjZW5kaWYKIH0KQEAgLTE5ODUsNyArMjAxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0
aXZpdHlTCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBIYWlsIE1hcnkgY2hlY2su
IFNob3VsZCBub3QgYmUgcG9zc2libGUgKGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSBzaG91
bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2libGUsCiAgICAgLy8gYW5kIGlmIHZpc2libGUgd2Ug
c2hvdWxkIGJlIGhvbGRpbmcgYW4gYXNzZXJ0aW9uKSAtIGJ1dCB3ZSBzaG91bGQgbmV2ZXIgYmxv
Y2sgb24gYSBzdXNwZW5kZWQgcHJvY2Vzcy4KLSAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikgewor
ICAgIGlmICghbV9pc1Zpc2libGVBY3Rpdml0eSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMDgsNyArMjAzNCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9h
cmRFdmVudFZhbGlkLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6
c2V0SW5pdGlhbEZvY3VzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJv
YXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTIwMzMsNyArMjA1
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBj
b21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTIxMzEsNyArMjE1Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3Qg
U3RyaW5nJiBhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVk
aXRDb21tYW5kIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpF
eGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxs
YmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtMjE1NSw3ICsyMTgxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVu
Y3Rpb248dm9pZChjb25zdCBXZWIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJh
Y2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzcxMyw3ICszNzM5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMs
IGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzIl9zKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhX
VEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzczOCwxNCArMzc2NCwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1f
d2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1haW5GcmFt
ZSgpLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZy
YW1lIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTM3NTYsNyArMzc4Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zNzY3LDcgKzM3OTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUs
IFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFn
ZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZSJfcykpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmlu
Z0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zNzc5LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzU3RyaW5nIl9zKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQpAQCAt
MzgwMyw3ICszODI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlIl9zKSk7CiAgICAg
bV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxi
YWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0zODE1LDcgKzM4NDEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Omdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQiX3MpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdD
YWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7CiB9CkBAIC0zODI4LDcgKzM4NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29u
dGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhcwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERh
dGEiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRl
bnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KICNlbmRpZgpAQCAt
Mzg0MCw3ICszODY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAt
Mzg1MSw3ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zODYy
LDcgKzM4ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSJfcykpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IApAQCAtMzg3Myw3ICszODk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0
YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC0zODg0LDcgKzM5MTAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUs
IEZ1bmN0aW9uPHZvaWQgKEFQSQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVBy
b3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtMzkxNyw3ICszOTQzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNr
KQogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Zm9yY2VS
ZXBhaW50Il9zKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0
ZU9uTmV4dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
b3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTcyMDksNyArNzIz
NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgbV93YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2lu
Z0VsZW1lbnQgPSBmYWxzZTsKICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRz
ID0gbnVsbHB0cjsKLSAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOworCisgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG51bGxwdHI7CisgICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX2Fsd2F5c1J1
bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5ID0gbnVsbHB0cjsKICNlbmRpZgogCiAgICAg
bV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbnVsbHB0cjsKQEAgLTc4MjgsNyArNzg1OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpkcmF3VG9Q
REYiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BE
RihmcmFtZUlELCByZWN0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04MTY4
LDcgKzgxOTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6
OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhYwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMiX3MpKTsKICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04MTc5LDcgKzgyMDksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jh
bmdlLCBDYWxsYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGVkUmFuZ2VBc3luYyJfcykpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApA
QCAtODE5MCw3ICs4MjIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMiX3Mp
KTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhG
b3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04
MjAxLDcgKzgyMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMiX3Mp
KTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApA
QCAtODI0NSw3ICs4Mjc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRS
ZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QiX3MpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXpl
LCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC04NTIxLDcgKzg1
NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcihGdW5jdGlvbjx2b2lkKCk+JgogCiAgICAgYXV0byB2b2lkQ2FsbGJhY2sg
PSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGF1dG8pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAg
ICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIiX3MpKTsK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJh
Y2spKTsKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxs
YmFja0lEKTsKIH0KQEAgLTg2NjUsNyArODY5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFj
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5j
dGlvbjsKLSAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9w
dGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBP
cHRpb25hbENhbGxiYWNrSUQoKTsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIg
PSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbiJfcykpKSA6IE9wdGlvbmFs
Q2FsbGJhY2tJRCgpOwogCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5l
d0NhbGxiYWNrSWRlbnRpZmllciksIG1fd2ViUGFnZUlEKTsKICAgICB9KTsKQEAgLTg4ODIsNyAr
ODkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0
dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgRnVuY3Rpb248CiAgICAgfQogCiAgICAgYXV0byBhdHRh
Y2htZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50
Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRh
Y2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3Bs
YXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwg
Y2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9B
dHRhY2htZW50TWFwLnNldChhdHRhY2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50
KSk7CiB9CkBAIC04ODk4LDcgKzg5MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAg
IGlmIChhdXRvIGRhdGEgPSBhdHRhY2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQogICAgICAg
ICBkYXRhUmVmZXJlbmNlID0geyAqZGF0YSB9OwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMiX3Mp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXpl
Rm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5h
bWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsK
IH0KIApAQCAtOTA1Nyw3ICs5MDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0
aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjoKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0Il9z
KSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25N
YW5pZmVzdChjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBkNDdiN2Y0ZjI3ZGQzNDBhOTNlYTM2YzU4ZTZjMTZmNzg4
ZGI4MjU1Li5kNGM4ZThiNmQ4YTVkYTFiN2VkOGQyMjdjOThkMGUwY2EyOWI3OGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjI5MSw3ICsyMjkxLDEwIEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fYWxsb3dzTWVkaWFE
b2N1bWVudElubGluZVBsYXliYWNrIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWx3YXlzUnVuc0F0
Rm9yZWdyb3VuZFByaW9yaXR5IHsgZmFsc2UgfTsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbiBtX2FjdGl2aXR5VG9rZW47CisgICAgc3RkOjp1bmlxdWVfcHRy
PFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4gbV9pc1Zpc2libGVBY3Rpdml0
eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2
aXR5PiBtX2lzQXVkaWJsZUFjdGl2aXR5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhy
b3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1faXNDYXB0dXJpbmdBY3Rpdml0eTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX2Fs
d2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5OwogI2VuZGlmCiAgICAgYm9vbCBt
X2luaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPGRv
dWJsZT4gbV9jcHVMaW1pdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBiYmQ0OGMzN2M3ZmQyYzFmMGQ3MDc3YmYxMTg3M2JjODA0NmJhNDY3Li5jYTMw
YjY3YjkwNWI4MWFiYzhhOWMwMmY1NjQ1MDllZTQxNTFhMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05MTcsMTIgKzkxNywxMiBAQCBXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMoV2ViUAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQpCiB7
Ci0gICAgYXV0byBpbml0aWFsaXphdGlvbkFjdGl2aXR5VG9rZW4gPSBwcm9jZXNzLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Ci0gICAgYXV0byBzY29wZUV4aXQgPSBtYWtl
U2NvcGVFeGl0KFsmcHJvY2VzcywgaW5pdGlhbGl6YXRpb25BY3Rpdml0eVRva2VuXSB7CisgICAg
YXV0byBpbml0aWFsaXphdGlvbkFjdGl2aXR5ID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlByb2Nlc3MgaW5pdGlhbGl6YXRpb24iX3MpOworICAgIGF1dG8gc2Nv
cGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJnByb2Nlc3MsIGluaXRpYWxpemF0aW9uQWN0aXZpdHkg
PSBXVEZNb3ZlKGluaXRpYWxpemF0aW9uQWN0aXZpdHkpXSgpIG11dGFibGUgewogICAgICAgICAv
LyBSb3VuZC10cmlwIHRvIHRoZSBXZWIgQ29udGVudCBwcm9jZXNzIGJlZm9yZSByZWxlYXNpbmcg
dGhlCi0gICAgICAgIC8vIGluaXRpYWxpemF0aW9uIGFjdGl2aXR5IHRva2VuLCBzbyB0aGF0IHdl
J3JlIHN1cmUgdGhhdCBhbGwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gYWN0aXZpdHksIHNv
IHRoYXQgd2UncmUgc3VyZSB0aGF0IGFsbAogICAgICAgICAvLyBtZXNzYWdlcyBzZW50IGZyb20g
dGhpcyBmdW5jdGlvbiBoYXZlIGJlZW4gaGFuZGxlZC4KLSAgICAgICAgcHJvY2Vzcy5pc1Jlc3Bv
bnNpdmUoW2luaXRpYWxpemF0aW9uQWN0aXZpdHlUb2tlbl0gKGJvb2wpIHsgfSk7CisgICAgICAg
IHByb2Nlc3MuaXNSZXNwb25zaXZlKFtpbml0aWFsaXphdGlvbkFjdGl2aXR5ID0gV1RGTW92ZShp
bml0aWFsaXphdGlvbkFjdGl2aXR5KV0gKGJvb2wpIHsgfSk7CiAgICAgfSk7CiAKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2VzcygpOwpAQCAtMjA0OSwyNCArMjA0OSwyNCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdp
bi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5m
b3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9yZWdy
b3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0Zv
clNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2
aWNlIFdvcmtlciBmb3IgdmlzaWJsZSB2aWV3KHMpIl9zKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFy
KCk7CisgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRX
ZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2Fu
IGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAg
ICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxl
RG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9i
YWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFj
dGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSkKKyAgICAgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdv
cmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7
CisgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Zm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKLSAgICAg
ICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwor
ICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5j
bGVhcigpOworICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5jbGVhcigpOwogICAgIH07CiAgICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oKTsKICNlbmRpZgpAQCAtMjA3NSwyMyArMjA3NSwyMyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgICAgICBpZiAobV9mb3JlZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2ZvcmVn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmZv
cmVncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFj
dGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwog
ICAgICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRv
Rm9yZWdyb3VuZCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9r
ZW5Gb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2JhY2tncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFs
dWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9j
ZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vz
cyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7
CisgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3Mp
IHsKKyAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3Jr
aW5nIGZvciBmb3JlZ3JvdW5kIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQ
cm9jZXNzID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0
d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAg
ICAgICBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7CisgICAg
ICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogICAg
IH07CiAgICAgdXBkYXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgpAQCAtMjEw
MCwxMSArMjEwMCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2Vy
dGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNy
YXNoZWQ7IHRha2UgbmV3IHRva2VucyBmb3IgdGhlIG5ldyBuZXR3b3JrIHByb2Nlc3MuCi0gICAg
aWYgKG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fYmFja2dy
b3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3MgPSBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Ci0gICAgZWxzZSBpZiAobV9mb3JlZ3Jv
dW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzcykKLSAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5Gb3JO
ZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuZm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZWQ7
IHRha2UgbmV3IGFjdGl2aXRpZXMgZm9yIHRoZSBuZXcgbmV0d29yayBwcm9jZXNzLgorICAgIGlm
IChtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKQorICAgICAgICBtX2JhY2tn
cm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGJhY2tncm91bmQg
dmlldyhzKSJfcyk7CisgICAgZWxzZSBpZiAobV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3Jr
UHJvY2VzcykKKyAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJO
ZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obmV3TmV0d29ya1Byb2Nlc3NQcm94eSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA0Y2NjOTZiOWNlYjU4OGM0NDgwZTRjZjRjYjc3
NWNlNDczYjNlYzMuLjhkYTBiMTcyNTlmNjRlMGM0M2IwM2E5MTIwN2Y5ZWNhNDJkMmY4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYwLDExICs3NjAs
MTEgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRX
ZWJQcm9jZXNzQ291bnRlciBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKICAgICBCYWNr
Z3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7Ci0g
ICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5k
VG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKLSAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1fZm9y
ZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlG
b3JOZXR3b3JrUHJvY2VzczsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1h
cDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3Vu
ZEFjdGl2aXR5VG9rZW4+IG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc1Rocm90
dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+
IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNz
VGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PiBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9y
U2VydmljZVdvcmtlclByb2Nlc3NlczsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBhZWE1YmE5NmVhMGIyNTRjZjQ4
ODdiYTliZDc0MDJlNTBhNjBiNTkuLmVkNTRkNGFjYzhjZjk2M2ZlYzU4NjJjZGVhZWE4NDMyNjZi
YmYyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAKICAg
ICBtX3Jlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwogICAgIG1fYmFja2dyb3VuZFJl
c3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwotICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9j
a2VkRmlsZXMgPSBudWxscHRyOworICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMg
PSBudWxscHRyOwogCiAgICAgZm9yIChhdXRvJiBmcmFtZSA6IGNvcHlUb1ZlY3RvcihtX2ZyYW1l
TWFwLnZhbHVlcygpKSkKICAgICAgICAgZnJhbWUtPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsK
QEAgLTEwMTMsMTAgKzEwMTMsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBBU1NF
UlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Np
b25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFBy
b2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0
ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0b2tlbiwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gcmVwbHkpIG11dGFibGUgeworICAg
IGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpG
ZXRjaFdlYnNpdGVEYXRhKGRhdGFUeXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKICNp
ZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5k
aWYKQEAgLTEwMzAsMTAgKzEwMzAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnMKICAgICBB
U1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNl
c3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIHRva2VuID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAgICBhdXRvIGFjdGl2aXR5ID0gdGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNp
dGVEYXRhIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgp
LCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdl
YnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9k
aWZpZWRTaW5jZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRva2Vu
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKKyAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFj
dGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BB
UkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMDQ3LDEwICsxMDQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0
byB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgYXV0
byBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lG
KGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
V2ViIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIGZvciBzZXZlcmFsIG9yaWdpbnMi
LCB0aGlzKTsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmln
aW5zKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdG9rZW4sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmlnaW5zKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2
aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFN
KHRoaXMpOwogI2VuZGlmCkBAIC0xMjkyLDEyICsxMjkyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQog
ewogICAgIGlmICghaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBh
c3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlzIG5vIGxvbmdlciBob2xk
aW5nIGxvY2tlZCBmaWxlcyIpOwotICAgICAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVz
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX3Rva2VuRm9ySG9sZGlu
Z0xvY2tlZEZpbGVzKSB7CisgICAgaWYgKCFtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVz
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlz
IHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOwotICAgICAgICBtX3Rva2VuRm9ySG9sZGlu
Z0xvY2tlZEZpbGVzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKKyAg
ICAgICAgbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiSG9sZGluZyBsb2NrZWQgZmlsZXMiX3MpOwogICAgIH0KIH0KIApAQCAt
MTUxOCwyMSArMTUxOCwyMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGx1Z0luRGlkUmVjZWl2
ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJfdCBoYXNoKQogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykK
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRha2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1
bGxzY3JlZW5JbnB1dCgpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRCYWNrZ3JvdW5kQWN0
aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogewotICAgIGlmIChtX2JhY2tncm91bmRBY3Rpdml0
eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scykKKyAgICBpZiAobV9iYWNrZ3JvdW5kQWN0
aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG1fdGhy
b3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZp
dHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2
aXR5KCJGdWxsc2NyZWVuIGlucHV0Il9zKTsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IGl0IGlzIHByZXNlbnRpbmcgZnVsbHNjcmVlbiBVSSBmb3IgZm9ybSBjb250cm9scy4iKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZv
ckZ1bGxzY3JlZW5JbnB1dCgpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kQmFja2dyb3VuZEFj
dGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW5Gb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzKQorICAgIGlmICghbV9iYWNrZ3JvdW5k
QWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbkZvcm1Db250cm9scyA9IG51
bGxwdHI7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xz
ID0gbnVsbHB0cjsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2Vz
cyBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGl0IGhhcyBkaXNt
aXNzZWQgZnVsbHNjcmVlbiBVSSBmb3IgZm9ybSBjb250cm9scy4iKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwNjMyYjY5NzU4ZGU5MThjZDY4
ZjRhZGM3Y2ZjNjgzMDEyMWJhZjE5Li4yYTI0NmU3ZWQyZTYxYzgxMWRhMmYxYjA3NDUyMWE0ZjRl
NDdjN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAt
MjQ2LDggKzI0Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zpc2lv
bmFsTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9h
ZHM7IH0KIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCi0gICAgdm9pZCB0YWtlQmFja2dyb3VuZEFj
dGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKLSAgICB2b2lkIHJlbGVhc2VCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpOworICAgIHZvaWQgc3RhcnRCYWNr
Z3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKKyAgICB2b2lkIGVuZEJhY2tncm91
bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpOwogI2VuZGlmCiAKICAgICBib29sIGlzUHJl
d2FybWVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ByZXdhcm1lZDsgfQpAQCAtNDc5LDcgKzQ3OSw3
IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25X
YXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwotICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JIb2xkaW5nTG9j
a2VkRmlsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eT4gbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlczsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9mb3JlZ3JvdW5k
VG9rZW47CiAgICAgQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbiBtX2JhY2tncm91bmRUb2tlbjsK
QEAgLTUxMiw3ICs1MTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBdWRpYmxlV2ViUGFn
ZSB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShXQVRDSE9TKQotICAgIFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JG
dWxsc2NyZWVuRm9ybUNvbnRyb2xzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxs
c2NyZWVuRm9ybUNvbnRyb2xzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDM4ZmFlMTYxMzVkOTY2ZTAzYjc4MDhhNzI0MzY3MWUzODVhZjM0MTQuLmYw
MmQwYzIyOTc0ZjhiYTA4MmUwYjQzMDkwNDcxNDNiZTFkYTMxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNTkwNiw3ICs1OTA2LDcgQEAgLSAodm9pZClwcmVzZW50Vmlld0NvbnRyb2xsZXJGb3JDdXJy
ZW50Rm9jdXNlZEVsZW1lbnQKICAgICAgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVz
ZW50Vmlld0NvbnRyb2xsZXI6X3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVy
LmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CiAKICAgICAvLyBQcmVzZW50aW5n
IGEgZnVsbHNjcmVlbiBpbnB1dCB2aWV3IGNvbnRyb2xsZXIgZnVsbHkgb2JzY3VyZXMgdGhlIHdl
YiB2aWV3LiBXaXRob3V0IHRha2luZyB0aGlzIHRva2VuLCB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vz
cyB3aWxsIGdldCBiYWNrZ3JvdW5kZWQuCi0gICAgX3BhZ2UtPnByb2Nlc3MoKS50YWtlQmFja2dy
b3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKTsKKyAgICBfcGFnZS0+cHJvY2Vz
cygpLnN0YXJ0QmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCk7CiAKICAgICBb
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyLnRyYW5zaXRpb25Db29yZGluYXRvciBhbmltYXRlQWxv
bmdzaWRlVHJhbnNpdGlvbjpuaWwgY29tcGxldGlvbjpbd2Vha1dlYlZpZXcgPSBXZWFrT2JqQ1B0
cjxXS1dlYlZpZXc+KF93ZWJWaWV3KSwgY29udHJvbGxlciA9IF9wcmVzZW50ZWRGdWxsU2NyZWVu
SW5wdXRWaWV3Q29udHJvbGxlcl0gKGlkIDxVSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvb3Jk
aW5hdG9yQ29udGV4dD4pIHsKICAgICAgICAgYXV0byBzdHJvbmdXZWJWaWV3ID0gd2Vha1dlYlZp
ZXcuZ2V0KCk7CkBAIC01OTQyLDcgKzU5NDIsNyBAQCAtICh2b2lkKWRpc21pc3NBbGxJbnB1dFZp
ZXdDb250cm9sbGVyczooQk9PTClhbmltYXRlZAogICAgICAgICAgICAgW3NlbGYgYmVjb21lRmly
c3RSZXNwb25kZXJdOwogICAgIH0KIAotICAgIF9wYWdlLT5wcm9jZXNzKCkucmVsZWFzZUJhY2tn
cm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCk7CisgICAgX3BhZ2UtPnByb2Nl
c3MoKS5lbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKIH0KIAogLSAo
dm9pZClmb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGlkU3VibWl0OihXS0ZvY3VzZWRGb3JtQ29udHJv
bFZpZXcgKil2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCAwNDJiYjVkMzIxNGZlMDAwMTU1NmY5YTYxMzI5NTkzY2RmOThiMTRkLi45
ODlmY2Q2YjBlYmQyNjg2NmJlYjNiNzc0YmUyYzFjY2ExNWRiMmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE5OSw3ICsxOTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oRnVu
Y3Rpb248dm9pZChjb25zdCBGb2N1c2VkRQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24iX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKGNhbGxiYWNrSUQp
LCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNv
cmU6OlRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhH
ZXN0dXJlIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwg
Z2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lE
KSwgbV93ZWJQYWdlSUQpOwogfQogCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0
YXJ0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtNDcxLDcgKzQ3MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5h
bFRleHQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTQ4OSw3ICs0ODksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2Vi
UGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCJfcykpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0
eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9u
KSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbiJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0
PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24p
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogICAgIApAQCAtNTIyLDcgKzUyMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQ
YWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2ludCJfcykpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQog
CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5E
aXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbiJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rp
b25JbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
QEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9p
bnQiX3MpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNl
bGVjdGlvbldpdGhFeHRlbnRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxl
bWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKICAgICAKIH0KQEAgLTU1Niw3ICs1NTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5k
Qm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSJf
cykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkocG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogICAg
IAogfQpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0
aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQiX3Mp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRp
b25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTU4OSw3ICs1ODks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3Qg
V2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29U
b3VjaGVzIl9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RXaXRoVHdvVG91Y2hlcyhmcm9tLCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2Fs
bGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCiAgICAgLy8gV2Ugbm9y
bWFsbHkgZGVsYXkgcHJvY2VzcyBzdXNwZW5zaW9uIHdoZW4gdGhlIGFwcCBpcyBiYWNrZ3JvdW5k
ZWQgdW50aWwgdGhlIGN1cnJlbnQgcGFnZSBsb2FkIGNvbXBsZXRlcy4gSG93ZXZlciwKICAgICAv
LyB3ZSBkbyBub3Qgd2FudCB0byBkbyBzbyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkIGZvciBw
b3dlciByZWFzb25zLgogICAgIGlmIChpc1N1c3BlbmRlZFVuZGVyTG9jaykKLSAgICAgICAgTmF2
aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqdGhpcykucmVsZWFzZU5ldHdvcmtBY3Rpdml0eVRv
a2VuKE5hdmlnYXRpb25TdGF0ZTo6TmV0d29ya0FjdGl2aXR5VG9rZW5SZWxlYXNlUmVhc29uOjpT
Y3JlZW5Mb2NrZWQpOworICAgICAgICBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp0aGlz
KS5yZWxlYXNlTmV0d29ya0FjdGl2aXR5KE5hdmlnYXRpb25TdGF0ZTo6TmV0d29ya0FjdGl2aXR5
UmVsZWFzZVJlYXNvbjo6U2NyZWVuTG9ja2VkKTsKICNlbmRpZgogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNw
ZW5kZWRVbmRlckxvY2spLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC03MTUsNyArNzE1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9m
ZnNldChXZWJDb3JlOjpUZXh0R3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0Il9zKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJp
dHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTcyNiw3ICs3
MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRX
aXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0Il9z
KSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0F0U2Vs
ZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdl
SUQpOwogfQogCkBAIC03NTIsNyArNzUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxl
Y3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkJ5T2Zm
c2V0Il9zKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2Vs
ZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCkBA
IC0xMDE2LDcgKzEwMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0Rm9jdXNlZEVs
ZW1lbnQoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZChDYQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpmb2N1c05leHRGb2N1c2VkRWxlbWVudCJfcykp
OwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRGb2N1c2Vk
RWxlbWVudChpc0ZvcndhcmQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKQEAgLTEw
OTUsNyArMTA5NSw3IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgfQogCiAgICAgdWlu
dDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERiJfcykp
OwogICAgIHVzaW5nIE1lc3NhZ2UgPSBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdBbmREcmF3VG9QREY7CiAgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2UoZnJh
bWVJRCwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgTWVzc2FnZTo6UmVwbHkocGFnZUNvdW50KSwg
bV93ZWJQYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCkpOwogICAgIHJldHVybiBwYWdlQ291bnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCAxMTY5ZTI1MmU5NWIxYjFhYWU5ZmY1MDViNGFlZDhiNTYwMTBkMzk5Li4wOTc3YmI0ZWJlZjcy
YzZmMTAzZWEzZGE3YjU1YTk3MjgwMGIxOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3Qg
RWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmF0dHJp
YnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jIl9zKSk7CiAKICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC0yNDgs
NyArMjQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihGdW5jdGlvbjx2
b2lkKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uIl9zKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>