<?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>227301</bug_id>
          
          <creation_ts>2021-06-23 10:01:42 -0700</creation_ts>
          <short_desc>Make space request async for IndexedDB</short_desc>
          <delta_ts>2022-03-07 14:18:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771980</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-23 10:01:42 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772121</commentid>
    <comment_count>1</comment_count>
      <attachid>432111</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-23 16:52:50 -0700</bug_when>
    <thetext>Created attachment 432111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772527</commentid>
    <comment_count>2</comment_count>
      <attachid>432228</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-06-24 20:08:06 -0700</bug_when>
    <thetext>Created attachment 432228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773798</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-30 10:02:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/79972338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848971</commentid>
    <comment_count>4</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-07 14:18:01 -0800</bug_when>
    <thetext>We&apos;ve already implemented this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432111</attachid>
            <date>2021-06-23 16:52:50 -0700</date>
            <delta_ts>2021-06-24 20:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227301-20210623165250.patch</filename>
            <type>text/plain</type>
            <size>79049</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA4ZTQ2N2RlYTBlNzI4
MjhjMTkyMTI3ZTRjNzRiZTVmYTk1ZTlkMC4uNTlhNDA0YjUwYWY1MjFjMTU4ZjM3MTMwYWRmZjQ2
OTdlNzZjMTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTA2LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3BhY2UgcmVxdWVz
dCBhc3luYyBmb3IgSW5kZXhlZERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbmRleGVkREIgdXNlZCB0byBwZXJmb3JtIHF1b3RhIGNoZWNrIHN5bmNo
cm9ub3VzbHkuIFNpbmNlIGl0IHVzZXMgb25lIFdvcmtRdWV1ZSBwZXIgc2Vzc2lvbiwgcXVvdGEg
Y2hlY2sKKyAgICAgICAgZm9yIG9uZSBvcmdpbiBtYXkgYmxvY2sgdGhlIElEQiB0YXNrcyBvZiBv
dGhlciBvcmlnaW5zLiBUbyBmaXggdGhpcywgSURCU2VydmVyIG5vdyBtYWludGFpbnMgYSBxdWV1
ZSBvZiBhbGwKKyAgICAgICAgcGVuZGluZyB0YXNrcy4gSURCU2VydmVyIHdpbGwgaGFuZGxlIHRh
c2tzIGluIHF1ZXVlIHdoZW4gYSBuZXcgdGFzayBpcyBhZGRlZCwgb3IgYW4gYXN5bmMgcXVvdGEg
Y2hlY2sgZm9yIHNvbWUKKyAgICAgICAgdGFzayBpcyBkb25lLiBEdXJpbmcgdGhlIGhhbmRsaW5n
LCBpdCBza2lwcyB0YXNrcyB3aG9zZSBvcmlnaW4gaXMgZ29pbmcgdGhyb3VnaCBxdW90YSBjaGVj
ay4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlF1b3RhUmVxdWVzdEZyb21PbmVPcmlnaW5E
b2VzTm90QmxvY2tBbm90aGVyCisgICAgICAgICAgICAgICAgICBXZWJLaXQuRGF0YVJlbW92YWxE
dXJpbmdRdW90YVJlcXVlc3QKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJl
cXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZW5x
dWV1ZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmhhbmRs
ZVRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjbGVhclRh
c2tzKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclF1b3RhQ2hlY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bUN1cnJlbnRPcGVuT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXhBZnRlclF1b3Rh
Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cHV0T3JBZGRBZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aXRl
cmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Om9yaWdpbiBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmg6CisgICAg
ICAgICogcGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdp
bjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlUXVvdGFN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlcXVl
c3RTcGFjZSk6IElmIHF1b3RhIGNoZWNrIGlzIHBhc3NlZCwgZ3JhbnQgcmVxdWVzdCBhbmQgaW52
b2tlIGNhbGxiYWNrOyAKKyAgICAgICAgb3RoZXJ3aXNlLCBkaXNwYXRjaCB0aGUgcmVxdWVzdCB0
byBXb3JrUWV1ZXVlIG9mIFN0b3JhZ2VRdW90YU1hbmFnZXIuCisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpyZXF1ZXN0U3BhY2VPblF1b3RhUXVldWUpOiBPbiBXb3JrUXVl
dWUgb2YgU3RvcmFnZVF1b3RhTWFuYWdlciwgcXVvdGEgY2hlY2sgaXMKKyAgICAgICAgZG9uZSBz
eW5jaHJvbm91c2x5LgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVx
dWVzdFNwYWNlT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZCk6IERlbGV0ZWQu
CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg6CisKIDIwMjEtMDYtMjEg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgbW9yZSBv
ZiB0aGUgQ1NTIGxpc3Qgc3R5bGUgaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4ODBlMjll
ZDllZGYxNjEyNThlNDUxNzg1Zjg2YTRjNTE4N2YwNjkuLjZkNzA1ZTFlZjZlNzY4MGMyMGVhNThl
MGEzOGRkYmM1NTg3MDUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjEtMDYtMjMg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBzcGFjZSBy
ZXF1ZXN0IGFzeW5jIGZvciBJbmRleGVkREIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhbmQgYWRkIHRhc2tzIHRvIHRoZSB0YXNrIHF1ZXVl
IG9mIElEQlNlcnZlciwgaW5zdGVhZCBvZiBkaXNwYXRjaGluZyB0aGVtIHRvIFdvcmtRdWV1ZSBk
aXJlY3RseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlcjo6V2ViSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphYm9y
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjb21taXRUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpk
ZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1l
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRSZWNv
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Oml0ZXJhdGVD
dXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWJvcnRPcGVu
QW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGlkRmly
ZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6b3Bl
bkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNl
cnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcXVlc3RTcGFjZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisKIDIwMjEt
MDYtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xpdmUgVGV4dF0gW21hY09TXSBBZGQgYW4gaW50ZXJuYWwgb3B0aW9uIHRvIGRpc2FibGUgaW5s
aW5lIHRleHQgc2VsZWN0aW9uIGluIGltYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA2MjNl
N2I2NWJiMjc2ZjIxOWFlNzczNjJjZjhmZDJlNGE1MjM1MGMyLi41Yjk1YzE5ZmRhYWJiNWY1Yjdh
NmU5ZTEzMDE4NjJmOWZmMDAxNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTA2LTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2Ugc3BhY2UgcmVxdWVzdCBhc3luYyBmb3IgSW5kZXhlZERCCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjczMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcDoKKyAgICAgICAgKHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rlcik6
CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwogMjAyMS0wNi0yMSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEluUHJvY2Vz
c0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2YgVGhyZWFkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4
IDQ5ZDg3NjYyZmNiM2E1YWUyM2YyYTdhYjUyN2U2NTU3YzMyNmVhM2IuLmRkMTBkYTBlZmY2ZDRk
NjRlMzZhYmNjYjM1YTQwNGY2MWFlYWYzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC03MzMsMTkgKzczMywy
OSBAQCB2b2lkIElEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjb25zdAogICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmls
ZShvbGRPcmlnaW5QYXRoLCBuZXdPcmlnaW5QYXRoKTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdl
cjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZ
U0lTCit2b2lkIElEQlNlcnZlcjo6cmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CiAKLSAgICBTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpEZWNpc2lvbiByZXN1bHQgPSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6RGVueTsKKyAgICBhdXRvIG5ld0NhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBvcmlnaW4sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIGRlY2lzaW9uLCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpJ
c0RlY2lzaW9uQXN5bmMgaXNBc3luYykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
IAotICAgIC8vIFJlbGVhc2UgbG9jayBiZWNhdXNlIHNwYWNlIHJlcXVlc3RpbmcgY291bGQgYmUg
YmxvY2tlZC4KLSAgICBtX2xvY2sudW5sb2NrKCk7Ci0gICAgcmVzdWx0ID0gbV9zcGFjZVJlcXVl
c3RlcihvcmlnaW4sIHRhc2tTaXplKTsKLSAgICBtX2xvY2subG9jaygpOworICAgICAgICBpZiAo
aXNBc3luYyA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpJc0RlY2lzaW9uQXN5bmM6OlllcykKKyAg
ICAgICAgICAgIG1fbG9jay5sb2NrKCk7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBt
X29yaWdpbnNXYWl0aW5nRm9yUXVvdGFDaGVjay5yZW1vdmUob3JpZ2luKTsKKyAgICAgICAgY2Fs
bGJhY2soZGVjaXNpb24pOworCisgICAgICAgIGlmIChpc0FzeW5jID09IFN0b3JhZ2VRdW90YU1h
bmFnZXI6OklzRGVjaXNpb25Bc3luYzo6WWVzKSB7CisgICAgICAgICAgICBoYW5kbGVUYXNrcygp
OworICAgICAgICAgICAgbV9sb2NrLnVubG9jaygpOworICAgICAgICB9CisgICAgfTsKKworICAg
IG1fb3JpZ2luc1dhaXRpbmdGb3JRdW90YUNoZWNrLmFkZChvcmlnaW4pOworICAgIG1fc3BhY2VS
ZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6ZSwgV1RGTW92ZShuZXdDYWxsYmFjaykpOwogfQogCiB1
aW50NjRfdCBJREJTZXJ2ZXI6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3Rvcnks
IGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQpAQCAtNzgzLDUgKzc5Myw0OCBAQCB2b2lkIElE
QlNlcnZlcjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVhZCgpCiAgICAgfQogfQog
Cit2b2lkIElEQlNlcnZlcjo6ZW5xdWV1ZVRhc2soT3JpZ2luU291cmNlIHNvdXJjZSwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIENsaWVudE9yaWdpbiBvcmlnaW47CisgICAg
V1RGOjpzd2l0Y2hPbihzb3VyY2UsCisgICAgICAgIFsmb3JpZ2luXSAoY29uc3QgQ2xpZW50T3Jp
Z2luJiBzb3VyY2UpIHsgb3JpZ2luID0gc291cmNlOyB9LAorICAgICAgICBbJm9yaWdpbl0gKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkgeyBvcmlnaW4gPSByZXF1ZXN0RGF0YS5k
YXRhYmFzZUlkZW50aWZpZXIoKS5vcmlnaW4oKTsgfSwKKyAgICAgICAgW3RoaXMsICZvcmlnaW5d
IChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgewor
ICAgICAgICAgICAgaWYgKGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJh
bnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSB0cmFuc2FjdGlv
bi0+b3JpZ2luKCk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzLCAmb3JpZ2luXSAodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKGF1dG8q
IGRhdGFiYXNlQ29ubmVjdGlvbiA9IG1fZGF0YWJhc2VDb25uZWN0aW9ucy5nZXQoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogZGF0YWJh
c2UgPSBkYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkpCisgICAgICAgICAgICAgICAgICAg
IG9yaWdpbiA9IGRhdGFiYXNlLT5pZGVudGlmaWVyKCkub3JpZ2luKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICApOworCisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChUYXNrIHsgb3JpZ2luLCBXVEZNb3ZlKGZ1bmN0aW9u
KSB9KTsKKyAgICBpZiAoIW1fb3JpZ2luc1dhaXRpbmdGb3JRdW90YUNoZWNrLmNvbnRhaW5zKG9y
aWdpbikpCisgICAgICAgIGhhbmRsZVRhc2tzKCk7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpoYW5k
bGVUYXNrcygpCit7CisgICAgYXV0byBjdXJyZW50VGFza1F1ZXVlID0gc3RkOjpleGNoYW5nZSht
X3Rhc2tRdWV1ZSwgeyB9KTsKKyAgICB3aGlsZSAoIWN1cnJlbnRUYXNrUXVldWUuaXNFbXB0eSgp
KSB7CisgICAgICAgIGF1dG8gdGFzayA9IGN1cnJlbnRUYXNrUXVldWUudGFrZUZpcnN0KCk7Cisg
ICAgICAgIGlmICghbV9vcmlnaW5zV2FpdGluZ0ZvclF1b3RhQ2hlY2suY29udGFpbnModGFzay5v
cmlnaW4pKQorICAgICAgICAgICAgdGFzay5mdW5jdGlvbigpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgfQorfQorCit2
b2lkIElEQlNlcnZlcjo6Y2xlYXJUYXNrcygpCit7CisgICAgbV90YXNrUXVldWUuY2xlYXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmgKaW5kZXggYmM3MjMwYzgwY2ZiNjQ2YWZlYzhkZTU5MGMzMDM1NDY3MGY0YzdlZC4uYzg5YzQw
NmFhMDljZWJlNTI1ZTdhMjljYTI0NGQ3Mzc2NWY1NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNDgsMTAgKzQ4
LDEwIEBAIHN0cnVjdCBJREJHZXRSZWNvcmREYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsK
IAotY2xhc3MgSURCU2VydmVyIHsKK2NsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxJREJTZXJ2ZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICB1c2luZyBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjxT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbihjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCBzcGFjZVJlcXVlc3RlZCk+OworICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJl
cXVlc3RlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWlu
dDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlJlcXVlc3RDYWxsYmFj
ayYmKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNl
UmVxdWVzdGVyJiYsIExvY2smKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+SURCU2VydmVyKCk7CiAK
QEAgLTEwNCwxMSArMTA0LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VzRm9y
T3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgQ2xpZW50T3JpZ2luJik+JiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0gICAg
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gcmVxdWVzdFNwYWNlKGNvbnN0IENsaWVudE9y
aWdpbiYsIHVpbnQ2NF90IHRhc2tTaXplKTsKKyAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBD
bGllbnRPcmlnaW4mLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBDbGllbnRPcmlnaW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcERhdGFiYXNl
QWN0aXZpdGllc09uTWFpblRocmVhZCgpOwogCisgICAgdXNpbmcgT3JpZ2luU291cmNlID0gVmFy
aWFudDxDbGllbnRPcmlnaW4sIElEQlJlcXVlc3REYXRhLCBJREJSZXNvdXJjZUlkZW50aWZpZXIs
IHVpbnQ2NF90PjsKKyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAgIENsaWVudE9yaWdpbiBvcmln
aW47CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb247CisgICAgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVucXVldWVUYXNrKE9yaWdpblNvdXJjZSwgRnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyVGFza3MoKTsKKwog
cHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIApAQCAtMTE2LDYgKzEyNCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNNb2RpZmllZFNpbmNlRm9yVmVyc2lv
bihXYWxsVGltZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNXaXRo
T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBjb25z
dCBTdHJpbmcmKTsKIAorICAgIHZvaWQgaGFuZGxlVGFza3MoKTsKKwogICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOwogICAgIEhhc2hNYXA8SURCQ29ubmVjdGlvbklkZW50aWZpZXIsIFJl
ZlB0cjxJREJDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rpb25NYXA7CiAgICAgSGFzaE1h
cDxJREJEYXRhYmFzZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxVbmlxdWVJREJEYXRhYmFz
ZT4+IG1fdW5pcXVlSURCRGF0YWJhc2VNYXA7CkBAIC0xMjMsMTMgKzEzMywxNCBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+IG1f
ZGF0YWJhc2VDb25uZWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOwogCi0gICAgSGFz
aE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fZGVsZXRlRGF0YWJhc2VDb21wbGV0
aW9uSGFuZGxlcnM7Ci0KICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGg7CiAKICAg
ICBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgbV9zcGFjZVJlcXVlc3RlcjsKIAog
ICAgIExvY2smIG1fbG9jazsKKworICAgIEhhc2hTZXQ8Q2xpZW50T3JpZ2luPiBtX29yaWdpbnNX
YWl0aW5nRm9yUXVvdGFDaGVjazsKKyAgICBEZXF1ZTxUYXNrPiBtX3Rhc2tRdWV1ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXgg
OTllMTg1ODQ4M2I4N2QzZTRjZDQwMmM5NzI3YzhjYTUzZmYzYTczZi4uZjM2Nzk0YzllMjQ4ZTlh
OTlhYWI3N2MzMGE4ZWRjNzhmYWUxYjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBA
IC0xNzgsMTcgKzE3OCwxMiBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBxdW90YUVycm9yTWVzc2Fn
ZU5hbWUoY29uc3QgY2hhciogdGFza05hbWUpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxl
ZCB0byAiLCB0YXNrTmFtZSwgIiBpbiBkYXRhYmFzZSBiZWNhdXNlIG5vdCBlbm91Z2ggc3BhY2Ug
Zm9yIGRvbWFpbiIpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVu
dE9wZW5PcGVyYXRpb24oKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRP
cGVuT3BlcmF0aW9uQWZ0ZXJRdW90YUNoZWNrKFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
IGRlY2lzaW9uKQogewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uICglcCkiLCB0aGlzKTsKLQotICAgIEFTU0VSVChtX2N1
cnJlbnRPcGVuREJSZXF1ZXN0KTsKLSAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+
aXNPcGVuUmVxdWVzdCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyUXVvdGFDaGVjayIpOwogCiAgICAgSURC
RXJyb3IgYmFja2luZ1N0b3JlT3BlbkVycm9yOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsK
LSAgICAgICAgLy8gUXVvdGEgY2hlY2suCi0gICAgICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZl
ci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRp
b25Db3N0KTsKICAgICAgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KQogICAgICAgICAgICAgYmFja2luZ1N0b3JlT3BlbkVycm9yID0gSURCRXJy
b3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiT3BlbkJhY2tp
bmdTdG9yZSIpIH07CiAgICAgICAgIGVsc2UgewpAQCAtMjY0LDYgKzI1OSwyMyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgIG1heWJl
Tm90aWZ5Q29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2UoKTsKIH0KIAordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKK3sKKyAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbiIpOwor
CisgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QpOworICAgIEFTU0VSVChtX2N1cnJl
bnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1ZXN0KCkpOworCisgICAgaWYgKG1fYmFja2luZ1N0
b3JlKQorICAgICAgICBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclF1b3RhQ2hlY2so
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkdyYW50KTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShh
dXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclF1b3RhQ2hlY2soZGVj
aXNpb24pOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uIC0gJXMiLCBt
X2lkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTQ2LDIwICs1
NTgsMTcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWRkT3BlbkRhdGFiYXNlQ29ubmVjdGlv
bihSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW8KICAgICBtX29wZW5EYXRhYmFzZUNvbm5l
Y3Rpb25zLmFkZChhZG9wdFJlZihjb25uZWN0aW9uLmxlYWtSZWYoKSkpOwogfQogCi12b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmVBZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBkZWNpc2lvbikKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayIpOwogCi0gICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKLQotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwot
ICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNr
U2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAo
ZGVjaXNpb24gPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKICAgICAg
ICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNz
YWdlTmFtZSgiQ3JlYXRlT2JqZWN0U3RvcmUiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgYXV0byBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigp
LCBpbmZvKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZv
LT5hZGRFeGlzdGluZ09iamVjdFN0b3JlKGluZm8pOwpAQCAtNTY3LDcgKzU3NiwxOCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIExP
RyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKKwor
ICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVT
aXplKGluZm8pOworICAgIG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksICZ0cmFu
c2FjdGlvbiwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBkZWNpc2lv
bikgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIGNyZWF0ZU9i
amVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgZGVjaXNpb24pOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlIik7CkBAIC01ODYsMTQgKzYwNiwx
MiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAot
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2soVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIGRlY2lzaW9uKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZTo6cmVuYW1lT2JqZWN0U3RvcmUiKTsKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrIik7CiAKLSAgICAvLyBRdW90
YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCAr
IG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1f
aWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpEZW55KSB7CisgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55KSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yKFF1b3RhRXhjZWVk
ZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJSZW5hbWVPYmplY3RTdG9yZSIpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MTIsNyArNjMwLDE5IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAi
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlIik7CisKKyAgICBhdXRvIHRhc2tT
aXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsK
KyAgICBtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6
ZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCAmdHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBkZWNpc2lvbik7
CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZTo6Y2xlYXJPYmplY3RTdG9yZSIpOwpAQCAtNjIzLDE0ICs2NTMsMTIgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGkKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCi17
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayhVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uIGRlY2lzaW9uKQorIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4Iik7CisgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVj
ayIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRX
cml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2VydmVy
LnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChkZWNpc2lvbiA9PSBTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewogICAgICAgICBjYWxsYmFjayhJREJF
cnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJ
bmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjQ4LDcgKzY3NiwxOSBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIlVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOworCisgICAgYXV0byB0YXNrU2l6ZSA9IGRl
ZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CisgICAgbV9zZXJ2
ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgJnRyYW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgY3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodHJh
bnNhY3Rpb24sIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBkZWNpc2lvbik7CisgICAgfSk7Cit9
CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVJbmRleCIpOwpAQCAtNjc0LDE0ICs3MTQsMTIgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXhBZnRlclF1b3RhQ2hlY2soVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUsIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaywgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b24gZGVjaXNpb24pCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleCIpOworICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXhBZnRlclF1b3RhQ2hlY2siKTsK
IAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVP
cGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1
b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICBpZiAoZGVjaXNpb24gPT0gU3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5k
ZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcwNiwxMiArNzQ0LDYyIEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgY2FsbGJhY2soZXJyb3IpOwogfQogCi12b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUsIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRk
Iik7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleCIp
OwogCi0gICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKKyAgICBhdXRvIHRhc2tTaXplID0gZGVm
YXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKKyAgICBtX3Nl
cnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgcmVuYW1lSW5kZXhBZnRlclF1b3RhQ2hlY2sodHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgZGVjaXNpb24pOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwdXRPckFkZEFmdGVyUXVvdGFDaGVjayhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQktleURhdGEmIHVzZWRLZXksIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgS2V5
RGF0YUNhbGxiYWNrJiYgY2FsbGJhY2ssICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCwgSW5kZXhJ
RFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4ga2V5RGF0YU51
bWJlciwgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlOjpwdXRPckFkZEFmdGVyUXVvdGFDaGVjayIpOworCisgICAgYXV0byBvYmplY3RTdG9yZUlk
ZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKTsKKyAgICBhdXRv
KiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSBy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsKKworICAgIGF1dG8gZ2VuZXJhdGVk
S2V5UmVzZXR0ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIHVzZWRLZXld
KCkgeworICAgICAgICBpZiAodXNlZEtleUlzR2VuZXJhdGVkKQorICAgICAgICAgICAgbV9iYWNr
aW5nU3RvcmUtPnJldmVydEdlbmVyYXRlZEtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleS5udW1iZXIoKSk7CisgICAgfSk7CisKKyAg
ICBpZiAoZGVjaXNpb24gPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsK
KyAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJy
b3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIElmIGEgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGluIHN0b3JlLCB0aGVu
IHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBzIGZvciBkZWxldGlu
ZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgorICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50
IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJvbSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUg
YWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJpYXRlIGluZGV4ZXMuCisgICAgSURCRXJy
b3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXkpOworICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgaW5kZXhLZXlzLCB2
YWx1ZSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICBjYWxsYmFjayhlcnJv
ciwgdXNlZEtleSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoa2V5RGF0YU51
bWJlcikKKyAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5l
cmF0b3JOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
ICprZXlEYXRhTnVtYmVyKTsKKworICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsK
KyAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERC
LCAiVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIik7CiAKICAgICBJREJLZXlEYXRhIHVzZWRL
ZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CkBAIC03MjUsNyArODEzLDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXkKICAgICB9CiAKICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNl
OwotICAgIHVpbnQ2NF90IGtleU51bWJlcjsKKyAgICB1aW50NjRfdCBrZXlOdW1iZXIgPSAwOwog
ICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCk7CiAgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9IFdURjo6bWFrZVNj
b3BlRXhpdChbdGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsICZrZXlOdW1iZXIsICZ1c2VkS2V5SXNHZW5lcmF0ZWRdKCkgewogICAgICAgICBpZiAodXNl
ZEtleUlzR2VuZXJhdGVkKQpAQCAtNzYxLDYgKzg0OSw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBnZW5lcmF0ZWRLZXlSZXNldHRlci5yZWxlYXNl
KCk7CisKICAgICAvLyBRdW90YSBjaGVjay4KICAgICBhdXRvIGtleVNpemUgPSBlc3RpbWF0ZVNp
emUodXNlZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUgPSBlc3RpbWF0ZVNpemUodmFsdWUpOwpA
QCAtNzY5LDMzICs4NTksMTcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKIAogICAgIExPRyhJ
bmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQgcXVvdGEgY2hlY2sgd2l0aCB0
YXNrIHNpemU6ICUiIFBSSXU2NCAiIGtleSBzaXplOiAlIiBQUkl1NjQgIiB2YWx1ZSBzaXplOiAl
IiBQUkl1NjQgIiBpbmRleCBzaXplOiAlIiBQUkl1NjQsIHRhc2tTaXplLCBrZXlTaXplLCB2YWx1
ZVNpemUsIGluZGV4U2l6ZSk7CiAKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRl
bnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uOjpEZW55KSB7Ci0gICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVy
cm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikgfSwgdXNlZEtleSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiBhIHJlY29yZCBhbHJlYWR5IGV4aXN0cyBp
biBzdG9yZSwgdGhlbiByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHN0b3JlIHVzaW5nIHRoZSBzdGVw
cyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZS4KLSAgICAvLyBUaGlz
IGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0aW5nIGl0IGZyb20gZnJvbSB0aGUg
b2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBpbmRleGVz
LgotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5KTsKLSAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0
cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIGluZGV4S2V5
cywgdmFsdWUpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgY2FsbGJhY2so
ZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGtleURhdGFOdW1iZXI7CiAgICAgaWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBv
YmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAmJiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRl
eGVkREI6OktleVR5cGU6Ok51bWJlcikKLSAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+
bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGtleURhdGEubnVtYmVyKCkpOworICAgICAgICBrZXlEYXRhTnVt
YmVyID0ga2V5RGF0YS5udW1iZXIoKTsKIAotICAgIGdlbmVyYXRlZEtleVJlc2V0dGVyLnJlbGVh
c2UoKTsKLSAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisgICAgbV9zZXJ2ZXIucmVxdWVz
dFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdERhdGEsIHVzZWRLZXksIHZhbHVlLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywga2V5
RGF0YU51bWJlcl0gKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICBwdXRPckFkZEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwgdXNl
ZEtleSwgdmFsdWUsIFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4
S2V5cywga2V5RGF0YU51bWJlciwgZGVjaXNpb24pOworICAgIH0pOwogfQogCi12b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhLCBHZXRSZXN1bHRDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29y
ZERhdGEsIEdldFJlc3VsdENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRS
ZWNvcmQiKTsKQEAgLTgxMiw3ICs4ODYsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZQogICAg
IGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpn
ZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJh
Y2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
IGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKQEAgLTgyNCw3ICs4OTgsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2sgY2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CkBAIC04MzYsNyArOTEw
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICBjYWxsYmFjayhlcnJvciwgY291bnQp
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0
YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVSZWNvcmQiKTsKQEAgLTg0Nyw3ICs5MjEsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJRAogICAgIGNhbGxiYWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yIik7CkBAIC04NjAsNyArOTM0LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTsKIH0K
IAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRS
ZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRl
Q3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKQEAgLTg3NSw3ICs5NDksNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpj
b21taXRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC04OTcsNyArOTcxLDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3QKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRha2Vu
VHJhbnNhY3Rpb24pKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCAyMzZlMmJiNTVhMzUzNjI4OWFjNWY3NTVjOThh
YzBmODVhYTM4Nzk4Li5jNDQ1MTdiYTljMDg5MzEwODg3Y2NlZWNmMTRkNzVkZDk2ZWYwODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIklEQkRh
dGFiYXNlSW5mby5oIgogI2luY2x1ZGUgIklEQkdldFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZl
ck9wZW5EQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgpAQCAtODAs
MjIgKzgxLDIyIEBAIHB1YmxpYzoKICAgICBJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1f
c2VydmVyOyB9CiAgICAgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJy
b3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAg
ICB2b2lkIGRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNh
bGxiYWNrKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxs
YmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgZ2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwg
R2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjayk7Ci0gICAgdm9p
ZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZv
aWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZv
aWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JD
YWxsYmFjayk7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjayYmKTsK
KyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayYmKTsKKyAgICB2
b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
LCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayYmKTsKKyAgICB2b2lkIHB1dE9yQWRkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwg
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayYmKTsK
KyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJl
Y29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFs
bFJlc3VsdHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFjayYmKTsKKyAgICB2b2lk
IGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYsIEVycm9yQ2FsbGJhY2smJik7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrJiYpOworICAg
IHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2smJik7CisgICAgdm9pZCBjb21taXRUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayYmKTsK
KyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IEVycm9yQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2Vk
RnJvbUNsaWVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKQEAgLTE0MSw2ICsxNDIs
MTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAKKyAgICB2b2lkIHBlcmZvcm1DdXJyZW50
T3Blbk9wZXJhdGlvbkFmdGVyUXVvdGFDaGVjayhTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bik7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxs
YmFjayYmLCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik7CisgICAgdm9pZCByZW5hbWVP
YmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBFcnJvckNhbGxi
YWNrJiYsIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKTsKKyAgICB2b2lkIGNyZWF0ZUlu
ZGV4QWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJ
REJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrJiYsIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrJiYs
IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKTsKKyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJR
dW90YUNoZWNrKElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4SURUb0luZGV4S2V5TWFwLCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrJiYsIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uKTsKKyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNr
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVl
JiwgS2V5RGF0YUNhbGxiYWNrJiYsICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCwgSW5kZXhJRFRv
SW5kZXhLZXlNYXAsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBrZXlEYXRhTnVtYmVyLCBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik7CisKICAgICBJREJTZXJ2ZXImIG1fc2VydmVyOwogICAg
IElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCA0YTAyMGQzMzRlYTI2OTljZGM1YjVh
NjY3Y2UyZWMxMjdkNGQzNTAzLi5hZmE4ZmVhZTI2ZTU4NjI5YmZjYjg5OTc5YzA3NGVkOTM2YTUy
YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBA
IC00Niw2ICs0Niw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiB7CiAgICAgYXV0byBkYXRh
YmFzZSA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpOwogICAgIEFTU0VSVChkYXRh
YmFzZSk7CisgICAgbV9vcmlnaW4gPSBkYXRhYmFzZS0+aWRlbnRpZmllcigpLm9yaWdpbigpOwog
CiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6
OlZlcnNpb25jaGFuZ2UpCiAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCBlNDRhYjYzMDE3MjAzOWNhZjg1YzQ5ZmQ5
NmZjMGIxNmYxMThjOGYzLi5iOTNkMWRkNDY4NGE4Y2M4MzRiMmVjMzI2ZmJlZDMxNmFmNTY5NWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTg4LDYg
Kzg4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNYWluVGhyZWFkQWJvcnRSZXN1bHQoY29u
c3QgSURCRXJyb3ImIGVycm9yKSB7IG1fbWFpblRocmVhZEFib3J0UmVzdWx0ID0geyBlcnJvciB9
OyB9CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJFcnJvcj4mIG1haW5UaHJlYWRBYm9ydFJl
c3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpblRocmVhZEFib3J0UmVzdWx0OyB9CisgICAgY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogCiBw
cml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CkBAIC0xMDAsNiArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlm
aWVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8SURCRXJyb3I+IG1fbWFpblRocmVhZEFib3J0UmVz
dWx0OworICAgIENsaWVudE9yaWdpbiBtX29yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElE
QlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCAwMThjYjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJm
ZWEzNGNmNTViMTY0Li5kODAyOTg1MWYxZDk5NzA4Y2I1MDc0MjY3NjNiNTY1ZWM4ZDBmNDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBJREJDb25u
ZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAg
IElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0OwotICAgIElE
QlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkgY29uc3Q7CiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3Q7CiAg
ICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRP
cmlnaW4uaAppbmRleCBkNzczZDliMzEyYjM2YTk1NjBkY2Y0NGQ1MThiMTFjYmMwYWRjYWZiLi5j
YWJjZWUyNTI0YzI2MGRmNmEwZGI0OWI2OGNmODE3ZjM3YzIzYjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2xpZW50T3JpZ2luLmgKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAK
ICAgICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlbGF0
ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdG9wT3Jp
Z2luID09IG90aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBvdGhlcjsgfQorICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhdG9wT3JpZ2luLmlzRW1wdHkoKTsgfQogCiAg
ICAgUmVnaXN0cmFibGVEb21haW4gY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJl
dHVybiBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoY2xpZW50T3Jp
Z2luLmhvc3QpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZVF1b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1h
bmFnZXIuY3BwCmluZGV4IDcxODI1OTY0YTg0YTE0NTY2MzRhZmM5MWQwNDc4NDBhNWU4YzM3MzQu
LmNmMDA1MjdkNWE4MmIyYjU4NGNmNGQ3NTc4YjgyMmZiMTEwMGRjMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcApAQCAtNDcsMjkgKzQ3LDI3
IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlN0b3JhZ2VRdW90YU1hbmFnZXIodWludDY0X3QgcXVv
dGEsIFVzYWdlR2V0dGVyJiYgdXNhZ2VHZXR0CiB7CiB9CiAKLXZvaWQgU3RvcmFnZVF1b3RhTWFu
YWdlcjo6cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBS
ZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVx
dWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxs
YmFjaywgV29ya1F1ZXVlJiBjYWxsYmFja1F1ZXVlKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0KICAgICAvLyBGYXN0IHBhdGguCiAgICAgaWYgKG1fcXVvdGFDb3VudERvd25Mb2Nr
LnRyeUxvY2soKSkgewogICAgICAgICBpZiAodHJ5R3JhbnRSZXF1ZXN0KHNwYWNlUmVxdWVzdGVk
KSkgewogICAgICAgICAgICAgbV9xdW90YUNvdW50RG93bkxvY2sudW5sb2NrKCk7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhEZWNpc2lvbjo6R3JhbnQpOworICAgICAgICAgICAgY2FsbGJhY2soRGVj
aXNpb246OkdyYW50LCBJc0RlY2lzaW9uQXN5bmM6Ok5vKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBtX3F1b3RhQ291bnREb3duTG9jay51bmxvY2soKTsKICAgICB9
CiAKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc3BhY2VSZXF1ZXN0ZWQsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZGVjaXNpb24gPSByZXF1ZXN0U3BhY2VPbkJhY2tn
cm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBkZWNpc2lvbl0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3BhY2VSZXF1ZXN0ZWQsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhbGxiYWNrUXVldWUgPSBtYWtlUmVmKGNhbGxiYWNr
UXVldWUpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGRlY2lzaW9uID0gcmVxdWVzdFNwYWNl
T25RdW90YVF1ZXVlKHNwYWNlUmVxdWVzdGVkKTsKKyAgICAgICAgY2FsbGJhY2tRdWV1ZS0+ZGlz
cGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRlY2lzaW9uXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY2FsbGJhY2soZGVjaXNpb24sIElzRGVjaXNpb25Bc3luYzo6WWVzKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
IFN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZCh1aW50
NjRfdCBzcGFjZVJlcXVlc3RlZCkKK1N0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZU9uUXVvdGFRdWV1ZSh1aW50NjRfdCBzcGFjZVJl
cXVlc3RlZCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaAppbmRleCAxZTc1NGUzNDBmYjAwYWE2
OTFkMzc0OTI0ODU4NGQ5MDc2Y2M4MDBmLi4xNWU4ODhjMzA4YTYyNDAxZWEzMWQ3NjIzZWE2NWZi
YTZhYzdmNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90
YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFn
ZXIuaApAQCAtNDQsMTYgKzQ0LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IGRlZmF1bHRRdW90YSgpIHsgcmV0dXJuIDEwMDAgKiBNQjsgfQogICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSgpIHsgcmV0dXJuIGRlZmF1
bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVvdGEoZGVmYXVsdFF1b3RhKCkpOyB9CiAK
LSAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsgRGVueSwgR3JhbnQgfTsKLSAgICB1c2luZyBSZXF1
ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY2lzaW9uKT47Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0U3BhY2VPbk1haW5UaHJlYWQodWludDY0X3QsIFJlcXVl
c3RDYWxsYmFjayYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEZWNpc2lvbiByZXF1ZXN0U3BhY2VP
bkJhY2tncm91bmRUaHJlYWQodWludDY0X3QpOworICAgIGVudW0gY2xhc3MgRGVjaXNpb24gOiBi
b29sIHsgRGVueSwgR3JhbnQgfTsKKyAgICBlbnVtIGNsYXNzIElzRGVjaXNpb25Bc3luYyA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgdXNpbmcgUmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEZWNpc2lvbiwgSXNEZWNpc2lvbkFzeW5jKT47CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFJlcXVlc3RDYWxs
YmFjayYmLCBXb3JrUXVldWUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRRdW90
YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldFF1b3RhRm9yVGVzdGluZygpOworCiBwcml2YXRlOgogICAgIFN0b3JhZ2VRdW90YU1h
bmFnZXIodWludDY0X3QgcXVvdGEsIFVzYWdlR2V0dGVyJiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0
ZXImJik7CiAgICAgYm9vbCB0cnlHcmFudFJlcXVlc3QodWludDY0X3QpIFdURl9SRVFVSVJFU19M
T0NLKG1fcXVvdGFDb3VudERvd25Mb2NrKTsKKyAgICBEZWNpc2lvbiByZXF1ZXN0U3BhY2VPblF1
b3RhUXVldWUodWludDY0X3QpOwogCiAgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25Vc2FnZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmNwcAppbmRleCA1NzUzNzdkOGUyZmQzZmUxZDc1MDJkNzE4MDk1MWI2ZGYy
NjFlMTU1Li4zODJmNTQ2NTU1YTAyNTM4ZjBjNzQyNDFmNTcxZDUzYmJhZjBjOTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNl
cnZlci5jcHAKQEAgLTI4LDIxICsyOCwyNiBAQAogCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSURCU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0lEQkN1cnNvckluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkl0ZXJhdGVD
dXJzb3JEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViSURCU2VydmVyPiBXZWJJREJTZXJ2ZXI6OmNy
ZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVx
dWVzdGVyJiYgc3BhY2VSZXF1ZXN0ZXIpCitSZWY8V2ViSURCU2VydmVyPiBXZWJJREJTZXJ2ZXI6
OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
LCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiBzcGFjZVJlcXVlc3RlcikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJREJTZXJ2ZXIoc2Vzc2lvbklELCBkaXJlY3Rv
cnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKSk7CiB9CiAKLVdlYklEQlNlcnZlcjo6V2ViSURC
U2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnks
IFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VS
ZXF1ZXN0ZXImJiBzcGFjZVJlcXVlc3RlcikKK1dlYklEQlNlcnZlcjo6V2ViSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmIHNwYWNlUmVxdWVzdGVyKQogICAgIDogbV9xdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5JbmRleGVkREJTZXJ2ZXIiKSkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBk
aXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNwYWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJl
cXVlc3RlcildICgpIG11dGFibGUgeworICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXJXaXRoV29ya1F1
ZXVlID0gW3F1ZXVlID0gbV9xdWV1ZS5jb3B5UmVmKCksIHNwYWNlUmVxdWVzdGVyID0gV1RGTW92
ZShzcGFjZVJlcXVlc3RlcildIChjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkLCBhdXRvJiYgY2FsbGJhY2spIHsKKyAgICAgICAgc3BhY2VSZXF1ZXN0ZXIob3JpZ2lu
LCBzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjayksIHF1ZXVlLmdldCgpKTsKKyAgICB9
OworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNl
c3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzcGFjZVJlcXVl
c3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXJXaXRoV29ya1F1ZXVlKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKQEAgLTE0NCw3ICsxNDksNyBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3RE
YXRhKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2socmVxdWVzdERhdGEsIHN0ZDo6YmluZCgm
SURCU2VydmVyOjpJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVl
c3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC0xNTIsNyArMTU3LDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGVsZXRl
RGF0YWJhc2UocmVxdWVzdERhdGEpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0
RGF0YSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UsIG1f
c2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6YWJv
cnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKQEAgLTE2MCw3ICsxNjUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6
YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6YWJvcnRUcmFuc2Fj
dGlvbiwgbV9zZXJ2ZXIuZ2V0KCksIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lk
IFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBAIC0xNjgsNyArMTczLDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnMKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+Y29t
bWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX3NlcnZlci0+ZW5x
dWV1ZVRhc2sodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURC
U2VydmVyOjpjb21taXRUcmFuc2FjdGlvbiwgbV9zZXJ2ZXIuZ2V0KCksIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCkBAIC0xNzYsNyArMTgxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRpZEZpbmlzaEhh
bmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ28KICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2soZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24sIG1fc2VydmVyLmdldCgpLCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJT
ZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9y
ZUluZm8pCkBAIC0xODQsNyArMTg5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKLSAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSW5mbyk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpj
cmVhdGVPYmplY3RTdG9yZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCkBAIC0xOTIsNyArMTk3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBt
X3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHJlcXVlc3RE
YXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpkZWxldGVPYmplY3RTdG9yZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZU5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCkBAIC0yMDAsNyArMjA1
LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZl
ci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
bmV3TmFtZSk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpyZW5hbWVP
YmplY3RTdG9yZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpCkBAIC0yMDgsNyArMjEzLDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5jbGVhck9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIG1fc2VydmVyLT5lbnF1ZXVl
VGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6
OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJiBpbmRleEluZm8pCkBAIC0yMTYsNyArMjIxLDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+
Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZGV4SW5mbyk7CisgICAgbV9zZXJ2ZXItPmVucXVl
dWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVJbmRleCwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3RE
YXRhLCBpbmRleEluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKQEAgLTIyNCw3ICsyMjks
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVy
LT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5h
bWUpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgs
IG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eE5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkK
QEAgLTIzMiw3ICsyMzcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NgogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwotICAgIG1fc2VydmVyLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworICAgIG1fc2VydmVyLT5lbnF1ZXVl
VGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6cmVuYW1lSW5kZXgsIG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0K
IAogdm9pZCBXZWJJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5RGF0YSwgY29u
c3QgV2ViQ29yZTo6SURCVmFsdWUmIHZhbHVlLCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0
b3JlT3ZlcndyaXRlTW9kZSBvdmVyV3JpdGVNb2RlKQpAQCAtMjQwLDcgKzI0NSw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IFdlCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07Ci0gICAgbV9zZXJ2ZXItPnB1dE9yQWRk
KHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcldyaXRlTW9kZSk7CisgICAgbV9zZXJ2
ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6
OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpwdXRPckFkZCwgbV9zZXJ2ZXIuZ2V0KCksIHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcldyaXRlTW9kZSkpOwogfQogCiB2b2lkIFdl
YklEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkK
QEAgLTI0OCw3ICsyNTMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgVwogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwotICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpOwor
ICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0UmVjb3JkLCBtX3NlcnZl
ci5nZXQoKSwgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpKTsKIH0KIAogdm9pZCBXZWJJREJT
ZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jk
c0RhdGEpCkBAIC0yNTYsNyArMjYxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29y
ZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb24KICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKLSAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxs
UmVjb3Jkc0RhdGEpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0
QWxsUmVjb3JkcywgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0
YSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKQEAgLTI2NCw3ICsyNjksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0
Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5
UmFuZ2VEYXRhKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2socmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCksIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldENv
dW50LCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSkpOwogfQogCiB2
b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5n
ZURhdGEpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZVJlY29y
ZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnMKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGVsZXRlUmVj
b3JkLCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSkpOwogfQogCiB2
b2lkIFdlYklEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mIGN1cnNvckluZm8p
CkBAIC0yODAsNyArMjg1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdAogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwotICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJbmZvKTsKKyAg
ICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2socmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCksIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6Om9wZW5DdXJzb3IsIG1fc2VydmVy
LmdldCgpLCByZXF1ZXN0RGF0YSwgY3Vyc29ySW5mbykpOwogfQogCiB2b2lkIFdlYklEQlNlcnZl
cjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhJiBpdGVyYXRlQ3Vyc29yRGF0
YSkKQEAgLTI4OCw3ICsyOTMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbgogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwotICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBpdGVyYXRlQ3Vy
c29yRGF0YSk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjppdGVyYXRl
Q3Vyc29yLCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERhdGEsIGl0ZXJhdGVDdXJzb3JEYXRhKSk7
CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkluZm8mIHRyYW5zYWN0aW9uSW5mbykKQEAgLTI5Niw3ICszMDEsNyBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgYwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5lc3RhYmxpc2hUcmFuc2Fj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbkluZm8pOworICAg
IG1fc2VydmVyLT5lbnF1ZXVlVGFzayhkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6
OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbiwgbV9zZXJ2
ZXIuZ2V0KCksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSW5mbykp
OwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3Nl
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC0zMDQsNyArMzA5LDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGUKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+
ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UsIG1fc2VydmVyLmdldCgpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTMxMiw3ICszMTcsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5kYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAg
bV9zZXJ2ZXItPmVucXVldWVUYXNrKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6
YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCwgbV9z
ZXJ2ZXIuZ2V0KCksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBX
ZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBAIC0zMjAsNyArMzI1LDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+YWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkLCBtX3NlcnZlci5nZXQoKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29u
bmVjdGlvbkNsb3NlZCkKQEAgLTMyOCw3ICszMzMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0
aW9uQ2xvc2VkKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2soZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNp
b25DaGFuZ2VFdmVudCwgbV9zZXJ2ZXIuZ2V0KCksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKSk7CiB9CiAKIHZvaWQgV2Vi
SURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKQEAgLTMzNiw3ICszNDEsNyBAQCB2b2lkIFdlYklEQlNlcnZl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKHJlcXVlc3REYXRhKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2socmVxdWVzdERhdGEs
IHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQs
IG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6
Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC0zNDcsNyArMzUyLDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGMKICAgICBBU1NFUlQod2ViSURCQ29ubmVjdGlvbik7
CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07Ci0gICAgbV9zZXJ2ZXItPmdl
dEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyh3ZWJJREJDb25uZWN0aW9uLT5pZGVudGlmaWVy
KCksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFz
ayhvcmlnaW4sIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucywgbV9zZXJ2ZXIuZ2V0KCksIHdlYklEQkNvbm5lY3Rpb24tPmlkZW50
aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbikpOwogfQogCiB2b2lkIFdlYklEQlNl
cnZlcjo6YWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQpAQCAtNDE0LDYgKzQxOSw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAKICAgICAgICAgewogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OworICAgICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyVGFza3MoKTsKICAg
ICAgICAgICAgIG1fc2VydmVyID0gbnVsbHB0cjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCmluZGV4
IDY5NzA3YjI3Mzk3ZGJlNTZlNDZmNzVjMzFmMzE5MDU5NmUwYjQxOTguLjZlNDRmMDNiNWExYjgy
MjUzMjAzZmU1NWM2MmM0YTY2YWZlYTI5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBDbGllbnRPcmlnaW47CiBjbGFzcyBTdG9yYWdlUXVvdGFNYW5hZ2VyOwogbmFtZXNwYWNl
IElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXI7CkBAIC00NSw3ICs0Niw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25u
ZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViSURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3RvcmFnZVF1b3RhTWFuYWdl
clNwYWNlUmVxdWVzdGVyJiYpOworICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJl
cXVlc3RlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWlu
dDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OlJlcXVl
c3RDYWxsYmFjayYmLCBXb3JrUXVldWUmKT47CisgICAgc3RhdGljIFJlZjxXZWJJREJTZXJ2ZXI+
IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmKTsKIAogICAgIHZvaWQgZ2V0T3JpZ2lucyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYm
KT4mJik7CiAgICAgdm9pZCBjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2Fs
bFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjayk7CkBAIC05MCw3ICs5
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiA9IHsgfSk7CiAKIHByaXZhdGU6Ci0gICAgV2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OlN0
b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmKTsKKyAgICBXZWJJREJTZXJ2ZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdG9yYWdlUXVvdGFNYW5hZ2Vy
U3BhY2VSZXF1ZXN0ZXImJik7CiAgICAgfldlYklEQlNlcnZlcigpOwogCiAgICAgdm9pZCBwb3N0
VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDQ5YmRkM2ZlYzY4MTM3Y2U0MzUzOTUw
MDM0YWRjNmIyNzUyYWY5ZTUuLjYwMTY2MjE4OTU5MTNiYTE5N2JjNzYzMzY2M2E0NTEzOTI0M2Q3
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0yMzQ3LDggKzIzNDcsOCBAQCBSZWY8V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlV2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
cGF0aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKICAgICB9CiAKLSAgICBh
dXRvIHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vz
c2lvbklEXShjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0g
ICAgICAgIHJldHVybiBwcm90ZWN0ZWRUaGlzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25J
RCwgb3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVk
KTsKKyAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2Vzc2lvbklEXShjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVz
dGVkLCBhdXRvJiYgY2FsbGJhY2ssIGF1dG8mIGNhbGxiYWNrUXVldWUpIHsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVl
c3RTcGFjZShzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFjayksIGNhbGxiYWNrUXVldWUp
OwogICAgIH07CiAgICAgcmV0dXJuIFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgcGF0
aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDU1
MDE5MDk2Mzc2NDNkNjA3YzNhNjEzMmJjOGRjYTJlYmQxMGEzMTUuLjdjYjMxZWZkZWNjMTEyZTli
MDkxOGU2YWVmOWFlNTUyZWI2ODIwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTI0NCwxOCAr
MjQ0LDE4IEBAIHVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBh
dGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYKICAgICByZXR1cm4gZ2V0RGlyZWN0b3J5
U2l6ZShkaXJlY3RvcnlQYXRoKTsKIH0KIAotdm9pZCBFbmdpbmU6OnJlcXVlc3RTcGFjZShjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb24pPiYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJlcXVlc3RTcGFjZShjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OlJlcXVlc3RDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3Mp
Ci0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
OjpEZW55KTsKKyAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkRlbnksIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OklzRGVjaXNpb25B
c3luYzo6Tm8pOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+IHN0
b3JhZ2VRdW90YU1hbmFnZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2Vy
KG1fc2Vzc2lvbklELCBvcmlnaW4pOwogICAgIGlmICghc3RvcmFnZVF1b3RhTWFuYWdlcikKLSAg
ICAgICAgY2FsbGJhY2soV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRl
bnkpOworICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbjo6RGVueSwgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6SXNEZWNpc2lvbkFzeW5j
OjpObyk7CiAKLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbk1haW5UaHJl
YWQoc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzdG9yYWdlUXVvdGFN
YW5hZ2VyLT5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBX
b3JrUXVldWU6Om1haW4oKSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgTmV0d29ya1Byb2Nlc3MmIHByb2Nlc3MsIFN0cmluZyYmIHJvb3RQYXRoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmgKaW5kZXggNmQ0NDg4MTI3OWQxYjk2MjdhOWE5ZTdhOTliMDVmM2RmNmNhZDA3OC4u
NzlhMmE5ODJlY2MyYzIxMTc4YWRkNzkxMmM4OGQ1YWZhMDEyOTZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5o
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUXVv
dGFVc2VyKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBzdGF0aWMg
dWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpOwotICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJik7CisgICAgdm9p
ZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc3Bh
Y2VSZXF1ZXN0ZWQsIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OlJlcXVlc3RDYWxsYmFj
ayYmKTsKIAogICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pb1F1
ZXVlO30KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDI5NGQwYmQ2ZGVhY2Zm
ZmFlODQzMmQ4ZGE5OThkZTAyOTdkMjhkYzIuLjUzNGZiYTRiMmJkYmQzMWE3MmMxMDI1NWE2YjA1
YjRlYzA0MzMyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTUyNCw3ICs1
MjQsNyBAQCB2b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9lbmdpbmUtPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgc3BhY2VSZXF1aXJlZCwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAg
IG1fZW5naW5lLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lzaW9uLCBhdXRvKSBtdXRhYmxlIHsKICAg
ICAgICAgc3dpdGNoIChkZWNpc2lvbikgewogICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55OgogICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6
OlF1b3RhRXhjZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBlZmJmNGYyZGYzYjJiYWQzMDdlNzdlNGJhZWM5MmE5
MzczNTY4NzY1Li4zMmIxNmU4MzdiNTc4Y2I3OGZkYzc1ZGIzOTI2NWQ4MGVlZDY2NGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cApAQCAtODMsOSArODMsMTIgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2Vy
dmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4KIAogc3RhdGljIGlu
bGluZSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVz
dGVyIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcihJblByb2Nlc3NJREJTZXJ2ZXIm
IHNlcnZlcikKIHsKLSAgICByZXR1cm4gW3NlcnZlciA9ICZzZXJ2ZXIsIHdlYWtTZXJ2ZXIgPSBt
YWtlV2Vha1B0cihzZXJ2ZXIpXShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qg
c3BhY2VSZXF1ZXN0ZWQpIG11dGFibGUgeworICAgIHJldHVybiBbc2VydmVyID0gJnNlcnZlciwg
d2Vha1NlcnZlciA9IG1ha2VXZWFrUHRyKHNlcnZlcildKGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdl
cjo6UmVxdWVzdENhbGxiYWNrJiYgY2FsbGJhY2spIG11dGFibGUgewogICAgICAgICBhdXRvKiBz
dG9yYWdlUXVvdGFNYW5hZ2VyID0gd2Vha1NlcnZlciA/IHNlcnZlci0+cXVvdGFNYW5hZ2VyKG9y
aWdpbikgOiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3RvcmFnZVF1b3RhTWFuYWdlciA/IHN0
b3JhZ2VRdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJl
cXVlc3RlZCkgOiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueTsKKyAgICAgICAg
aWYgKCFzdG9yYWdlUXVvdGFNYW5hZ2VyKQorICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZVF1
b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnksIFN0b3JhZ2VRdW90YU1hbmFnZXI6OklzRGVjaXNp
b25Bc3luYzo6Tm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdG9yYWdlUXVvdGFNYW5h
Z2VyLT5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spLCBzZXJ2
ZXItPnF1ZXVlKCkpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRleCA3M2VkOGNhMzhjZTZlZTkzNWViZTJjN2Iy
OTM4ZGNiYzZiODk1MzE3Li5kOGNjNjI3ZGNhYWM3MDNiNTU5OGQ4Mzc0ZTRmM2NmNzI3NmEzNmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZl
ci5oCkBAIC0xMjEsNiArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hUYXNrUmVw
bHkoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFn
ZXIqIHF1b3RhTWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBXb3Jr
UXVldWUmIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCiBwcml2YXRl
OgogICAgIEluUHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeVBhdGggPSBudWxsU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0ZTBhYzA3NWMyZGM5MDM5ZTk1ZGVl
ZWI5YWNkZjZhYWJiNGFkOTIuLjc5NzkzZDhhY2JkNjY4ODE4Nzg3MTYyMjAxODFmNTJkODQwZjc0
NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMS0wNi0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIHNwYWNlIHJlcXVlc3QgYXN5bmMgZm9yIEluZGV4ZWREQgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MzAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbToKKyAgICAgICAgKC1bUXVvdGFE
ZWxlZ2F0ZSBpbml0XSk6CisgICAgICAgICgtW1F1b3RhRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRl
RGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90YTpjdXJyZW50T3JpZ2lu
VXNhZ2U6Y3VycmVudERhdGFiYXNlVXNhZ2U6ZXhwZWN0ZWRVc2FnZTpkZWNpc2lvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1F1b3RhRGVsZWdhdGUgZ3JhbnRRdW90YV0pOgorCiAyMDIxLTA2LTIy
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbcmVzdWx0
cy53ZWJraXQub3JnXSBYU1MgdnVsbmVyYWJpbGl0eSBpbiBjb25maWd1cmF0aW9uCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1t
CmluZGV4IGYxYWI2ODM5ZGVjM2QyYTQxZTc0YTI4NzUzNDMzZGJiNDE2NmRkODMuLmM1MDFjNjYz
ZDY4N2ZkZWYyZmMzNzUxNTlkODI1ZmFmYzhlY2RmNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCkBAIC02Miw2ICs2
Miw3IEBAIHN0YXRpYyBib29sIHJlY2VpdmVkUXVvdGFEZWxlZ2F0ZUNhbGxlZDsKIEBpbXBsZW1l
bnRhdGlvbiBRdW90YURlbGVnYXRlIHsKICAgICBib29sIF9xdW90YURlbGVnYXRlQ2FsbGVkOwog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfY3VycmVudFF1b3RhOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBfY3VycmVudFVzYWdlOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfZXhwZWN0ZWRVc2Fn
ZTsKICAgICBCbG9ja1B0cjx2b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSk+IF9kZWNp
c2lvbkhhbmRsZXI7CiB9CkBAIC03NCw2ICs3NSw3IEBAIHN0YXRpYyBib29sIHJlY2VpdmVkUXVv
dGFEZWxlZ2F0ZUNhbGxlZDsKICAgICBfcXVvdGFEZWxlZ2F0ZUNhbGxlZCA9IGZhbHNlOwogICAg
IF9leHBlY3RlZFVzYWdlID0gMDsKICAgICBfY3VycmVudFF1b3RhID0gMDsKKyAgICBfY3VycmVu
dFVzYWdlID0gMDsKICAgICAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTgzLDYgKzg1LDcgQEAg
c3RhdGljIGJvb2wgcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkOwogICAgIHJlY2VpdmVkUXVv
dGFEZWxlZ2F0ZUNhbGxlZCA9IHRydWU7CiAgICAgX3F1b3RhRGVsZWdhdGVDYWxsZWQgPSB0cnVl
OwogICAgIF9jdXJyZW50UXVvdGEgPSBjdXJyZW50UXVvdGE7CisgICAgX2N1cnJlbnRVc2FnZSA9
IGN1cnJlbnRVc2FnZTsKICAgICBfZXhwZWN0ZWRVc2FnZSA9IGV4cGVjdGVkVXNhZ2U7CiAgICAg
X2RlY2lzaW9uSGFuZGxlciA9IGRlY2lzaW9uSGFuZGxlcjsKIH0KQEAgLTkzLDcgKzk2LDcgQEAg
c3RhdGljIGJvb2wgcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkOwogCiAtKHZvaWQpZ3JhbnRR
dW90YSB7CiAgICAgaWYgKF9xdW90YURlbGVnYXRlQ2FsbGVkKQotICAgICAgICBfZGVjaXNpb25I
YW5kbGVyKF9leHBlY3RlZFVzYWdlKTsKKyAgICAgICAgX2RlY2lzaW9uSGFuZGxlcihfZXhwZWN0
ZWRVc2FnZSArIF9jdXJyZW50VXNhZ2UpOwogICAgIF9xdW90YURlbGVnYXRlQ2FsbGVkID0gZmFs
c2U7CiB9CiAKQEAgLTUxNCwzICs1MTcsMTEyIEBAIFRFU1QoV2ViS2l0LCBEZWZhdWx0UXVvdGEp
CiAgICAgfQogICAgIEVYUEVDVF9GQUxTRShyZWNlaXZlZFF1b3RhRGVsZWdhdGVDYWxsZWQpOwog
fQorCitURVNUKFdlYktpdCwgUXVvdGFSZXF1ZXN0RnJvbU9uZU9yaWdpbkRvZXNOb3RCbG9ja0Fu
b3RoZXIpCit7CisgICAgLy8gU2V0IGEgc21hbGwgcXVvdGEuCisgICAgYXV0byBzdG9yZUNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldFBlck9yaWdpblN0b3JhZ2VR
dW90YTo0MDAgKiAxMDI0XTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICAvLyBPcGVuIGEgcGFnZSB0aGF0IHJlcXVlc3RzIHF1b3RhIGluY3JlYXNl
LgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTpkYXRhU3RvcmUuZ2V0KCldOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
UXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5k
bGVyLmdldCgpIG5hbWU6QCJxdCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1b3RhRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBzZXRWaXNp
YmxlKHdlYlZpZXcuZ2V0KCkpOworICAgIE5TU3RyaW5nICpodG1sU3RyaW5nID0gQCI8c2NyaXB0
PiBcCisgICAgICAgIHdpbmRvdy5pbmRleGVkREIub3BlbignZGInKS5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgeyBcCisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0OyBcCisgICAgICAgICAgICBsZXQgb3MgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb3Mn
KTsgXAorICAgICAgICAgICAgb3MuYWRkKG5ldyBVaW50OEFycmF5KDUwMCAqIDEwMjQpLCAna2V5
Jykub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgd2luZG93LndlYmtp
dC5tZXNzYWdlSGFuZGxlcnMucXQucG9zdE1lc3NhZ2UoJ0Vycm9yJyk7IFwKKyAgICAgICAgICAg
IH0gXAorICAgICAgICB9OyBcCisgICAgICAgIDwvc2NyaXB0PiI7CisgICAgcmVjZWl2ZWRRdW90
YURlbGVnYXRlQ2FsbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRt
bFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3Jn
Il1dOworICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkKTsKKworICAg
IC8vIE9wZW4gYW5vdGhlciBwYWdlIHRoYXQgZG9lcyBub3QgbmVlZCBxdW90YSBpbmNyZWFzZSwg
YW5kIG1ha2Ugc3VyZSBpdHMgSURCIHJlcXVlc3QgaXMgbm90IGJsb2NrZWQuCisgICAgYXV0byBz
ZWNvbmRXZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgTlNTdHJpbmcgKmh0bWxTdHJpbmcyID0gQCI8c2NyaXB0PiBcCisgICAg
ICAgIHdpbmRvdy5pbmRleGVkREIub3BlbignZGInKS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgeyBcCisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OyBc
CisgICAgICAgICAgICBsZXQgb3MgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb3MnKTsgXAorICAg
ICAgICAgICAgb3MuYWRkKG5ldyBVaW50OEFycmF5KDEpLCAna2V5Jykub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVy
cy5xdC5wb3N0TWVzc2FnZSgnU3VjY2VzcycpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAg
fTsgXAorICAgICAgICA8L3NjcmlwdD4iOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwor
ICAgIFttZXNzYWdlSGFuZGxlciBzZXRFeHBlY3RlZE1lc3NhZ2U6IEAiU3VjY2VzcyJdOworICAg
IFtzZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcyIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2FwcGxlLmNvbSJdXTsKKyAgICBVdGlsOjpydW4oJnJl
Y2VpdmVkTWVzc2FnZSk7CisKKyAgICAvLyBGaW5pc2ggcXVvdGEgaW5jcmVhc2UgcmVxdWVzdCBm
b3IgdGhlIGZpcnN0IHBhZ2UuCisgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisgICAgW21l
c3NhZ2VIYW5kbGVyIHNldEV4cGVjdGVkTWVzc2FnZTogQCJFcnJvciJdOworICAgIFtkZWxlZ2F0
ZSBkZW55UXVvdGFdOworICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKK30KKworVEVT
VChXZWJLaXQsIERhdGFSZW1vdmFsRHVyaW5nUXVvdGFSZXF1ZXN0KQoreworICAgIC8vIFNldCBh
IHNtYWxsIHF1b3RhLgorICAgIGF1dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3N0b3Jl
Q29uZmlndXJhdGlvbiBzZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGE6NDAwICogMTAyNF07CisgICAg
YXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGRvbmUg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQ
YXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgLy8gT3BlbiBh
IHBhZ2UgdGhhdCByZXF1aXJlcyBxdW90YSBpbmNyZWFzZS4KKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAg
ICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tRdW90YURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgc2V0VmlzaWJsZSh3ZWJWaWV3LmdldCgpKTsKKyAg
ICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPHNjcmlwdD4gXAorICAgICAgICBpbmRleGVkREIu
b3BlbignZGInKS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeyBcCisgICAgICAg
ICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OyBcCisgICAgICAgICAgICBsZXQgb3Mg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb3MnKTsgXAorICAgICAgICAgICAgbGV0IHJlcXVlc3Qg
PSBvcy5hZGQobmV3IFVpbnQ4QXJyYXkoNTAwICogMTAyNCksICdiaWcnKTsgXAorICAgICAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeyBcCisgICAgICAgICAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucXQucG9zdE1lc3NhZ2UoJ1N1Y2Nlc3Mn
KTsgXAorICAgICAgICAgICAgfTsgXAorICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsgXAorICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnF0LnBvc3RNZXNzYWdlKCdFcnJvcicpOyBcCisgICAgICAgICAgICB9OyBcCisgICAg
ICAgIH0gXAorICAgICAgICA8L3NjcmlwdD4iOworICAgIHJlY2VpdmVkUXVvdGFEZWxlZ2F0ZUNh
bGxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBV
dGlsOjpydW4oJnJlY2VpdmVkUXVvdGFEZWxlZ2F0ZUNhbGxlZCk7CisKKyAgICAvLyBSZXF1ZXN0
IGdldHMgZXJyb3IgZHVlIHRvIGRhdGEgcmVtb3ZhbC4KKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBm
YWxzZTsKKyAgICBbbWVzc2FnZUhhbmRsZXIgc2V0RXhwZWN0ZWRNZXNzYWdlOiBAIkVycm9yIl07
CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XiB7IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRNZXNzYWdlKTsKKworICAgIC8vIE1ha2UgcXVvdGEgZGVjaXNpb24gYW5kIGVuc3VyZSBp
dCBpcyByZW1lbWJlcmVkLgorICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFttZXNz
YWdlSGFuZGxlciBzZXRFeHBlY3RlZE1lc3NhZ2U6IEAiU3VjY2VzcyJdOworICAgIFtkZWxlZ2F0
ZSBncmFudFF1b3RhXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432228</attachid>
            <date>2021-06-24 20:08:06 -0700</date>
            <delta_ts>2021-06-24 20:08:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227301-20210624200805.patch</filename>
            <type>text/plain</type>
            <size>78733</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI2OTc5MDA0YTVmNzhj
YjhmYmRlZmJkYmM4ZGViMGU4ODhmNTk3Mi4uOGEyMjJhZTkyOGUwN2Q3MmQ3Y2IxZDg2NTFlMTNh
NjZhNDg0MWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTA2LTI0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3BhY2UgcmVxdWVz
dCBhc3luYyBmb3IgSW5kZXhlZERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbmRleGVkREIgdXNlZCB0byBwZXJmb3JtIHF1b3RhIGNoZWNrIHN5bmNo
cm9ub3VzbHkuIFNpbmNlIGl0IHVzZXMgb25lIFdvcmtRdWV1ZSBwZXIgc2Vzc2lvbiwgcXVvdGEg
Y2hlY2sKKyAgICAgICAgZm9yIG9uZSBvcmdpbiBtYXkgYmxvY2sgdGhlIElEQiB0YXNrcyBvZiBv
dGhlciBvcmlnaW5zLiBUbyBmaXggdGhpcywgSURCU2VydmVyIG5vdyBtYWludGFpbnMgYSBxdWV1
ZSBvZiBhbGwKKyAgICAgICAgcGVuZGluZyB0YXNrcy4gSURCU2VydmVyIHdpbGwgaGFuZGxlIHRh
c2tzIGluIHF1ZXVlIHdoZW4gYSBuZXcgdGFzayBpcyBhZGRlZCwgb3IgYW4gYXN5bmMgcXVvdGEg
Y2hlY2sgZm9yIHNvbWUKKyAgICAgICAgdGFzayBpcyBkb25lLiBEdXJpbmcgdGhlIGhhbmRsaW5n
LCBpdCBza2lwcyB0YXNrcyB3aG9zZSBvcmlnaW4gaXMgZ29pbmcgdGhyb3VnaCBxdW90YSBjaGVj
ay4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlF1b3RhUmVxdWVzdEZyb21PbmVPcmlnaW5E
b2VzTm90QmxvY2tBbm90aGVyCisgICAgICAgICAgICAgICAgICBXZWJLaXQuRGF0YVJlbW92YWxE
dXJpbmdRdW90YVJlcXVlc3QKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJl
cXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZW5x
dWV1ZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmhhbmRs
ZVRhc2tzKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25BZnRlclF1b3RhQ2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFy
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXhBZnRlclF1
b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6cHV0T3JBZGRBZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5D
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Om9yaWdpbiBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmg6Cisg
ICAgICAgICogcGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9y
aWdpbjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlUXVv
dGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OnJl
cXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpyZXF1
ZXN0U3BhY2VPblF1b3RhUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZCk6
IERlbGV0ZWQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg6CisKIDIw
MjEtMDYtMjQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc1NjMzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYTA0NGJjZjIx
MjIwMjVkOTg5N2QwYzkwYTk2YzA2NTdmZGI4NzRiLi4xNDUxMWMzYTBhMjFiNDViZWI5MjEzMDg5
ODYyMDE0ZGE0ZWIyZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA2LTI0ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3BhY2UgcmVx
dWVzdCBhc3luYyBmb3IgSW5kZXhlZERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjczMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDcmVhdGUgYW5kIGFkZCB0YXNrcyB0byB0aGUgdGFzayBxdWV1ZSBv
ZiBJREJTZXJ2ZXIsIGluc3RlYWQgb2YgZGlzcGF0Y2hpbmcgdGhlbSB0byBXb3JrUXVldWUgZGly
ZWN0bHkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWJvcnRU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjbGVhck9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0UmVjb3Jk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjppdGVyYXRlQ3Vy
c29yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVu
ZGluZ0Nsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFu
ZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5E
QlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5k
ZXhlZERCL1dlYklEQlNlcnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklE
QlNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcXVlc3RT
cGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RT
cGFjZSk6CisKIDIwMjEtMDYtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW3dhdGNoT1NdIEF1dG9tYXRpY2FsbHkgYXBwbHkgc3lzdGVtIG1pbmlt
dW0gbGF5b3V0IG1hcmdpbnMgYXMgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKaW5kZXggNjIzZTdiNjViYjI3NmYyMTlhZTc3MzYyY2Y4ZmQyZTRhNTIzNTBjMi4u
MGJiNGVmNmJhMGRhNGRiNWQyN2E1ZGRlZDdhYzJkODYwN2YyNjUwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wNi0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHNwYWNlIHJlcXVlc3QgYXN5bmMgZm9yIEluZGV4
ZWREQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3
MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
dG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChzdG9yYWdlUXVvdGFNYW5h
Z2VyU3BhY2VSZXF1ZXN0ZXIpOgorICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVy
Lmg6CisKKzIwMjEtMDYtMjQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBzcGFjZSByZXF1ZXN0IGFzeW5jIGZvciBJbmRleGVkREIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzMwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwOgorICAgICAgICAoc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVy
KToKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oOgorCiAyMDIxLTA2LTIx
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgSW5Qcm9j
ZXNzSURCU2VydmVyIHVzZSBXb3JrUXVldWUgaW5zdGVhZCBvZiBUaHJlYWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5k
ZXggNDlkODc2NjJmY2IzYTVhZTIzZjJhN2FiNTI3ZTY1NTdjMzI2ZWEzYi4uNjM5M2JiZjc3ZmE3
NWIzNjU5N2M5YjQ1YzJlM2YxZTE0OTliNjY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTczMywxOSArNzMz
LDI5IEBAIHZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0CiAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVG
aWxlKG9sZE9yaWdpblBhdGgsIG5ld09yaWdpblBhdGgpOwogfQogCi1TdG9yYWdlUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbiBJREJTZXJ2ZXI6OnJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVMKK3ZvaWQgSURCU2VydmVyOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKIAotICAgIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uIHJlc3VsdCA9IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uOjpEZW55OworICAgIGF1dG8gbmV3Q2FsbGJhY2sgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIG9yaWdpbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gZGVjaXNpb24sIFN0b3JhZ2VRdW90YU1hbmFnZXI6
OklzRGVjaXNpb25Bc3luYyBpc0FzeW5jKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZ
U0lTIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gUmVsZWFzZSBsb2NrIGJlY2F1c2Ugc3BhY2UgcmVxdWVzdGluZyBjb3VsZCBi
ZSBibG9ja2VkLgotICAgIG1fbG9jay51bmxvY2soKTsKLSAgICByZXN1bHQgPSBtX3NwYWNlUmVx
dWVzdGVyKG9yaWdpbiwgdGFza1NpemUpOwotICAgIG1fbG9jay5sb2NrKCk7CisgICAgICAgIGlm
IChpc0FzeW5jID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OklzRGVjaXNpb25Bc3luYzo6WWVzKQor
ICAgICAgICAgICAgbV9sb2NrLmxvY2soKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IG1fb3JpZ2luc1dhaXRpbmdGb3JRdW90YUNoZWNrLnJlbW92ZShvcmlnaW4pOworICAgICAgICBj
YWxsYmFjayhkZWNpc2lvbik7CisKKyAgICAgICAgaWYgKGlzQXN5bmMgPT0gU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6SXNEZWNpc2lvbkFzeW5jOjpZZXMpIHsKKyAgICAgICAgICAgIGhhbmRsZVRhc2tz
KCk7CisgICAgICAgICAgICBtX2xvY2sudW5sb2NrKCk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgbV9vcmlnaW5zV2FpdGluZ0ZvclF1b3RhQ2hlY2suYWRkKG9yaWdpbik7CisgICAgbV9zcGFj
ZVJlcXVlc3RlcihvcmlnaW4sIHRhc2tTaXplLCBXVEZNb3ZlKG5ld0NhbGxiYWNrKSk7CiB9CiAK
IHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9y
eSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCkBAIC03ODMsNSArNzkzLDQ2IEBAIHZvaWQg
SURCU2VydmVyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkKICAgICB9CiB9
CiAKK3ZvaWQgSURCU2VydmVyOjplbnF1ZXVlVGFzayhPcmlnaW5Tb3VyY2Ugc291cmNlLCBGdW5j
dGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgQ2xpZW50T3JpZ2luIG9yaWdpbjsKKyAg
ICBXVEY6OnN3aXRjaE9uKHNvdXJjZSwKKyAgICAgICAgWyZvcmlnaW5dIChjb25zdCBDbGllbnRP
cmlnaW4mIHNvdXJjZSkgeyBvcmlnaW4gPSBzb3VyY2U7IH0sCisgICAgICAgIFsmb3JpZ2luXSAo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKSB7IG9yaWdpbiA9IHJlcXVlc3REYXRh
LmRhdGFiYXNlSWRlbnRpZmllcigpLm9yaWdpbigpOyB9LAorICAgICAgICBbdGhpcywgJm9yaWdp
bl0gKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSB7
CisgICAgICAgICAgICBpZiAoYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIG9yaWdpbiA9IHRyYW5zYWN0
aW9uLT5vcmlnaW4oKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXMsICZvcmlnaW5dICh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogZGF0YWJhc2VDb25uZWN0aW9uID0gbV9kYXRhYmFzZUNvbm5lY3Rpb25zLmdldChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRh
YmFzZSA9IGRhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKSkKKyAgICAgICAgICAgICAgICAg
ICAgb3JpZ2luID0gZGF0YWJhc2UtPmlkZW50aWZpZXIoKS5vcmlnaW4oKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICk7CisKKyAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fb3JpZ2luc1dhaXRpbmdGb3JRdW90YUNoZWNrLmNvbnRhaW5zKG9yaWdp
bikpIHsKKyAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKFRhc2sgeyBvcmlnaW4sIFdURk1vdmUo
ZnVuY3Rpb24pIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnVuY3Rpb24oKTsK
K30KKwordm9pZCBJREJTZXJ2ZXI6OmhhbmRsZVRhc2tzKCkKK3sKKyAgICBhdXRvIGN1cnJlbnRU
YXNrUXVldWUgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFza1F1ZXVlLCB7IH0pOworICAgIHdoaWxlICgh
Y3VycmVudFRhc2tRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byB0YXNrID0gY3VycmVu
dFRhc2tRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFtX29yaWdpbnNXYWl0aW5nRm9y
UXVvdGFDaGVjay5jb250YWlucyh0YXNrLm9yaWdpbikpCisgICAgICAgICAgICB0YXNrLmZ1bmN0
aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdGFza1F1ZXVlLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGJjNzIzMGM4MGNmYjY0NmFmZWM4ZGU1OTBjMzAz
NTQ2NzBmNGM3ZWQuLjYzZGVhYzk5YmU2ZjgzNjYwNmRjZGRkODE3YzYyN2Y4Nzc3YTdlODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0YTsKIAogbmFt
ZXNwYWNlIElEQlNlcnZlciB7CiAKLWNsYXNzIElEQlNlcnZlciB7CitjbGFzcyBJREJTZXJ2ZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SURCU2VydmVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVx
dWVzdGVyID0gRnVuY3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24oY29uc3QgQ2xp
ZW50T3JpZ2luJiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpPjsKKyAgICB1c2luZyBTdG9yYWdl
UXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpSZXF1ZXN0Q2FsbGJhY2smJik+OwogICAgIFdFQkNPUkVfRVhQT1JUIElEQlNlcnZlcihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIFN0b3Jh
Z2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmLCBMb2NrJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgfklEQlNlcnZlcigpOwogCkBAIC0xMDQsMTEgKzEwNCwxOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbG9zZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0
YT4mLCBGdW5jdGlvbjxib29sKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IENsaWVu
dE9yaWdpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbmFtZU9yaWdpbihjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmKTsKIAotICAgIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIHJlcXVlc3RT
cGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB0YXNrU2l6ZSk7CisgICAgdm9pZCBy
ZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24pPiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYg
cm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKTsKIAorICAgIHVzaW5n
IE9yaWdpblNvdXJjZSA9IFZhcmlhbnQ8Q2xpZW50T3JpZ2luLCBJREJSZXF1ZXN0RGF0YSwgSURC
UmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdD47CisgICAgc3RydWN0IFRhc2sgeworICAgICAg
ICBDbGllbnRPcmlnaW4gb3JpZ2luOworICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9u
OworICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnF1ZXVlVGFzayhPcmlnaW5Tb3Vy
Y2UsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJh
c2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJik7CiAKQEAgLTExNiw2ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGhhbmRs
ZVRhc2tzKCk7CisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBIYXNoTWFw
PElEQkNvbm5lY3Rpb25JZGVudGlmaWVyLCBSZWZQdHI8SURCQ29ubmVjdGlvblRvQ2xpZW50Pj4g
bV9jb25uZWN0aW9uTWFwOwogICAgIEhhc2hNYXA8SURCRGF0YWJhc2VJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+PiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwOwpA
QCAtMTIzLDEzICsxMzIsMTQgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qPiBtX2RhdGFiYXNlQ29ubmVjdGlvbnM7CiAgICAgSGFz
aE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24q
PiBtX3RyYW5zYWN0aW9uczsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQg
KCk+PiBtX2RlbGV0ZURhdGFiYXNlQ29tcGxldGlvbkhhbmRsZXJzOwotCiAgICAgU3RyaW5nIG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoOwogCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVx
dWVzdGVyIG1fc3BhY2VSZXF1ZXN0ZXI7CiAKICAgICBMb2NrJiBtX2xvY2s7CisKKyAgICBIYXNo
U2V0PENsaWVudE9yaWdpbj4gbV9vcmlnaW5zV2FpdGluZ0ZvclF1b3RhQ2hlY2s7CisgICAgRGVx
dWU8VGFzaz4gbV90YXNrUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDk5ZTE4NTg0ODNiODdkM2U0Y2Q0MDJjOTcyN2M4
Y2E1M2ZmM2E3M2YuLjU2ZjE1ZjU2YTFkN2E4MGJmNjFlN2JiZTRkNzRjNzJlNTEyOTA0NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTc4LDE3ICsxNzgsMTIgQEAgc3RhdGljIGlu
bGluZSBTdHJpbmcgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKGNvbnN0IGNoYXIqIHRhc2tOYW1lKQog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gIiwgdGFza05hbWUsICIgaW4gZGF0YWJh
c2UgYmVjYXVzZSBub3QgZW5vdWdoIHNwYWNlIGZvciBkb21haW4iKTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uKCkKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyUXVvdGFDaGVjayhT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBkZWNpc2lvbikKIHsKLSAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbiAoJXAp
IiwgdGhpcyk7Ci0KLSAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdCk7Ci0gICAgQVNT
RVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlzT3BlblJlcXVlc3QoKSk7CisgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb25B
ZnRlclF1b3RhQ2hlY2siKTsKIAogICAgIElEQkVycm9yIGJhY2tpbmdTdG9yZU9wZW5FcnJvcjsK
ICAgICBpZiAoIW1fYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIC8vIFF1b3RhIGNoZWNrLgotICAg
ICAgICBhdXRvIGRlY2lzaW9uID0gbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5v
cmlnaW4oKSwgZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCk7CiAgICAgICAgIGlmIChkZWNpc2lv
biA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkKICAgICAgICAgICAgIGJh
Y2tpbmdTdG9yZU9wZW5FcnJvciA9IElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90
YUVycm9yTWVzc2FnZU5hbWUoIk9wZW5CYWNraW5nU3RvcmUiKSB9OwogICAgICAgICBlbHNlIHsK
QEAgLTI2NCw2ICsyNTksMjMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJl
bnRPcGVuT3BlcmF0aW9uKCkKICAgICBtYXliZU5vdGlmeUNvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hh
bmdlKCk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9w
ZXJhdGlvbigpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtQ3VycmVudE9wZW5PcGVyYXRpb24iKTsKKworICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJS
ZXF1ZXN0KTsKKyAgICBBU1NFUlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+aXNPcGVuUmVxdWVz
dCgpKTsKKworICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgcGVyZm9ybUN1cnJlbnRP
cGVuT3BlcmF0aW9uQWZ0ZXJRdW90YUNoZWNrKFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
OjpHcmFudCk7CisgICAgZWxzZSB7CisgICAgICAgIG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lk
ZW50aWZpZXIub3JpZ2luKCksIGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QsIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uQWZ0ZXJRdW90YUNoZWNrKGRlY2lzaW9uKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJhdGlv
bigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3Vy
cmVudERlbGV0ZU9wZXJhdGlvbiAtICVzIiwgbV9pZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKQEAgLTU0NiwyMCArNTU4LDE3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvCiAgICAgbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoYWRvcHRSZWYoY29ubmVjdGlv
bi5sZWFrUmVmKCkpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8sIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaywgU3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb24gZGVjaXNpb24pCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwor
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVB
ZnRlclF1b3RhQ2hlY2siKTsKIAotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7Ci0KLSAgICAv
LyBRdW90YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9u
Q29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKLSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNl
KG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55KSB7CisgICAgaWYgKGRlY2lzaW9uID09IFN0b3JhZ2VRdW90YU1hbmFn
ZXI6OkRlY2lzaW9uOjpEZW55KSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFF
eGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIkNyZWF0ZU9iamVjdFN0b3JlIikg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUp
OwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CiAgICAgaWYgKGVycm9yLmlzTnVs
bCgpKQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3RpbmdPYmplY3RTdG9yZShpbmZv
KTsKQEAgLTU2Nyw3ICs1NzYsMTggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBjYWxs
YmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlIik7CisKKyAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdy
aXRlT3BlcmF0aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKKyAgICBtX3NlcnZlci5yZXF1
ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCAmdHJhbnNhY3Rpb24sIGluZm8sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICBjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0cmFu
c2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGRlY2lzaW9uKTsKKyAgICB9KTsKK30K
Kwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmpl
Y3RTdG9yZSIpOwpAQCAtNTg2LDE0ICs2MDYsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QK
ICAgICBjYWxsYmFjayhlcnJvcik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFt
ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJy
b3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVj
dFN0b3JlQWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSwgRXJyb3JDYWxsYmFjayYmIGNhbGxiYWNrLCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbiBkZWNpc2lvbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlIik7CisgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZUFmdGVy
UXVvdGFDaGVjayIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9
IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7Ci0gICAg
aWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXpl
KSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgeworICAgIGlmIChkZWNp
c2lvbiA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewogICAgICAgICBj
YWxsYmFjayhJREJFcnJvcihRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFt
ZSgiUmVuYW1lT2JqZWN0U3RvcmUiKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjEy
LDcgKzYzMCwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIGNhbGxiYWNrKGVycm9y
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdO
YW1lLCBFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmpl
Y3RTdG9yZSIpOworCisgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNv
c3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1f
aWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewor
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICByZW5hbWVPYmplY3RTdG9yZUFmdGVy
UXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgZGVjaXNpb24pOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKQEAgLTYy
MywxNCArNjUzLDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgY2FsbGJhY2soZXJy
b3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZv
LCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
SW5kZXhBZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBkZWNpc2lvbikKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZUluZGV4Iik7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAg
YXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUo
aW5mbyk7Ci0gICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2lu
KCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewor
ICAgIGlmIChkZWNpc2lvbiA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkg
ewogICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFF
cnJvck1lc3NhZ2VOYW1lKCJDcmVhdGVJbmRleCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNjQ4LDcgKzY3NiwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRl
eChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogICAgIGNhbGxi
YWNrKGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIEVycm9yQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBF
cnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwor
CisgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0
ZVNpemUoaW5mbyk7CisgICAgbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgJnRy
YW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lz
aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgY3JlYXRl
SW5kZXhBZnRlclF1b3RhQ2hlY2sodHJhbnNhY3Rpb24sIGluZm8sIFdURk1vdmUoY2FsbGJhY2sp
LCBkZWNpc2lvbik7CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleCIpOwpAQCAtNjc0
LDE0ICs3MTQsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBjYWxsYmFjayhlcnJv
cik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5k
ZXhBZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaywgU3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gZGVjaXNpb24pCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5h
bWVJbmRleCIpOworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1l
SW5kZXhBZnRlclF1b3RhQ2hlY2siKTsKIAotICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8g
dGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRl
cygpOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAg
ICBpZiAoZGVjaXNpb24gPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsK
ICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJy
b3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTcwNiwxMiArNzQ0LDYyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgY2FsbGJh
Y2soZXJyb3IpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUg
b3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIik7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlOjpyZW5hbWVJbmRleCIpOworCisgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRX
cml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7CisgICAgbV9zZXJ2ZXIu
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUsIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHRyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFj
ayksIGRlY2lzaW9uKTsKKyAgICB9KTsKK30KIAotICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFmdGVyUXVvdGFDaGVjayhjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIHVzZWRLZXksIGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSwgS2V5RGF0YUNhbGxiYWNrJiYgY2FsbGJhY2ssICBib29sIHVz
ZWRLZXlJc0dlbmVyYXRlZCwgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4ga2V5RGF0YU51bWJlciwgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b24gZGVjaXNpb24pCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFmdGVyUXVvdGFDaGVjayIpOwor
CisgICAgYXV0byBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS5vYmplY3RTdG9y
ZUlkZW50aWZpZXIoKTsKKyAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2JhY2tpbmdTdG9y
ZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgYXV0byB0
cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KTsKKworICAgIGF1dG8gZ2VuZXJhdGVkS2V5UmVzZXR0ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQo
W3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2Vk
S2V5SXNHZW5lcmF0ZWQsIHVzZWRLZXldKCkgeworICAgICAgICBpZiAodXNlZEtleUlzR2VuZXJh
dGVkKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVydEdlbmVyYXRlZEtleU51bWJl
cih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleS5u
dW1iZXIoKSk7CisgICAgfSk7CisKKyAgICBpZiAoZGVjaXNpb24gPT0gU3RvcmFnZVF1b3RhTWFu
YWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90
YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2Vk
S2V5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIGEgcmVjb3JkIGFscmVh
ZHkgZXhpc3RzIGluIHN0b3JlLCB0aGVuIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNp
bmcgdGhlIHN0ZXBzIGZvciBkZWxldGluZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLgor
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQgZnJv
bSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJvcHJp
YXRlIGluZGV4ZXMuCisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRl
UmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRL
ZXkpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZXJyb3Is
IHVzZWRLZXkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5m
bywgdXNlZEtleSwgaW5kZXhLZXlzLCB2YWx1ZSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkg
eworICAgICAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoa2V5RGF0YU51bWJlcikKKyAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdT
dG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsICprZXlEYXRhTnVtYmVyKTsKKworICAgIGdlbmVyYXRl
ZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKKyAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtleSk7Cit9
CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2Rl
LCBLZXlEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIik7
CiAKICAgICBJREJLZXlEYXRhIHVzZWRLZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CkBAIC03MjUs
NyArODEzLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICB9CiAKICAgICBib29sIHVz
ZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwotICAgIHVpbnQ2NF90IGtleU51bWJlcjsKKyAgICB1
aW50NjRfdCBrZXlOdW1iZXIgPSAwOwogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVyID0g
cmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CiAgICAgYXV0byBnZW5lcmF0ZWRL
ZXlSZXNldHRlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsICZrZXlOdW1iZXIsICZ1c2VkS2V5SXNHZW5lcmF0
ZWRdKCkgewogICAgICAgICBpZiAodXNlZEtleUlzR2VuZXJhdGVkKQpAQCAtNzYxLDYgKzg0OSw4
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBnZW5l
cmF0ZWRLZXlSZXNldHRlci5yZWxlYXNlKCk7CisKICAgICAvLyBRdW90YSBjaGVjay4KICAgICBh
dXRvIGtleVNpemUgPSBlc3RpbWF0ZVNpemUodXNlZEtleSk7CiAgICAgYXV0byB2YWx1ZVNpemUg
PSBlc3RpbWF0ZVNpemUodmFsdWUpOwpAQCAtNzY5LDMzICs4NTksMTcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXkKIAogICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHV0
T3JBZGQgcXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNpemU6ICUiIFBSSXU2NCAiIGtleSBzaXplOiAl
IiBQUkl1NjQgIiB2YWx1ZSBzaXplOiAlIiBQUkl1NjQgIiBpbmRleCBzaXplOiAlIiBQUkl1NjQs
IHRhc2tTaXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7CiAKLSAgICBpZiAobV9z
ZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7Ci0gICAgICAgIGNhbGxiYWNrKElE
QkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9y
QWRkIikgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiBh
IHJlY29yZCBhbHJlYWR5IGV4aXN0cyBpbiBzdG9yZSwgdGhlbiByZW1vdmUgdGhlIHJlY29yZCBm
cm9tIHN0b3JlIHVzaW5nIHRoZSBzdGVwcyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9i
amVjdCBzdG9yZS4KLSAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRl
bGV0aW5nIGl0IGZyb20gZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9t
IHRoZSBhcHByb3ByaWF0ZSBpbmRleGVzLgotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRl
bGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1
c2VkS2V5KTsKLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGVy
cm9yLCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVycm9yID0gbV9i
YWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RTdG9y
ZUluZm8sIHVzZWRLZXksIGluZGV4S2V5cywgdmFsdWUpOwotICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpIHsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGtleURhdGFOdW1iZXI7CiAgICAg
aWYgKG92ZXJ3cml0ZU1vZGUgIT0gSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6
Ok92ZXJ3cml0ZUZvckN1cnNvciAmJiBvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAm
JiBrZXlEYXRhLnR5cGUoKSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcikKLSAgICAgICAg
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIodHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleURhdGEubnVtYmVy
KCkpOworICAgICAgICBrZXlEYXRhTnVtYmVyID0ga2V5RGF0YS5udW1iZXIoKTsKIAotICAgIGdl
bmVyYXRlZEtleVJlc2V0dGVyLnJlbGVhc2UoKTsKLSAgICBjYWxsYmFjayhlcnJvciwgdXNlZEtl
eSk7CisgICAgbV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdERhdGEs
IHVzZWRLZXksIHZhbHVlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB1c2VkS2V5SXNH
ZW5lcmF0ZWQsIGluZGV4S2V5cywga2V5RGF0YU51bWJlcl0gKGF1dG8gZGVjaXNpb24pIG11dGFi
bGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICBwdXRPckFkZEFmdGVyUXVv
dGFDaGVjayhyZXF1ZXN0RGF0YSwgdXNlZEtleSwgdmFsdWUsIFdURk1vdmUoY2FsbGJhY2spLCB1
c2VkS2V5SXNHZW5lcmF0ZWQsIGluZGV4S2V5cywga2V5RGF0YU51bWJlciwgZGVjaXNpb24pOwor
ICAgIH0pOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNv
cmREYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKQEAgLTgxMiw3ICs4ODYsNyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJHZQogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHQpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNE
YXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBHZXRBbGxSZXN1bHRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKQEAg
LTgyNCw3ICs4OTgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVy
cm9yLCByZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFu
Z2UsIENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRD
b3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYgcmFuZ2UsIENvdW50Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Omdl
dENvdW50Iik7CkBAIC04MzYsNyArOTEwLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0
Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAg
ICBjYWxsYmFjayhlcnJvciwgY291bnQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBFcnJvckNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQiKTsKQEAgLTg0Nyw3
ICs5MjEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJRAogICAgIGNhbGxiYWNrKGVycm9yKTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8sIEdldFJlc3VsdENh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8s
IEdldFJlc3VsdENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29y
Iik7CkBAIC04NjAsNyArOTM0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkMKICAgICBjYWxs
YmFjayhlcnJvciwgcmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJh
dGVDdXJzb3JEYXRhJiBkYXRhLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKQEAgLTg3NSw3
ICs5NDksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIGNhbGxiYWNrKGVycm9yLCBy
ZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBA
IC04OTcsNyArOTcxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICB0cmFuc2FjdGlv
bkNvbXBsZXRlZChXVEZNb3ZlKHRha2VuVHJhbnNhY3Rpb24pKTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0
VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCAyMzZl
MmJiNTVhMzUzNjI4OWFjNWY3NTVjOThhYzBmODVhYTM4Nzk4Li5jNDQ1MTdiYTljMDg5MzEwODg3
Y2NlZWNmMTRkNzVkZDk2ZWYwODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgogI2luY2x1ZGUgIklEQkdldFJl
c3VsdC5oIgogI2luY2x1ZGUgIlNlcnZlck9wZW5EQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJTdG9y
YWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkVGFzay5oPgpAQCAtODAsMjIgKzgxLDIyIEBAIHB1YmxpYzoKICAgICBJREJTZXJ2
ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CiAgICAgY29uc3QgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
LSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJp
bmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCByZW5hbWVPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2spOwotICAg
IHZvaWQgY2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGNy
ZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleElu
Zm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4KFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJv
ckNhbGxiYWNrKTsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwgR2V0UmVzdWx0Q2FsbGJh
Y2spOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNrKTsKLSAgICB2b2lk
IGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
Q291bnRDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIG9w
ZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0
UmVzdWx0Q2FsbGJhY2spOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2spOwot
ICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYs
IEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJiwgRXJyb3JDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwg
RXJyb3JDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0
U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxi
YWNrJiYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5h
bWUsIEVycm9yQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayYm
KTsKKyAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUsIEtleURhdGFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayYmKTsK
KyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdl
dENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291
bnRDYWxsYmFjayYmKTsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEVycm9yQ2FsbGJhY2smJik7CisgICAgdm9pZCBv
cGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdl
dFJlc3VsdENhbGxiYWNrJiYpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgR2V0UmVzdWx0Q2FsbGJhY2sm
Jik7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgRXJyb3JDYWxsYmFjayYmKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRp
ZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24mKTsKQEAgLTE0MSw2ICsxNDIsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJU
cmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CiAK
KyAgICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbkFmdGVyUXVvdGFDaGVjayhTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUFm
dGVyUXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjayYmLCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbik7CisgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayhVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmLCBFcnJvckNhbGxiYWNrJiYsIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrJiYsIFN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4QWZ0ZXJR
dW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
ZXdOYW1lLCBFcnJvckNhbGxiYWNrJiYsIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKTsK
KyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKElEQlJlc291cmNlSWRlbnRpZmllciB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4
SURUb0luZGV4S2V5TWFwLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5
RGF0YUNhbGxiYWNrJiYsIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKTsKKyAgICB2b2lk
IHB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
S2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgS2V5RGF0YUNhbGxiYWNrJiYsICBib29sIHVzZWRL
ZXlJc0dlbmVyYXRlZCwgSW5kZXhJRFRvSW5kZXhLZXlNYXAsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBrZXlEYXRhTnVtYmVyLCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik7CisKICAgICBJ
REJTZXJ2ZXImIG1fc2VydmVyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRl
eCA0YTAyMGQzMzRlYTI2OTljZGM1YjVhNjY3Y2UyZWMxMjdkNGQzNTAzLi5hZmE4ZmVhZTI2ZTU4
NjI5YmZjYjg5OTc5YzA3NGVkOTM2YTUyYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC00Niw2ICs0Niw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uCiB7CiAgICAgYXV0byBkYXRhYmFzZSA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRh
YmFzZSgpOwogICAgIEFTU0VSVChkYXRhYmFzZSk7CisgICAgbV9vcmlnaW4gPSBkYXRhYmFzZS0+
aWRlbnRpZmllcigpLm9yaWdpbigpOwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpCiAgICAgICAgIG1fb3JpZ2lu
YWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmlu
Zm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCBl
NDRhYjYzMDE3MjAzOWNhZjg1YzQ5ZmQ5NmZjMGIxNmYxMThjOGYzLi5iOTNkMWRkNDY4NGE4Y2M4
MzRiMmVjMzI2ZmJlZDMxNmFmNTY5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRN
YWluVGhyZWFkQWJvcnRSZXN1bHQoY29uc3QgSURCRXJyb3ImIGVycm9yKSB7IG1fbWFpblRocmVh
ZEFib3J0UmVzdWx0ID0geyBlcnJvciB9OyB9CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJF
cnJvcj4mIG1haW5UaHJlYWRBYm9ydFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpblRocmVh
ZEFib3J0UmVzdWx0OyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbjsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJik7CkBAIC0xMDAsNiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDY0
X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8SURCRXJy
b3I+IG1fbWFpblRocmVhZEFib3J0UmVzdWx0OworICAgIENsaWVudE9yaWdpbiBtX29yaWdpbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCAwMThj
YjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0Li5kODAyOTg1MWYxZDk5NzA4Y2I1
MDc0MjY3NjNiNTY1ZWM4ZDBmNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAKICAgICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0OwogICAgIElEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRl
bnRpZmllcigpIGNvbnN0OwotICAgIElEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXNvdXJjZUlkZW50aWZp
ZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKCkgY29u
c3Q7CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBlKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCBkNzczZDliMzEyYjM2YTk1NjBk
Y2Y0NGQ1MThiMTFjYmMwYWRjYWZiLi5jYWJjZWUyNTI0YzI2MGRmNmEwZGI0OWI2OGNmODE3ZjM3
YzIzYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTQzLDYgKzQzLDcgQEAg
c3RydWN0IENsaWVudE9yaWdpbiB7CiAKICAgICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1JlbGF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBv
dGhlcjsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhdG9w
T3JpZ2luLmlzRW1wdHkoKTsgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW4gY2xpZW50UmVnaXN0
cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3QoY2xpZW50T3JpZ2luLmhvc3QpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwCmluZGV4IDcxODI1OTY0YTg0YTE0NTY2
MzRhZmM5MWQwNDc4NDBhNWU4YzM3MzQuLmNmMDA1MjdkNWE4MmIyYjU4NGNmNGQ3NTc4YjgyMmZi
MTEwMGRjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3Rh
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5h
Z2VyLmNwcApAQCAtNDcsMjkgKzQ3LDI3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlN0b3JhZ2VR
dW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFVzYWdlR2V0dGVyJiYgdXNhZ2VHZXR0CiB7CiB9
CiAKLXZvaWQgU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
U3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVk
LCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaywgV29ya1F1ZXVlJiBjYWxsYmFja1F1ZXVlKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KICAgICAvLyBGYXN0IHBhdGguCiAgICAg
aWYgKG1fcXVvdGFDb3VudERvd25Mb2NrLnRyeUxvY2soKSkgewogICAgICAgICBpZiAodHJ5R3Jh
bnRSZXF1ZXN0KHNwYWNlUmVxdWVzdGVkKSkgewogICAgICAgICAgICAgbV9xdW90YUNvdW50RG93
bkxvY2sudW5sb2NrKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayhEZWNpc2lvbjo6R3JhbnQpOwor
ICAgICAgICAgICAgY2FsbGJhY2soRGVjaXNpb246OkdyYW50LCBJc0RlY2lzaW9uQXN5bmM6Ok5v
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3F1b3RhQ291bnRE
b3duTG9jay51bmxvY2soKTsKICAgICB9CiAKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3BhY2VSZXF1ZXN0ZWQsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZGVjaXNp
b24gPSByZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBkZWNp
c2lvbl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGRlY2lzaW9uKTsKKyAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc3BhY2VSZXF1ZXN0ZWQsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhbGxiYWNr
UXVldWUgPSBtYWtlUmVmKGNhbGxiYWNrUXVldWUpXSgpIG11dGFibGUgeworICAgICAgICBhdXRv
IGRlY2lzaW9uID0gcmVxdWVzdFNwYWNlT25RdW90YVF1ZXVlKHNwYWNlUmVxdWVzdGVkKTsKKyAg
ICAgICAgY2FsbGJhY2tRdWV1ZS0+ZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGRlY2lzaW9uXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soZGVjaXNpb24s
IElzRGVjaXNpb25Bc3luYzo6WWVzKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLVN0b3Jh
Z2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIFN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFj
ZU9uQmFja2dyb3VuZFRocmVhZCh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKK1N0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uIFN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlcXVlc3RTcGFjZU9uUXVv
dGFRdWV1ZSh1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVv
dGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIu
aAppbmRleCAxZTc1NGUzNDBmYjAwYWE2OTFkMzc0OTI0ODU4NGQ5MDc2Y2M4MDBmLi4xNWU4ODhj
MzA4YTYyNDAxZWEzMWQ3NjIzZWE2NWZiYTZhYzdmNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaApAQCAtNDQsMTYgKzQ0LDE4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGRlZmF1bHRRdW90YSgpIHsgcmV0dXJuIDEw
MDAgKiBNQjsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFy
dHlRdW90YSgpIHsgcmV0dXJuIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVv
dGEoZGVmYXVsdFF1b3RhKCkpOyB9CiAKLSAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsgRGVueSwg
R3JhbnQgfTsKLSAgICB1c2luZyBSZXF1ZXN0Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKERlY2lzaW9uKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0U3BhY2VPbk1h
aW5UaHJlYWQodWludDY0X3QsIFJlcXVlc3RDYWxsYmFjayYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBEZWNpc2lvbiByZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQodWludDY0X3QpOworICAg
IGVudW0gY2xhc3MgRGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsKKyAgICBlbnVtIGNs
YXNzIElzRGVjaXNpb25Bc3luYyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdXNpbmcgUmVxdWVz
dENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNpc2lvbiwgSXNEZWNpc2lvbkFz
eW5jKT47CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3Qgc3Bh
Y2VSZXF1ZXN0ZWQsIFJlcXVlc3RDYWxsYmFjayYmLCBXb3JrUXVldWUmKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldFF1b3RhRm9yVGVzdGluZygpOworCiBwcml2
YXRlOgogICAgIFN0b3JhZ2VRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFVzYWdlR2V0dGVy
JiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXImJik7CiAgICAgYm9vbCB0cnlHcmFudFJlcXVlc3Qo
dWludDY0X3QpIFdURl9SRVFVSVJFU19MT0NLKG1fcXVvdGFDb3VudERvd25Mb2NrKTsKKyAgICBE
ZWNpc2lvbiByZXF1ZXN0U3BhY2VPblF1b3RhUXVldWUodWludDY0X3QpOwogCiAgICAgdm9pZCB1
cGRhdGVRdW90YUJhc2VkT25Vc2FnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAppbmRleCA1NzUzNzdkOGUy
ZmQzZmUxZDc1MDJkNzE4MDk1MWI2ZGYyNjFlMTU1Li5iZGMxZjFiNTI5OWUzN2JlOTU1MTYwOWY4
MWFmNDM0YzgyNTljZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKQEAgLTI4LDIxICsyOCwyNiBAQAogCiAj
aW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSURCU2Vy
dmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkN1cnNvckluZm8uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yYWdlUXVvdGFNYW5hZ2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViSURC
U2VydmVyPiBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3Rv
cmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYgc3BhY2VSZXF1ZXN0ZXIpCitSZWY8V2Vi
SURCU2VydmVyPiBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0
ZXImJiBzcGFjZVJlcXVlc3RlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJREJT
ZXJ2ZXIoc2Vzc2lvbklELCBkaXJlY3RvcnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKSk7CiB9
CiAKLVdlYklEQlNlcnZlcjo6V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiBzcGFjZVJlcXVlc3RlcikKK1dlYklE
QlNlcnZlcjo6V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmIHNwYWNl
UmVxdWVzdGVyKQogICAgIDogbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5JbmRleGVkREJTZXJ2ZXIiKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
c2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNwYWNlUmVx
dWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildICgpIG11dGFibGUgeworICAgIGF1dG8g
c3BhY2VSZXF1ZXN0ZXJXaXRoV29ya1F1ZXVlID0gW3F1ZXVlID0gbV9xdWV1ZS5jb3B5UmVmKCks
IHNwYWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildIChjb25zdCBhdXRvJiBv
cmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBhdXRvJiYgY2FsbGJhY2spIHsKKyAgICAg
ICAgc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCBzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxsYmFj
ayksIHF1ZXVlLmdldCgpKTsKKyAgICB9OworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpLCBzcGFjZVJlcXVlc3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXJXaXRo
V29ya1F1ZXVlKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKQEAgLTE0NCw3
ICsxNDksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZl
ci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2so
cmVxdWVzdERhdGEsIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6Om9wZW5EYXRhYmFz
ZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVy
OjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCkBAIC0xNTIsNyArMTU3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sg
fTsKLSAgICBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOworICAgIG1fc2Vy
dmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6ZGVsZXRlRGF0YWJhc2UsIG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSkpOwogfQog
CiB2b2lkIFdlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAgLTE2MCw3ICsxNjUs
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVy
LT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9zZXJ2ZXIt
PmVucXVldWVUYXNrKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbiwgbV9zZXJ2ZXIuZ2V0KCksIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpCkBAIC0xNjgsNyArMTczLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0
aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKLSAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2sodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBz
dGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbiwgbV9zZXJ2
ZXIuZ2V0KCksIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYklEQlNlcnZl
cjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBAIC0xNzYsNyArMTgxLDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVp
bnQ2NF90IGRhdGFiYXNlQ28KICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGlkRmluaXNo
SGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2so
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24sIG1fc2VydmVy
LmdldCgpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8pCkBAIC0xODQsNyArMTg5LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+Y3JlYXRlT2Jq
ZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSW5mbyk7CisgICAgbV9zZXJ2ZXItPmVu
cXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQo
JklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZSwgbV9zZXJ2ZXIuZ2V0KCks
IHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUluZm8pKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC0xOTIsNyArMTk3LDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGVs
ZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgbV9zZXJ2
ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6
OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSwgbV9zZXJ2ZXIu
Z2V0KCksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJT
ZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCkBAIC0yMDAsNyArMjA1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3Nl
cnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVU
YXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNl
cnZlcjo6SURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJ
REJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCkBAIC0yMDgsNyAr
MjEzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2Vy
dmVyLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9y
ZSwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsK
IH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJiBpbmRl
eEluZm8pCkBAIC0yMTYsNyArMjIxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKLSAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZGV4SW5m
byk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVJbmRleCwg
bV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBpbmRleEluZm8pKTsKIH0KIAogdm9pZCBXZWJJ
REJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSkKQEAgLTIyNCw3ICsyMjksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlSW5k
ZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NgogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgsIG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6
OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKQEAgLTIzMiw3ICsyMzcsNyBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5yZW5hbWVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUp
OworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVuYW1lSW5kZXgsIG1f
c2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElk
ZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OnB1dE9yQWRkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6
SURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCVmFsdWUmIHZhbHVlLCBXZWJD
b3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyV3JpdGVNb2RlKQpA
QCAtMjQwLDcgKzI0NSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlCiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07
Ci0gICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zl
cldyaXRlTW9kZSk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjpwdXRP
ckFkZCwgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zlcldy
aXRlTW9kZSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVj
b3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKQEAgLTI0OCw3ICsyNTMsNyBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgVwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVxdWVz
dERhdGEsIGdldFJlY29yZERhdGEpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhyZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6Z2V0UmVjb3JkLCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERhdGEsIGdldFJlY29yZERh
dGEpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxS
ZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCkBAIC0yNTYsNyArMjYxLDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb24KICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+Z2V0QWxsUmVj
b3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworICAgIG1fc2VydmVyLT5lbnF1
ZXVlVGFzayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJ
REJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0QWxsUmVjb3JkcywgbV9zZXJ2ZXIuZ2V0KCksIHJlcXVl
c3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0
Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKQEAgLTI2NCw3ICsyNjksNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5n
ZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1
ZVRhc2socmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHN0ZDo6YmluZCgmSURC
U2VydmVyOjpJREJTZXJ2ZXI6OmdldENvdW50LCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERhdGEs
IGtleVJhbmdlRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnMKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGVsZXRlUmVj
b3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFz
ayhyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgc3RkOjpiaW5kKCZJREJTZXJ2
ZXI6OklEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkLCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERhdGEs
IGtleVJhbmdlRGF0YSkpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklE
QkN1cnNvckluZm8mIGN1cnNvckluZm8pCkBAIC0yODAsNyArMjg1LDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVl
c3REYXRhLCBjdXJzb3JJbmZvKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1ZVRhc2socmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2
ZXI6Om9wZW5DdXJzb3IsIG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSwgY3Vyc29ySW5mbykp
OwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhJiBpdGVyYXRlQ3Vyc29yRGF0YSkKQEAgLTI4OCw3ICsyOTMsNyBAQCB2b2lkIFdlYklE
QlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29y
KHJlcXVlc3REYXRhLCBpdGVyYXRlQ3Vyc29yRGF0YSk7CisgICAgbV9zZXJ2ZXItPmVucXVldWVU
YXNrKHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBzdGQ6OmJpbmQoJklEQlNl
cnZlcjo6SURCU2VydmVyOjppdGVyYXRlQ3Vyc29yLCBtX3NlcnZlci5nZXQoKSwgcmVxdWVzdERh
dGEsIGl0ZXJhdGVDdXJzb3JEYXRhKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjplc3RhYmxp
c2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mIHRyYW5zYWN0aW9uSW5mbykKQEAgLTI5Niw3
ICszMDEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgYwogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1f
c2VydmVyLT5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCB0cmFuc2FjdGlvbkluZm8pOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2VydmVyOjplc3Rh
Ymxpc2hUcmFuc2FjdGlvbiwgbV9zZXJ2ZXIuZ2V0KCksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSW5mbykpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpCkBAIC0zMDQsNyArMzA5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29u
bmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGUKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKLSAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UsIG1fc2VydmVyLmdldCgpLCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpkYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikKQEAgLTMxMiw3ICszMTcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZQogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwotICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9zZXJ2ZXItPmVucXVldWVUYXNrKGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFi
YXNlQ29ubmVjdGlvbkNsb3NlZCwgbV9zZXJ2ZXIuZ2V0KCksIGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBAIC0zMjAs
NyArMzI1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKLSAgICBt
X3NlcnZlci0+YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFz
ayhkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmJpbmQoJklEQlNlcnZlcjo6SURC
U2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkLCBtX3NlcnZlci5nZXQoKSwgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZv
aWQgV2ViSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNs
b3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKQEAgLTMyOCw3ICszMzMsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2VydmVyLT5k
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKKyAgICBtX3NlcnZlci0+ZW5xdWV1
ZVRhc2soZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjpiaW5kKCZJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCwgbV9zZXJ2ZXIuZ2V0KCksIGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9u
Q2xvc2VkKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKQEAgLTMzNiw3ICsz
NDEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwotICAgIG1fc2Vy
dmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKKyAgICBtX3NlcnZlci0+
ZW5xdWV1ZVRhc2socmVxdWVzdERhdGEsIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJREJTZXJ2ZXI6
Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQsIG1fc2VydmVyLmdldCgpLCByZXF1ZXN0RGF0YSkpOwog
fQogCiB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCkBAIC0zNDcsNyArMzUyLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGMKICAgICBB
U1NFUlQod2ViSURCQ29ubmVjdGlvbik7CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJM
b2NrIH07Ci0gICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyh3ZWJJ
REJDb25uZWN0aW9uLT5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pOwor
ICAgIG1fc2VydmVyLT5lbnF1ZXVlVGFzayhvcmlnaW4sIHN0ZDo6YmluZCgmSURCU2VydmVyOjpJ
REJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucywgbV9zZXJ2ZXIuZ2V0KCks
IHdlYklEQkNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdp
bikpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6YWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuaAppbmRleCA2OTcwN2IyNzM5N2RiZTU2ZTQ2Zjc1YzMxZjMxOTA1OTZlMGI0
MTk4Li42ZTQ0ZjAzYjVhMWI4MjI1MzIwM2ZlNTVjNjJjNGE2NmFmZWEyOWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOwogY2xhc3MgU3RvcmFnZVF1b3Rh
TWFuYWdlcjsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogY2xhc3MgSURCU2VydmVyOwpAQCAtNDUs
NyArNDYsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCU2VydmVyIGZpbmFs
IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYklEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OlN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmKTsKKyAgICB1c2luZyBTdG9yYWdl
UXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpSZXF1ZXN0Q2FsbGJhY2smJiwgV29ya1F1ZXVlJik+OworICAgIHN0YXRp
YyBSZWY8V2ViSURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5LCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7CiAKICAgICB2
b2lkIGdldE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOwogICAgIHZvaWQgY2xvc2VBbmREZWxldGVEYXRhYmFz
ZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2spOwpAQCAtOTAsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSB7IH0pOwogCiBwcml2YXRlOgotICAgIFdlYklEQlNlcnZl
cihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7Cisg
ICAgV2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwg
U3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOwogICAgIH5XZWJJREJTZXJ2ZXIo
KTsKIAogICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA0OWJk
ZDNmZWM2ODEzN2NlNDM1Mzk1MDAzNGFkYzZiMjc1MmFmOWU1Li42MDE2NjIxODk1OTEzYmExOTdi
Yzc2MzM2NjNhNDUxMzkyNDNkN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjM0Nyw4ICsyMzQ3LDggQEAgUmVmPFdlYklEQlNl
cnZlcj4gTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25J
RCk7CiAgICAgfQogCi0gICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHNlc3Npb25JRF0oY29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBz
cGFjZVJlcXVlc3RlZCkgewotICAgICAgICByZXR1cm4gcHJvdGVjdGVkVGhpcy0+c3RvcmFnZVF1
b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbiktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRo
cmVhZChzcGFjZVJlcXVlc3RlZCk7CisgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRF0oY29uc3QgYXV0byYgb3JpZ2luLCB1
aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwgYXV0byYmIGNhbGxiYWNrLCBhdXRvJiBjYWxsYmFja1F1
ZXVlKSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lv
bklELCBvcmlnaW4pLT5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJh
Y2spLCBjYWxsYmFja1F1ZXVlKTsKICAgICB9OwogICAgIHJldHVybiBXZWJJREJTZXJ2ZXI6OmNy
ZWF0ZShzZXNzaW9uSUQsIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcAppbmRleCA1NTAxOTA5NjM3NjQzZDYwN2MzYTYxMzJiYzhkY2EyZWJkMTBhMzE1
Li43Y2IzMWVmZGVjYzExMmU5YjA5MThlNmFlZjlhZTU1MmViNjgyMDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCkBAIC0yNDQsMTggKzI0NCwxOCBAQCB1aW50NjRfdCBFbmdpbmU6OmRpc2tVc2FnZShj
b25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mCiAgICAg
cmV0dXJuIGdldERpcmVjdG9yeVNpemUoZGlyZWN0b3J5UGF0aCk7CiB9CiAKLXZvaWQgRW5naW5l
OjpyZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXF1
ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkLCBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpSZXF1ZXN0Q2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYg
KCFtX25ldHdvcmtQcm9jZXNzKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55LCBXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpJc0RlY2lzaW9uQXN5bmM6Ok5vKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlUXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
c3RvcmFnZVF1b3RhTWFuYWdlcihtX3Nlc3Npb25JRCwgb3JpZ2luKTsKICAgICBpZiAoIXN0b3Jh
Z2VRdW90YU1hbmFnZXIpCi0gICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1h
bmFnZXI6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6U3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnksIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFn
ZXI6OklzRGVjaXNpb25Bc3luYzo6Tm8pOwogCi0gICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVx
dWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNlUmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlKHNwYWNlUmVxdWVzdGVkLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV29ya1F1ZXVlOjptYWluKCkpOwogfQogCiBFbmdpbmU6OkVuZ2lu
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzJiBwcm9jZXNzLCBTdHJp
bmcmJiByb290UGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDZkNDQ4ODEyNzlkMWI5NjI3YTlhOWU3
YTk5YjA1ZjNkZjZjYWQwNzguLjc5YTJhOTgyZWNjMmMyMTE3OGFkZDc5MTJjODhkNWFmYTAxMjk2
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCiAgICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQ
YXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lkIHJlcXVlc3RTcGFj
ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbik+JiYpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpSZXF1ZXN0Q2FsbGJhY2smJik7CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25z
dCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApp
bmRleCAyOTRkMGJkNmRlYWNmZmZhZTg0MzJkOGRhOTk4ZGUwMjk3ZDI4ZGMyLi41MzRmYmE0YjJi
ZGJkMzFhNzJjMTAyNTVhNmIwNWI0ZWMwNDMzMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBDYWNoZXM6OnJlcXVlc3RTcGFjZSh1aW50
NjRfdCBzcGFjZVJlcXVpcmVkLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZW5naW5lLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4s
IHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lz
aW9uKSBtdXRhYmxlIHsKKyAgICBtX2VuZ2luZS0+cmVxdWVzdFNwYWNlKG1fb3JpZ2luLCBzcGFj
ZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBkZWNpc2lvbiwg
YXV0bykgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueToKICAgICAgICAg
ICAgIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggZWZiZjRmMmRmM2Iy
YmFkMzA3ZTc3ZTRiYWVjOTJhOTM3MzU2ODc2NS4uMzJiMTZlODM3YjU3OGNiNzhmZGM3NWRiMzky
NjVkODBlZWQ2NjRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTgzLDkgKzgzLDEyIEBAIFN0b3JhZ2VRdW90YU1hbmFn
ZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luCiAKIHN0YXRpYyBpbmxpbmUgSURCU2VydmVyOjpJREJTZXJ2ZXI6OlN0b3JhZ2VRdW90
YU1hbmFnZXJTcGFjZVJlcXVlc3RlciBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIo
SW5Qcm9jZXNzSURCU2VydmVyJiBzZXJ2ZXIpCiB7Ci0gICAgcmV0dXJuIFtzZXJ2ZXIgPSAmc2Vy
dmVyLCB3ZWFrU2VydmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKV0oY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSBtdXRhYmxlIHsKKyAgICByZXR1cm4g
W3NlcnZlciA9ICZzZXJ2ZXIsIHdlYWtTZXJ2ZXIgPSBtYWtlV2Vha1B0cihzZXJ2ZXIpXShjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VRdW90YU1hbmFnZXI6OlJlcXVlc3RDYWxsYmFjayYmIGNhbGxiYWNrKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byogc3RvcmFnZVF1b3RhTWFuYWdlciA9IHdlYWtTZXJ2ZXIgPyBzZXJ2
ZXItPnF1b3RhTWFuYWdlcihvcmlnaW4pIDogbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN0b3Jh
Z2VRdW90YU1hbmFnZXIgPyBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbkJhY2tn
cm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpIDogU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b246OkRlbnk7CisgICAgICAgIGlmICghc3RvcmFnZVF1b3RhTWFuYWdlcikKKyAgICAgICAgICAg
IGNhbGxiYWNrKFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55LCBTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpJc0RlY2lzaW9uQXN5bmM6Ok5vKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlKHNwYWNlUmVxdWVzdGVkLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgc2VydmVyLT5xdWV1ZSgpKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmgKaW5kZXggNzNlZDhj
YTM4Y2U2ZWU5MzVlYmUyYzdiMjkzOGRjYmM2Yjg5NTMxNy4uZDhjYzYyN2RjYWFjNzAzYjU1OThk
ODM3NGU0ZjNjZjcyNzZhMzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpc3BhdGNoVGFza1JlcGx5KEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICBXZWJDb3Jl
OjpTdG9yYWdlUXVvdGFNYW5hZ2VyKiBxdW90YU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7CisgICAgV29ya1F1ZXVlJiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBJblByb2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gbnVsbFN0cmluZygpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZDk4
MWQxZWQ0NTJlMGVjMTUxOTViMTEzZmEwYzFiNzAzODhmZTFiLi4wYTE0MTAwZjAyMGJmYTk4YmYw
MTgxMWI4MmQ4ODM4YTliNWMyYjU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDYtMjQgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBzcGFjZSByZXF1ZXN0IGFzeW5j
IGZvciBJbmRleGVkREIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW06
CisgICAgICAgICgtW1F1b3RhRGVsZWdhdGUgaW5pdF0pOgorICAgICAgICAoLVtRdW90YURlbGVn
YXRlIF93ZWJWaWV3OmRlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpjdXJyZW50
UXVvdGE6Y3VycmVudE9yaWdpblVzYWdlOmN1cnJlbnREYXRhYmFzZVVzYWdlOmV4cGVjdGVkVXNh
Z2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtRdW90YURlbGVnYXRlIGdyYW50UXVv
dGFdKToKKwogMjAyMS0wNi0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbmRleGVkREIgcHJpbnRzIGVycm9yIGxvZyBhYm91dCBibG9iIGZpbGVzIHdoZW4g
dGhlcmUgaXMgbm8gZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW0KaW5kZXggZjFhYjY4MzlkZWMzZDJhNDFlNzRhMjg3
NTM0MzNkYmI0MTY2ZGQ4My4uYzUwMWM2NjNkNjg3ZmRlZjJmYzM3NTE1OWQ4MjVmYWZjOGVjZGY1
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9y
YWdlUXVvdGEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
dG9yYWdlUXVvdGEubW0KQEAgLTYyLDYgKzYyLDcgQEAgc3RhdGljIGJvb2wgcmVjZWl2ZWRRdW90
YURlbGVnYXRlQ2FsbGVkOwogQGltcGxlbWVudGF0aW9uIFF1b3RhRGVsZWdhdGUgewogICAgIGJv
b2wgX3F1b3RhRGVsZWdhdGVDYWxsZWQ7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9jdXJyZW50
UXVvdGE7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIF9jdXJyZW50VXNhZ2U7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIF9leHBlY3RlZFVzYWdlOwogICAgIEJsb2NrUHRyPHZvaWQodW5zaWduZWQg
bG9uZyBsb25nIG5ld1F1b3RhKT4gX2RlY2lzaW9uSGFuZGxlcjsKIH0KQEAgLTc0LDYgKzc1LDcg
QEAgc3RhdGljIGJvb2wgcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkOwogICAgIF9xdW90YURl
bGVnYXRlQ2FsbGVkID0gZmFsc2U7CiAgICAgX2V4cGVjdGVkVXNhZ2UgPSAwOwogICAgIF9jdXJy
ZW50UXVvdGEgPSAwOworICAgIF9jdXJyZW50VXNhZ2UgPSAwOwogICAgIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtODMsNiArODUsNyBAQCBzdGF0aWMgYm9vbCByZWNlaXZlZFF1b3RhRGVsZWdh
dGVDYWxsZWQ7CiAgICAgcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkID0gdHJ1ZTsKICAgICBf
cXVvdGFEZWxlZ2F0ZUNhbGxlZCA9IHRydWU7CiAgICAgX2N1cnJlbnRRdW90YSA9IGN1cnJlbnRR
dW90YTsKKyAgICBfY3VycmVudFVzYWdlID0gY3VycmVudFVzYWdlOwogICAgIF9leHBlY3RlZFVz
YWdlID0gZXhwZWN0ZWRVc2FnZTsKICAgICBfZGVjaXNpb25IYW5kbGVyID0gZGVjaXNpb25IYW5k
bGVyOwogfQpAQCAtOTMsNyArOTYsNyBAQCBzdGF0aWMgYm9vbCByZWNlaXZlZFF1b3RhRGVsZWdh
dGVDYWxsZWQ7CiAKIC0odm9pZClncmFudFF1b3RhIHsKICAgICBpZiAoX3F1b3RhRGVsZWdhdGVD
YWxsZWQpCi0gICAgICAgIF9kZWNpc2lvbkhhbmRsZXIoX2V4cGVjdGVkVXNhZ2UpOworICAgICAg
ICBfZGVjaXNpb25IYW5kbGVyKF9leHBlY3RlZFVzYWdlICsgX2N1cnJlbnRVc2FnZSk7CiAgICAg
X3F1b3RhRGVsZWdhdGVDYWxsZWQgPSBmYWxzZTsKIH0KIApAQCAtNTE0LDMgKzUxNywxMTIgQEAg
VEVTVChXZWJLaXQsIERlZmF1bHRRdW90YSkKICAgICB9CiAgICAgRVhQRUNUX0ZBTFNFKHJlY2Vp
dmVkUXVvdGFEZWxlZ2F0ZUNhbGxlZCk7CiB9CisKK1RFU1QoV2ViS2l0LCBRdW90YVJlcXVlc3RG
cm9tT25lT3JpZ2luRG9lc05vdEJsb2NrQW5vdGhlcikKK3sKKyAgICAvLyBTZXQgYSBzbWFsbCBx
dW90YS4KKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtzdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjQwMCAqIDEwMjRdOworICAgIGF1dG8gZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBkb25lID0gZmFsc2U7
CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIE9wZW4gYSBwYWdlIHRo
YXQgcmVxdWVzdHMgcXVvdGEgaW5jcmVhc2UuCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CisgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVv
dGFEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworICAgIHNldFZpc2libGUod2ViVmlldy5nZXQoKSk7CisgICAgTlNTdHJp
bmcgKmh0bWxTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAgICAgICAgd2luZG93LmluZGV4ZWREQi5v
cGVuKCdkYicpLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAg
ICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7IFwKKyAgICAgICAgICAgIGxldCBvcyA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvcycpOyBcCisgICAgICAgICAgICBvcy5hZGQobmV3IFVp
bnQ4QXJyYXkoNTAwICogMTAyNCksICdrZXknKS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IFwKKyAg
ICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5xdC5wb3N0TWVzc2Fn
ZSgnRXJyb3InKTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH07IFwKKyAgICAgICAgPC9z
Y3JpcHQ+IjsKKyAgICByZWNlaXZlZFF1b3RhRGVsZWdhdGVDYWxsZWQgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVXRpbDo6cnVuKCZyZWNlaXZlZFF1
b3RhRGVsZWdhdGVDYWxsZWQpOworCisgICAgLy8gT3BlbiBhbm90aGVyIHBhZ2UgdGhhdCBkb2Vz
IG5vdCBuZWVkIHF1b3RhIGluY3JlYXNlLCBhbmQgbWFrZSBzdXJlIGl0cyBJREIgcmVxdWVzdCBp
cyBub3QgYmxvY2tlZC4KKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqaHRtbFN0
cmluZzIgPSBAIjxzY3JpcHQ+IFwKKyAgICAgICAgd2luZG93LmluZGV4ZWREQi5vcGVuKCdkYicp
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAgICAgIGxldCBk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7IFwKKyAgICAgICAgICAgIGxldCBvcyA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdvcycpOyBcCisgICAgICAgICAgICBvcy5hZGQobmV3IFVpbnQ4QXJyYXko
MSksICdrZXknKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnF0LnBvc3RNZXNzYWdlKCdTdWNjZXNzJyk7IFwK
KyAgICAgICAgICAgIH0gXAorICAgICAgICB9OyBcCisgICAgICAgIDwvc2NyaXB0PiI7CisgICAg
cmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisgICAgW21lc3NhZ2VIYW5kbGVyIHNldEV4cGVjdGVk
TWVzc2FnZTogQCJTdWNjZXNzIl07CisgICAgW3NlY29uZFdlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
aHRtbFN0cmluZzIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vYXBwbGUu
Y29tIl1dOworICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKworICAgIC8vIEZpbmlz
aCBxdW90YSBpbmNyZWFzZSByZXF1ZXN0IGZvciB0aGUgZmlyc3QgcGFnZS4KKyAgICByZWNlaXZl
ZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbbWVzc2FnZUhhbmRsZXIgc2V0RXhwZWN0ZWRNZXNzYWdl
OiBAIkVycm9yIl07CisgICAgW2RlbGVnYXRlIGRlbnlRdW90YV07CisgICAgVXRpbDo6cnVuKCZy
ZWNlaXZlZE1lc3NhZ2UpOworfQorCitURVNUKFdlYktpdCwgRGF0YVJlbW92YWxEdXJpbmdRdW90
YVJlcXVlc3QpCit7CisgICAgLy8gU2V0IGEgc21hbGwgcXVvdGEuCisgICAgYXV0byBzdG9yZUNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldFBlck9yaWdpblN0b3Jh
Z2VRdW90YTo0MDAgKiAxMDI0XTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgcmVtb3Zl
RGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2Rp
ZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisKKyAgICAvLyBPcGVuIGEgcGFnZSB0aGF0IHJlcXVpcmVzIHF1b3RhIGluY3Jl
YXNlLgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFT
dG9yZTpkYXRhU3RvcmUuZ2V0KCldOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VI
YW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1b3RhRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBzZXRW
aXNpYmxlKHdlYlZpZXcuZ2V0KCkpOworICAgIE5TU3RyaW5nICpodG1sU3RyaW5nID0gQCI8c2Ny
aXB0PiBcCisgICAgICAgIGluZGV4ZWREQi5vcGVuKCdkYicpLm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7IFwKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7IFwKKyAgICAgICAgICAgIGxldCBvcyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvcycpOyBc
CisgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IG9zLmFkZChuZXcgVWludDhBcnJheSg1MDAgKiAx
MDI0KSwgJ2JpZycpOyBcCisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7IFwKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVy
cy5xdC5wb3N0TWVzc2FnZSgnU3VjY2VzcycpOyBcCisgICAgICAgICAgICB9OyBcCisgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeyBcCisgICAgICAgICAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucXQucG9zdE1lc3NhZ2UoJ0Vycm9yJyk7
IFwKKyAgICAgICAgICAgIH07IFwKKyAgICAgICAgfSBcCisgICAgICAgIDwvc2NyaXB0PiI7Cisg
ICAgcmVjZWl2ZWRRdW90YURlbGVnYXRlQ2FsbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9h
ZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93ZWJraXQub3JnIl1dOworICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRRdW90YURlbGVnYXRl
Q2FsbGVkKTsKKworICAgIC8vIFJlcXVlc3QgZ2V0cyBlcnJvciBkdWUgdG8gZGF0YSByZW1vdmFs
LgorICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFttZXNzYWdlSGFuZGxlciBzZXRF
eHBlY3RlZE1lc3NhZ2U6IEAiRXJyb3IiXTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gTWFrZSBx
dW90YSBkZWNpc2lvbiBhbmQgZW5zdXJlIGl0IGlzIHJlbWVtYmVyZWQuCisgICAgcmVjZWl2ZWRN
ZXNzYWdlID0gZmFsc2U7CisgICAgW21lc3NhZ2VIYW5kbGVyIHNldEV4cGVjdGVkTWVzc2FnZTog
QCJTdWNjZXNzIl07CisgICAgW2RlbGVnYXRlIGdyYW50UXVvdGFdOworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkTWVzc2FnZSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>