<?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>169630</bug_id>
          
          <creation_ts>2017-03-14 14:38:35 -0700</creation_ts>
          <short_desc>Rename WKHTTPCookieStorage to WKHTTPCookieStore</short_desc>
          <delta_ts>2017-03-14 15:37:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287795</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 14:38:35 -0700</bug_when>
    <thetext>Rename WKHTTPCookieStorage to WKHTTPCookieStore

This better reflects its relation to WKWebsiteDataStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287806</commentid>
    <comment_count>1</comment_count>
      <attachid>304426</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 14:48:33 -0700</bug_when>
    <thetext>Created attachment 304426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287808</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 14:49:05 -0700</bug_when>
    <thetext>Whoops, I have two patches in here, hang on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287810</commentid>
    <comment_count>3</comment_count>
      <attachid>304428</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 14:50:02 -0700</bug_when>
    <thetext>Created attachment 304428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287815</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 14:52:48 -0700</bug_when>
    <thetext>Attachment 304428 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:76:  Missing space before {  [whitespace/braces] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:83:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 18 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287817</commentid>
    <comment_count>5</comment_count>
      <attachid>304431</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 14:54:43 -0700</bug_when>
    <thetext>Created attachment 304431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287819</commentid>
    <comment_count>6</comment_count>
      <attachid>304431</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 14:55:08 -0700</bug_when>
    <thetext>Comment on attachment 304431
Patch

Tim reviewed on IRC, could not access bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287823</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 14:56:44 -0700</bug_when>
    <thetext>Attachment 304431 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:76:  Missing space before {  [whitespace/braces] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:83:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStore.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 18 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287837</commentid>
    <comment_count>8</comment_count>
      <attachid>304431</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 15:36:56 -0700</bug_when>
    <thetext>Comment on attachment 304431
Patch

Clearing flags on attachment: 304431

Committed r213947: &lt;http://trac.webkit.org/changeset/213947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287838</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 15:37:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304426</attachid>
            <date>2017-03-14 14:48:33 -0700</date>
            <delta_ts>2017-03-14 14:50:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169630-20170314144846.patch</filename>
            <type>text/plain</type>
            <size>73713</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAwMTEyNzRkODE0Mjdh
MGVhNWFlMThjYzFiOTgyODBkODJiOGI4NS4uNTJlNDU4N2UwY2JhOGUxNjI5MmJkODBlZjQ5Njk2
ZTBiYmY4YjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAzLTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV0tIVFRQQ29v
a2llU3RvcmFnZSB0byBXS0hUVFBDb29raWVTdG9yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIAorICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNw
cC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpIVFRQQ29va2llU3RvcmUpOgorICAg
ICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUpOgorICAgICAgICAo
QVBJOjpIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2ll
U3RvcmU6OnNldENvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6c2V0Q29v
a2llcyk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToK
KyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5o
LgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmUpOgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29v
a2llU3RvcmFnZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSFRUUENvb2tpZVN0b3JhZ2UubW0uCisgICAgICAgIChjb3JlQ29va2llc1RvTlNDb29raWVz
KToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmUgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0hUVFBDb29raWVTdG9yZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tp
ZVN0b3JlIGZldGNoQ29va2llc0ZvclVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tIVFRQQ29va2llU3RvcmUgc2V0Q29va2llOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIHNldENvb2tpZXM6Zm9yVVJMOm1haW5E
b2N1bWVudFVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2ll
U3RvcmUgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tIVFRQQ29va2llU3RvcmUgc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIGZldGNoQ29va2llQWNjZXB0UG9saWN5Ol0pOgor
ICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZUludGVybmFsLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JlXSk6CisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAg
ICAgCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3
LTAzLTE0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBGaXggc3ludGF4IGVycm9yIGluIEdUSysgQVBJIGRvY3MuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CmluZGV4IGIxY2VlMTQ1Mzk5ZGIwYjE1N2YxMjA0YzdjZmVkMmNhZjUzZjZi
ZTkuLmM4MTg3MjAwMzkzYzM3YzAzM2FlOGZhM2ExNzQ5ZWUwZGQwODg5NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CkBAIC0zMzMsNyArMzMzLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1l
SW5mby5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcAorICAg
IFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
QVBJSGl0VGVzdFJlc3VsdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4
ZTJmZTUxYjcuLjczZGE4ZjhmNzkwOTRhMGI2ZTY5YjM2ZDJmMWJjMjFkOWIzNTNhZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdl
ciwKICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKLSAgICAgICAgSFRUUENv
b2tpZVN0b3JhZ2UsCisgICAgICAgIEhUVFBDb29raWVTdG9yZSwKICAgICAgICAgSGl0VGVzdFJl
c3VsdCwKICAgICAgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiwKICAgICAgICAgR3JhbW1hckRldGFp
bCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGRjNjlhZDc5
MzljNWY0Y2QwZjAxMWU3YTZlN2Q0N2EyNzhkNmY5NGMuLjQ0MWIzNGZlZTY1NzFlZWI4ZDU3NTdj
NzE3ZGQ0MTJmODlmMDlmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQpAQCAtMzYsNyArMzYsNyBAQAogI2ltcG9ydCAiV0tDb250ZW50RXh0ZW5zaW9uSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLQ29udGVudEV4dGVuc2lvblN0b3JlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9ydCAiV0tOU0RpY3Rp
b25hcnkuaCIKQEAgLTE3OSw4ICsxNzksOCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXpl
X3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW1dLRnJhbWVJbmZvIGFsbG9j
XTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFR5cGU6OkhUVFBDb29raWVTdG9yYWdlOgot
ICAgICAgICB3cmFwcGVyID0gW1dLSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdOworICAgIGNhc2Ug
VHlwZTo6SFRUUENvb2tpZVN0b3JlOgorICAgICAgICB3cmFwcGVyID0gW1dLSFRUUENvb2tpZVN0
b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzhiODUyNGI5ZmM4OWYxNGFjODQ2MjM1
YzE3Y2I1MTFiNDhiOGUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKLQotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1I
VFRQQ29va2llU3RvcmFnZTo6SFRUUENvb2tpZVN0b3JhZ2UoV2Vic2l0ZURhdGFTdG9yZSYgd2Vi
c2l0ZURhdGFTdG9yZSkKLSAgICA6IG1fb3duaW5nRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUp
Ci17Ci19Ci0KLUhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKQotewotfQot
Ci12b2lkIEhUVFBDb29raWVTdG9yYWdlOjpjb29raWVzKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwotICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7Ci0gICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0KLSAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxD
b29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb29raWVzKTsKLSAgICB9KTsKLX0KLQotdm9pZCBI
VFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRl
RGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29v
a2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+
c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgIGNvb2tp
ZU1hbmFnZXItPmdldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCB1cmwsIFtwb29sID0g
V1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZShjb25zdCBXZWJD
b3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0
YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3Vw
cGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgIGNvb2tpZU1h
bmFnZXItPnNldENvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBX
VEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293
bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0
b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBj
b29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKLQotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Np
b25JRCgpLCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgW3Bvb2wgPSBXVEZNb3ZlKHBv
b2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRl
RGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29v
a2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+
c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgIGNvb2tp
ZU1hbmFnZXItPmRlbGV0ZUNvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bv
b2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnJlbW92
ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBk
YXRlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8m
IGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICBh
dXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9u
cygpOwotICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotCi0gICAgY29va2llTWFuYWdlci0+ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkYXRlLCBbcG9vbCA9
IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBIVFRQQ29va2llU3RvcmFnZTo6c2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBt
X293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0
YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRv
KiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eT4oKTsKLQotICAgIGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBwb2xpY3ksIFtwb29sID0gV1RGTW92ZShwb29sKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0p
OwotfQotCi12b2lkIEhUVFBDb29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVE
YXRhU3RvcmUoKTsKLSAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29r
aWVTdG9yYWdlT3BlcmF0aW9ucygpOwotICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5z
dXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotCi0gICAgY29va2ll
TWFuYWdlci0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUpCi0gICAgICAgICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2
ZXI7Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKLSAgICB9KTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFk
ZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2ZjlkMzAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmFnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5j
bHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
VVJMOwotc3RydWN0IENvb2tpZTsKLX0KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLWNsYXNzIFdlYnNp
dGVEYXRhU3RvcmU7Ci0KLWNsYXNzIEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9i
amVjdEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmFnZT4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8SFRUUENvb2tpZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJzaXRlRGF0YVN0b3JlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRU
UENvb2tpZVN0b3JhZ2Uod2Vic2l0ZURhdGFTdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
fkhUVFBDb29raWVTdG9yYWdlKCk7Ci0KLSAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgdm9pZCBjb29raWVzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotCi0gICAg
dm9pZCBzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OwotICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotCi0gICAgdm9pZCByZW1vdmVDb29raWVz
U2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotCi0gICAgdm9pZCBzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KEZ1bmN0aW9uPHZvaWQgKFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwotICAgIAotcHJpdmF0ZToKLSAgICBIVFRQQ29va2llU3RvcmFn
ZShXZWJzaXRlRGF0YVN0b3JlJik7Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0Rh
dGFTdG9yZTsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDk2NWRhOWJiYzc2NjU3M2NkMjdl
OTMwOTM5ZjEzNzUyODUwYWVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9y
ZS5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNw
YWNlIEFQSSB7CisKK0hUVFBDb29raWVTdG9yZTo6SFRUUENvb2tpZVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRl
RGF0YVN0b3JlKQoreworfQorCitIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKQor
eworfQorCit2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsK
KyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3Bl
cmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0
QWxsQ29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3Zv
aWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JD
b29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29s
LT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29v
a2llTWFuYWdlci0+Z2V0Q29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCksIHVybCwgW3Bvb2wg
PSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb29raWVzKTsK
KyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OnNldENvb2tpZShjb25zdCBXZWJD
b3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3Vw
cGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1h
bmFnZXItPnNldENvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBX
VEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpzZXRDb29raWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25p
bmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9y
ZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29v
a2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9u
SUQoKSwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNv
cmU6OkNvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVT
dG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBw
bGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFu
YWdlci0+ZGVsZXRlQ29va2llKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llLCBbcG9vbCA9
IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OnJlbW92ZUNvb2tp
ZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBkYXRlLCBG
dW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFT
dG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBv
b2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwor
ICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkYXRlLCBbcG9vbCA9IFdURk1v
dmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdE
YXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2ll
TWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwor
dm9pZCBIVFRQQ29va2llU3RvcmU6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248
dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgp
OworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VP
cGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5n
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgW3Bvb2wgPSBX
VEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkK
KyAgICAgICAgICAgIHBvbGljeSA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKKworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2xpY3kpOworICAgIH0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRU
UENvb2tpZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MDc4ODNlZmEwZDQxZWMzOWRiODEwMTMyYTg5Mzc0ZTY5
ZGFlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVSTDsKK3N0cnVjdCBDb29raWU7
Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOworCitjbGFz
cyBIVFRQQ29va2llU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OkhUVFBDb29raWVTdG9yZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tpZVN0
b3JlPiBjcmVhdGUoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUVFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0
b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRUUENvb2tpZVN0b3JlKCk7CisKKyAgICB2
b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6
Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9p
ZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZv
aWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKFdlYktpdDo6
SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIAorcHJp
dmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOworCisgICAgV2Vi
c2l0ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3RvcmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBl
NzNjZWFjM2RhZDRjMDhhZjlmZWZkNWQzOWRhN2ZlMGI2YzAzMzYzLi41MWJmOWY5M2FiZDI1NDYy
Mzc0OWRlMTYzYTA5NmRlM2MzOThkODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTY0LDEyICs2NCwxMiBAQCBX
ZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiB9CiAKLUhUVFBDb29raWVT
dG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSgpCitIVFRQQ29va2ll
U3RvcmUmIFdlYnNpdGVEYXRhU3RvcmU6Omh0dHBDb29raWVTdG9yZSgpCiB7Ci0gICAgaWYgKCFt
X2FwaUhUVFBDb29raWVTdG9yYWdlKQotICAgICAgICBtX2FwaUhUVFBDb29raWVTdG9yYWdlID0g
SFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFtX2FwaUhUVFBDb29r
aWVTdG9yZSkKKyAgICAgICAgbV9hcGlIVFRQQ29va2llU3RvcmUgPSBIVFRQQ29va2llU3RvcmU6
OmNyZWF0ZSgqdGhpcyk7CiAKLSAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cisg
ICAgcmV0dXJuICptX2FwaUhUVFBDb29raWVTdG9yZTsKIH0KIAogYm9vbCBXZWJzaXRlRGF0YVN0
b3JlOjppc1BlcnNpc3RlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2OGNlNThhZTU5YTFkN2FlNjM4MjY4Y2VkOGM5
MTgxY2FjNjhhOGExLi5mYjE5NjM1MmZjYWE0MDNiMDdlZWE1NTFiMGVhYzlhOTY2ZDYyMTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBUElXZWJzaXRlRGF0YVN0b3JlX2gKICNk
ZWZpbmUgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAKLSNpbmNsdWRlICJBUElIVFRQQ29va2llU3Rv
cmFnZS5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiAqbV93ZWJzaXRlRGF0
YVN0b3JlOyB9Ci0gICAgSFRUUENvb2tpZVN0b3JhZ2UmIGh0dHBDb29raWVTdG9yYWdlKCk7Cisg
ICAgSFRUUENvb2tpZVN0b3JlJiBodHRwQ29va2llU3RvcmUoKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci0gICAgUmVmUHRyPEhU
VFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOworICAgIFJlZlB0cjxIVFRQ
Q29va2llU3RvcmU+IG1fYXBpSFRUUENvb2tpZVN0b3JlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VhOTJlYzIwYzk5ZDY2NjEwZDFjYmE4
ZjY2MjhjNjJlMTI1N2EyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0
b3JhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+Ci0KLSNpZiBXS19BUElfRU5BQkxFRAotCi0jaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQotTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
LQotLyohCi0gQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhl
IEhUVFAgY29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFT
dG9yZS4KLSAqLwotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKQotQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKLQot
LSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7Ci0KLS8qISBAYWJzdHJhY3QgRmV0
Y2hlcyBhbGwgc3RvcmVkIGNvb2tpZXMuCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxv
Y2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2llcy4KLSAqLwotLSAodm9pZClmZXRj
aENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIG9mIHRoZSBzdG9yZWQgY29va2ll
cyBmb3IgdGhlIGdpdmVuIFVSTC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0
byBpbnZva2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgotICovCi0tICh2b2lkKWZldGNoQ29v
a2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0
IFNldCBhIGNvb2tpZS4KLSBAcGFyYW0gY29va2llIFRoZSBjb29raWUgdG8gc2V0LgotIEBwYXJh
bSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFz
IGJlZW4gc3RvcmVkLgotICovCi0tICh2b2lkKXNldENvb2tpZTooTlNIVFRQQ29va2llICopY29v
a2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5k
bGVyOwotCi0vKiEgQGFic3RyYWN0IEFkZHMgYW4gYXJyYXkgY29va2llcyB0byB0aGUgY29va2ll
IHN0b3JlLCBmb2xsb3dpbmcgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5LgotIEBwYXJhbSBjb29r
aWVzIFRoZSBjb29raWVzIHRvIHNldC4KLSBAcGFyYW0gVVJMIFRoZSBVUkwgZnJvbSB3aGljaCB0
aGUgY29va2llcyB3ZXJlIHNlbnQuCi0gQHBhcmFtIG1haW5Eb2N1bWVudFVSTCBUaGUgbWFpbiBk
b2N1bWVudCBVUkwgdG8gYmUgdXNlZCBhcyBhIGJhc2UgZm9yIHRoZSAic2FtZSBkb21haW4gYXMg
bWFpbiBkb2N1bWVudCIgcG9saWN5LgotIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2Nr
IHRvIGludm9rZSBvbmNlIHRoZSBjb29raWVzIGhhdmUgYmVlbiBzdG9yZWQuCi0gKi8KLS0gKHZv
aWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDoo
TlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAqKW1haW5Eb2N1bWVu
dFVSTCBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcjsKLQotLyohIEBhYnN0cmFjdCBEZWxldGUgdGhlIHNwZWNpZmllZCBjb29raWUuCi0gQHBh
cmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZSBo
YXMgYmVlbiBkZWxldGVkLgotICovCi0tICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2ll
ICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRp
b25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IERlbGV0ZSBhbGwgY29va2llcyBmcm9tIHRoZSBj
b29raWUgc3RvcmFnZSBzaW5jZSB0aGUgcHJvdmlkZWQgZGF0ZS4KLSBAcGFyYW0gZGF0ZSBUaGUg
ZGF0ZSBhZnRlciB3aGljaCBzZXQgY29va2llcyBzaG91bGQgYmUgcmVtb3ZlZC4KLSBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZl
IGJlZW4gZGVsZXRlZC4KLSAqLwotLSAodm9pZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0Rh
dGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRp
b25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IFNldHMgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5
IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgotIEBwYXJhbSBwb2xpY3kgVGhlIGNvb2tpZSBh
Y2NlcHQgcG9saWN5IHRvIHNldC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0
byBpbnZva2Ugb25jZSB0aGUgcG9saWN5IGhhcyBiZWVuIHNldC4KLSAqLwotLSAodm9pZClzZXRD
b29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kgY29tcGxl
dGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7Ci0KLS8q
ISBAYWJzdHJhY3QgRmV0Y2hlcyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kgcHJlZmVyZW5jZSBv
ZiB0aGUgcmVjZWl2ZXIuCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52
b2tlIHdpdGggdGhlIGZldGNoZWQgcG9saWN5LgotICovCi0tICh2b2lkKWZldGNoQ29va2llQWNj
ZXB0UG9saWN5Oih2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWNvbXBsZXRpb25I
YW5kbGVyOwotCi1AZW5kCi0KLU5TX0FTU1VNRV9OT05OVUxMX0VORAotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3Rv
cmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmFnZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNjNzM0YTZmMjZhN2Yw
M2M4NDJmYTc0NGM4NTBmMjYwNTMyM2VlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRU
UENvb2tpZVN0b3JhZ2UubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZUlu
dGVybmFsLmgiCi0KLSNpZiBXS19BUElfRU5BQkxFRAotCi0jaW5jbHVkZSAiSFRUUENvb2tpZUFj
Y2VwdFBvbGljeS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3Jl
Q29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29v
a2llcykKLXsKLSAgICBOU011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcyA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29va2llcy5zaXplKCldOwot
Ci0gICAgZm9yIChhdXRvJiBjb29raWUgOiBjb3JlQ29va2llcykKLSAgICAgICAgW25zQ29va2ll
cyBhZGRPYmplY3Q6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07Ci0KLSAgICByZXR1cm4gbnNDb29r
aWVzOwotfQotCi1AaW1wbGVtZW50YXRpb24gV0tIVFRQQ29va2llU3RvcmFnZQotCi0tICh2b2lk
KWRlYWxsb2MKLXsKLSAgICBfY29va2llU3RvcmFnZS0+QVBJOjpIVFRQQ29va2llU3RvcmFnZTo6
fkhUVFBDb29raWVTdG9yYWdlKCk7Ci0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZv
aWQpZmV0Y2hDb29raWVzOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21w
bGV0aW9uSGFuZGxlcgotewotICAgIF9jb29raWVTdG9yYWdlLT5jb29raWVzKFtoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29va2llcykgewotICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgcmF3SGFu
ZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKLSAgICB9KTsKLX0KLQotLSAo
dm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgotewot
ICAgIF9jb29raWVTdG9yYWdlLT5jb29raWVzKHVybCwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29r
aWVzKSB7Ci0gICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29r
aWVzVG9OU0Nvb2tpZXMoY29va2llcykpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXNldENvb2tp
ZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNv
bXBsZXRpb25IYW5kbGVyCi17Ci0gICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZShjb29raWUs
IFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKLSAgICAg
ICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKLSAgICAgICAg
aWYgKHJhd0hhbmRsZXIpCi0gICAgICAgICAgICByYXdIYW5kbGVyKCk7Ci0gICAgfSk7Ci0KLX0K
LQotLSAodm9pZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIF9jb29raWVTdG9y
YWdlLT5kZWxldGVDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKV0oKSB7Ci0gICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgp
KWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChyYXdIYW5kbGVyKQotICAgICAgICAgICAgcmF3
SGFuZGxlcigpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVS
TDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkp
Y29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29v
a2llczsKLSAgICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291
bnQpOwotICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKQotICAgICAgICBj
b3JlQ29va2llcy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKLQotICAgIF9jb29raWVTdG9yYWdl
LT5zZXRDb29raWVzKGNvcmVDb29raWVzLCBVUkwsIG1haW5Eb2N1bWVudFVSTCwgW2hhbmRsZXIg
PSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewotICAgICAgICBhdXRvIHJh
d0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAocmF3SGFu
ZGxlcikKLSAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZCly
ZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgYXV0byBzeXN0ZW1DbG9ja1RpbWUg
PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihzdGQ6OmNocm9u
bzo6ZHVyYXRpb248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkpKTsKLQotICAg
IF9jb29raWVTdG9yYWdlLT5yZW1vdmVDb29raWVzU2luY2VEYXRlKHN5c3RlbUNsb2NrVGltZSwg
W2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewotICAgICAg
ICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwotICAgICAgICBp
ZiAocmF3SGFuZGxlcikKLSAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQot
LSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSAgICBfY29va2llU3RvcmFnZS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKLSAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYg
KHJhd0hhbmRsZXIpCi0gICAgICAgICAgICByYXdIYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXN0
YXRpYyBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBv
bGljeShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0UG9saWN5KQotewotICAgIHN3
aXRjaCAoa2l0UG9saWN5KSB7Ci0gICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3lBbHdheXM6Ci0gICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM7
Ci0gICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjoKLSAgICAgICAg
cmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOwotICAgIGNhc2UgV2ViS2l0OjpI
VFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW46Ci0gICAgICAg
IHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bjsKLSAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbjoKLSAgICAgICAgLy8gQ2FzdCByZXF1aXJlZCBiZWNhdXNlIG9m
IENGTmV0d29ya1NQSS4KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeT4oTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7Ci19
Ci0KLS0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQgKF4pKE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBfY29va2llU3RvcmFnZS0+
Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKV0oV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgewot
ICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5KSloYW5kbGVyLmdldCgpOwotICAgICAgICByYXdIYW5kbGVyKGtpdENvb2tpZVBvbGljeVRv
TlNDb29raWVQb2xpY3kocG9saWN5KSk7Ci0gICAgfSk7Ci19Ci0KLSNwcmFnbWEgbWFyayBXS09i
amVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgotCi0tIChBUEk6Ok9iamVjdCYpX2FwaU9iamVj
dAotewotICAgIHJldHVybiAqX2Nvb2tpZVN0b3JhZ2U7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tp
ZVN0b3JhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZThhMzBiYWQyOGViMWEwMjQ2YzI0MWVlNzY2ZmZiZjM0MTgxMGJiYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3Jh
Z2UuaCIKLQotI2lmIFdLX0FQSV9FTkFCTEVECi0KLSNpbXBvcnQgIkFQSUhUVFBDb29raWVTdG9y
YWdlLmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotaW5s
aW5lIFdLSFRUUENvb2tpZVN0b3JhZ2UgKndyYXBwZXIoQVBJOjpIVFRQQ29va2llU3RvcmFnZSYg
Y29va2llU3RvcmFnZSkKLXsKLSAgICBBU1NFUlQoW2Nvb2tpZVN0b3JhZ2Uud3JhcHBlcigpIGlz
S2luZE9mQ2xhc3M6W1dLSFRUUENvb2tpZVN0b3JhZ2UgY2xhc3NdXSk7Ci0gICAgcmV0dXJuIChX
S0hUVFBDb29raWVTdG9yYWdlICopY29va2llU3RvcmFnZS53cmFwcGVyKCk7Ci19Ci0KLX0KLQot
QGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlICgpIDxXS09iamVjdD4gewotQHBhY2thZ2UK
LSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpIVFRQQ29va2llU3RvcmFnZT4gX2Nvb2tpZVN0
b3JhZ2U7Ci19Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMDNlNmNj
Mjg3YTQ5Y2EzZGJjNjE4NzZjNzViNzkwYWY0NGIyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLmgKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisvKiEKKyBBIFdLSFRUUENvb2tpZVN0b3Jl
IG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAgY29va2llcyBhc3NvY2lhdGVkIHdpdGgg
YSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4KKyAqLworV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBXS0hUVFBD
b29raWVTdG9yZSA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxB
QkxFOworCisvKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIHN0b3JlZCBjb29raWVzLgorIEBwYXJh
bSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIGNv
b2tpZXMuCisgKi8KKy0gKHZvaWQpZmV0Y2hDb29raWVzOih2b2lkICheKShOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBGZXRjaGVz
IGFsbCBvZiB0aGUgc3RvcmVkIGNvb2tpZXMgZm9yIHRoZSBnaXZlbiBVUkwuCisgQHBhcmFtIGNv
bXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2ll
cy4KKyAqLworLSAodm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9u
SGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBTZXQgYSBjb29raWUuCisgQHBhcmFtIGNvb2tpZSBU
aGUgY29va2llIHRvIHNldC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBp
bnZva2Ugb25jZSB0aGUgY29va2llIGhhcyBiZWVuIHN0b3JlZC4KKyAqLworLSAodm9pZClzZXRD
b29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUg
dm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBBZGRzIGFuIGFy
cmF5IGNvb2tpZXMgdG8gdGhlIGNvb2tpZSBzdG9yZSwgZm9sbG93aW5nIHRoZSBjb29raWUgYWNj
ZXB0IHBvbGljeS4KKyBAcGFyYW0gY29va2llcyBUaGUgY29va2llcyB0byBzZXQuCisgQHBhcmFt
IFVSTCBUaGUgVVJMIGZyb20gd2hpY2ggdGhlIGNvb2tpZXMgd2VyZSBzZW50LgorIEBwYXJhbSBt
YWluRG9jdW1lbnRVUkwgVGhlIG1haW4gZG9jdW1lbnQgVVJMIHRvIGJlIHVzZWQgYXMgYSBiYXNl
IGZvciB0aGUgInNhbWUgZG9tYWluIGFzIG1haW4gZG9jdW1lbnQiIHBvbGljeS4KKyBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZl
IGJlZW4gc3RvcmVkLgorICovCistICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVSTDoobnVs
bGFibGUgTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxl
IHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRGVsZXRlIHRo
ZSBzcGVjaWZpZWQgY29va2llLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRv
IGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFzIGJlZW4gZGVsZXRlZC4KKyAqLworLSAodm9pZClk
ZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVs
bGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBEZWxl
dGUgYWxsIGNvb2tpZXMgZnJvbSB0aGUgY29va2llIHN0b3JhZ2Ugc2luY2UgdGhlIHByb3ZpZGVk
IGRhdGUuCisgQHBhcmFtIGRhdGUgVGhlIGRhdGUgYWZ0ZXIgd2hpY2ggc2V0IGNvb2tpZXMgc2hv
dWxkIGJlIHJlbW92ZWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52
b2tlIG9uY2UgdGhlIGNvb2tpZXMgaGF2ZSBiZWVuIGRlbGV0ZWQuCisgKi8KKy0gKHZvaWQpcmVt
b3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoobnVs
bGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBTZXRz
IHRoZSBjb29raWUgYWNjZXB0IHBvbGljeSBwcmVmZXJlbmNlIG9mIHRoZSByZWNlaXZlci4KKyBA
cGFyYW0gcG9saWN5IFRoZSBjb29raWUgYWNjZXB0IHBvbGljeSB0byBzZXQuCisgQHBhcmFtIGNv
bXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIHBvbGljeSBoYXMgYmVl
biBzZXQuCisgKi8KKy0gKHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgp
KWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IEZldGNoZXMgdGhlIGNvb2tpZSBh
Y2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgorIEBwYXJhbSBjb21wbGV0
aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIHBvbGljeS4KKyAq
LworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9O
TlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDhkM2UxZWRiMTNl
MzUxNWZkMjIyM2UzNjMzYjE1ZjBhNzM0YTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMCwwICsx
LDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tIVFRQ
Q29va2llU3RvcmVJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2luY2x1ZGUg
IkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NGTmV0d29ya1NQ
SS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqY29yZUNvb2tpZXNUb05TQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYgY29yZUNvb2tpZXMpCit7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNIVFRQQ29va2llICo+
ICpuc0Nvb2tpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvb2tp
ZXMuc2l6ZSgpXTsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29yZUNvb2tpZXMpCisgICAg
ICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOworCisgICAg
cmV0dXJuIG5zQ29va2llczsKK30KKworQGltcGxlbWVudGF0aW9uIFdLSFRUUENvb2tpZVN0b3Jl
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yZS0+QVBJOjpIVFRQQ29va2ll
U3RvcmU6On5IVFRQQ29va2llU3RvcmUoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICop
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JlLT5jb29raWVzKFtoYW5kbGVy
ID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYgY29va2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAo
XikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3
SGFuZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAgICB9KTsKK30KKwor
LSAodm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9jb29raWVTdG9yZS0+Y29va2llcyh1cmwsIFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29v
a2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNBcnJheTxOU0hU
VFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcihjb3JlQ29v
a2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZXRDb29r
aWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSlj
b21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yZS0+c2V0Q29va2llKGNvb2tpZSwg
W2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAg
ICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBp
ZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQor
CistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3Jl
LT5kZWxldGVDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5k
bGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhh
bmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFu
ZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDoo
TlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29va2ll
czsKKyAgICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291bnQp
OworICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKQorICAgICAgICBjb3Jl
Q29va2llcy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKKworICAgIF9jb29raWVTdG9yZS0+c2V0
Q29va2llcyhjb3JlQ29va2llcywgVVJMLCBtYWluRG9jdW1lbnRVUkwsIFtoYW5kbGVyID0gYWRv
cHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5k
bGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIp
CisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcmVtb3Zl
Q29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gc3lzdGVtQ2xvY2tUaW1lID0gc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9ubzo6ZHVyYXRpb25f
Y2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oc3RkOjpjaHJvbm86OmR1
cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7CisKKyAgICBfY29v
a2llU3RvcmUtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xvY2tUaW1lLCBbaGFuZGxl
ciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdI
YW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lk
KXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9j
b29raWVTdG9yZS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIFtoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdI
YW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRs
ZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kga2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0UG9saWN5KQoreworICAgIHN3aXRjaCAoa2l0
UG9saWN5KSB7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM6
CisgICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM7CisgICAgY2Fz
ZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjoKKyAgICAgICAgcmV0dXJuIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW46CisgICAgICAgIHJldHVybiBO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICBj
YXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjoKKyAgICAgICAgLy8gQ2FzdCByZXF1aXJlZCBiZWNhdXNlIG9mIENGTmV0d29y
a1NQSS4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eT4oTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7Cit9CisKKy0gKHZv
aWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmUtPmdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5
XSldKFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIHsKKyAgICAgICAgYXV0
byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpaGFuZGxl
ci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcihraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9s
aWN5KHBvbGljeSkpOworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9j
b2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICBy
ZXR1cm4gKl9jb29raWVTdG9yZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmVJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9y
ZUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxYjMyYmFlZjI4MTYxNzRlNTRkYjYwZTA2MWU1M2Zl
Y2Y4ZWE2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZS5oIgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworI2ltcG9ydCAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCisjaW1wb3J0ICJXS09iamVjdC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW5saW5lIFdLSFRUUENvb2tpZVN0b3JlICp3cmFw
cGVyKEFQSTo6SFRUUENvb2tpZVN0b3JlJiBjb29raWVTdG9yZSkKK3sKKyAgICBBU1NFUlQoW2Nv
b2tpZVN0b3JlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS0hUVFBDb29raWVTdG9yZSBjbGFz
c11dKTsKKyAgICByZXR1cm4gKFdLSFRUUENvb2tpZVN0b3JlICopY29va2llU3RvcmUud3JhcHBl
cigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmUgKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkhUVFBDb29raWVTdG9y
ZT4gX2Nvb2tpZVN0b3JlOworfQorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXgg
MjM0ZjgwZWJmZTU4NGNjODYyMzUxNWU5MzdmZmYzMzMwYjliYTIwMi4uZTM3ZWViNzkyNjIwNzZi
MDA3YzhlNzQ0MmFlYmE1NjBiNWY4YmIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLSNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3Jh
Z2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE5NSw5ICsxOTUsOSBA
QCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDooQk9PTCllbmFibGVk
CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAotLSAoV0tIVFRQQ29va2llU3RvcmFn
ZSAqKV9odHRwQ29va2llU3RvcmFnZQorLSAoV0tIVFRQQ29va2llU3RvcmUgKilfaHR0cENvb2tp
ZVN0b3JlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+
aHR0cENvb2tpZVN0b3JhZ2UoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfd2Vic2l0
ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oCmluZGV4IDA5OWIwNDU5ZWU2ZWEyZTZjZmY2ZjdkNDFlMDAyMzA0NGI2ZTdl
OWUuLmYwNzE3NGU4MTFmOTA2MTNlNzgxYzVlN2E0ZDg2MWVmYzQwOGEwMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKLUBjbGFzcyBXS0hUVFBDb29raWVTdG9yYWdlOworQGNsYXNzIFdLSFRUUENvb2tp
ZVN0b3JlOwogQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiB0eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9u
cykgewpAQCAtNDQsOCArNDQsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
V2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9z
KDEwLjApKTsKIAotLyohIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjb29raWUgc3RvcmFnZSByZXBy
ZXNlbnRpbmcgSFRUUCBjb29raWVzIGluIHRoaXMgd2Vic2l0ZSBkYXRhIHN0b3JlLiAqLwotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0hUVFBDb29raWVTdG9yYWdlICpfaHR0cENv
b2tpZVN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisvKiEgQGFic3RyYWN0IFJldHVybnMgdGhlIGNvb2tpZSBzdG9yZSByZXByZXNl
bnRpbmcgSFRUUCBjb29raWVzIGluIHRoaXMgd2Vic2l0ZSBkYXRhIHN0b3JlLiAqLworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0hUVFBDb29raWVTdG9yZSAqX2h0dHBDb29raWVT
dG9yZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IGUwMjNiODI1ZWU5ZjQ5MGQyMDdkZWEyOWE3ZjdmNTMxN2I4
MmEzZWQuLjEwMzg0OTdhOGMxYWIyNzg1OWU3YTkxNzljNTQwNGY4ODhlNzc0YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBA
IC03MywxOCArNzMsMjQgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29s
RGVzdHJveWVkKCkKIHsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNr
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAgICAgaW52YWxp
ZGF0ZUNhbGxiYWNrTWFwKG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgaW52YWxpZGF0ZUNhbGxi
YWNrTWFwKG1fdm9pZENhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZ2V0Q29va2llc0NhbGxiYWNr
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikK
IHsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
aHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJv
Y2Vzc0V4aXRlZCk7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9pZENhbGxiYWNrcywg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgaW52YWxpZGF0ZUNhbGxi
YWNrTWFwKG1fZ2V0Q29va2llc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vz
c0V4aXRlZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xv
c2UoTmV0d29ya1Byb2Nlc3NQcm94eSopCiB7CiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
YXJyYXlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwogICAg
IGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3Ms
IENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0
ZWQpOworICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENh
bGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjJkNDQ5M2NkYTc3YTE1YjU0NjExMTEz
YTM2MGJmZjI3MzFmNDFkOC4uYmI5NzYyYWZjZThhZDlhNzU2MGM2Zjg1YTk0NGZkNmM4ZmIwMmY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2Fk
Q2xpZW50LmgiCi0jaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJB
UElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDk4MThhOTM4ZmQ5MDZkYzY5OWY4ZmY5ZjViMmQ0M2E4OWRkYmYw
NzAuLjJiMDdhNGUxMmMwN2JkY2M3ZmM4MGRiZjg4YmI5ZDhiNzVkOGJiODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03Niw3ICs3Niw3IEBAIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwotY2xhc3MgSFRUUENvb2tpZVN0
b3JhZ2U7CitjbGFzcyBIVFRQQ29va2llU3RvcmU7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmlu
ZGV4IDMwNDRmY2VjZjIwMzU5Y2M4M2QyZWM5ODllZDI3YzUxNThlMjYyZGMuLjEyYzk2MTEwMmJl
ZjVmMjUyZTZkNGRjNzUwODE3MTQyZjE2Y2E2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEx
Niw3ICsxMTYsNyBAQCBSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nl
c3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKQogICAgIC8vIFRoaXMgbWVhbnMgdGhh
dCBtdWx0aXBsZSBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9u
LCB3aGljaCBtZWFucyB0aGF0IG11bHRpcGxlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NlcyBjYW4g
YmUgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9yYWdlLgogICAgIC8v
Ci0gICAgLy8gV2hpbGUgdGhpcyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3aXRoIGZ1dHVyZSBB
UElzIGl0IGlzIGFjdHVhbGx5IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUgV0tIVFRQQ29va2ll
U3RvcmFnZSBBUEkKKyAgICAvLyBXaGlsZSB0aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdp
dGggZnV0dXJlIEFQSXMgaXQgaXMgYWN0dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBX
S0hUVFBDb29raWVTdG9yZSBBUEkKICAgICAvLyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUgTmV0
d29ya1Byb2Nlc3MgdG8gc3VjY2Vzc2Z1bGx5IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0gY29v
a2llIHN0b3JhZ2UgY2hhbmdlLgogICAgIC8vCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gc3Rh
cnQgdG8gdW5yYXZlbCB0aGlzIG1lc3MgZ29pbmcgZm9yd2FyZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMzliZTlhZWUwOTU4
YWEwYjgzOGYyY2RhOGY0YTM2MDk4NTk5NjkyLi41MTA0ZGViYjNhN2MzMDc3ODI5NTEyNjQyNTlh
MmZiZmZmMzkxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDYzLDkgKzEwNjMsOSBAQAogCQk1MUQxMjQzNTFFNkRGNjUy
MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdL
VVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCTUxRDEyNDM2MUU2REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0g
Ki87IH07CiAJCTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVy
VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICov
OyB9OwotCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0
ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLzsgfTsKLQkJ
NTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4NTFFNzM0QUUz
MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLzsgfTsKLQkJNTFEMTI0OTkxRTc2
M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVT
dG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JlLmNwcCAqLzsgfTsK
KwkJNTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODUxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovOyB9OworCQk1MUQxMjQ5OTFFNzYz
QzAxMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hU
VFBDb29raWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMw
NEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUx
RDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAw
MzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXNwb25zZURhdGEuY3BwICovOyB9OwpAQCAtMzI4OCwxMSArMzI4OCwxMSBAQAogCQk1MUQx
MjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzODFFNkRGREI5
MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJM
U2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
VVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFE
MTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8q
IEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSUhUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUx
RDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENv
b2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S0hUVFBDb29raWVTdG9yYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQx
MjQ4NjFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4
MjAgLyogQVBJSFRUUENvb2tpZVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hU
VFBDb29raWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NTFF
NzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tp
ZVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQ
Q29va2llU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQx
MzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJ
dGVtUmVxdWVzdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRl
bVJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4
MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTU1Miw5ICs1NTUyLDkgQEAKIAkJCQkxQTRENjY0OTE4QTMw
MzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRGOUVFRTcxQTc4MjQ1NTAw
QjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQkxQTZGQTIxRDFCRDA0MzVC
MDBBQUE2NTAgLyogV0tGcmFtZUluZm9Qcml2YXRlLmggKi8sCi0JCQkJNTFEMTI0ODQxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLywKLQkJCQk1MUQxMjQ4NTFFNzM0
QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLywKLQkJCQk1MUQxMjQ4NjFF
NzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8sCisJCQkJ
NTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggKi8sCisJCQkJ
NTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovLAorCQkJ
CTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgg
Ki8sCiAJCQkJMUE0MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZS5oICovLAogCQkJCTFBQjQwRUUzMUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRl
bnRpZmllcnMubW0gKi8sCiAJCQkJMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0
ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLywKQEAgLTY3NDMsOCArNjc0Myw4IEBACiAJCQkJMkRB
QkE3NzUxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQk5M0E4
OEI0MjFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJCQkJOTNB
ODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKLQkJCQk1MUQx
MjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovLAotCQkJ
CTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5oICovLAor
CQkJCTUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuY3BwICov
LAorCQkJCTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuaCAq
LywKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQu
aCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhp
c3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9h
ZGVyQ2xpZW50LmggKi8sCkBAIC04NTI4LDcgKzg1MjgsNyBAQAogCQkJCTUxNDEyOTk0MUM2NDI4
QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQkQxMkM5MUVGOTAwOEY5QzM1IC8q
IFdlYkltYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0OTkxRTc2
M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzhFMjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAzMkQ4MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTVCQTgzNTFCQTNFNzBBMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTk3ODEsNyArOTc4MSw3
IEBACiAJCQkJMUE2RkJBMkIxMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRz
Y2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3
NjcgLyogTmV0c2NhcGVQbHVnaW5NYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUQxMjQ5MjFF
NzRCRjQ4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzlBMkYzMTFFMjA2NzQ1MDAzOTA1N0Ug
LyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC05ODAwLDcgKzk4MDAsNyBAQAogCQkJCTgzMUVFQkJFMUJE
ODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCRENDQjkxQUM1RkRC
NjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkxMUU3NEJGM0MwMDJCMjgyMCAvKiBBUElIVFRQQ29v
a2llU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZFRDAxQTBEMDQwQjAwRUFEMjA0
IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxMDQyOEMx
QkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVy
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ3MTAyMDM1YmYxNzViYWYwNGQ2NmZjZGRlZjAzOWE3YjQ3
ZmRjYjkuLjlkYjZjZTY3OTU4MDcyYWY0MjRmYmQyNDdkZDRhOTQ3MmQyODQ5ZDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVuYW1lIFdLSFRUUENvb2tpZVN0b3JhZ2UgdG8gV0tIVFRQQ29va2llU3RvcmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW06CisgICAgICAgIChU
RVNUKToKKwogMjAxNy0wMy0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjIxMzg3Nyk6IFdlYktpdDIuQ29va2llTWFuYWdlciBmYWls
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDMzNDY0MmQyOWQ0ZWIyZWQyMDQ5ZGRhMjQ4
NTRhZTllZTFhY2M3Zi4uYTc5ZTRkYzE3YmM5NWJjN2FmNmU5ZTQwYjc0YWUxNDU4NTBjNDE4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1Myw2ICsxNTMsNyBAQAogCQk1MUNEMUM2QzFC
MzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxB
bGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVy
dHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAv
KiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9OwogCQk1
MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDk3MUU3NjNBRjgw
MDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovOyB9OworCQk1MUQxMjQ5QjFFNzg1
NDI1MDAyQjI4MjAgLyogQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYzRjI5MDEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2ll
TWFuYWdlci5jcHAgKi87IH07CiAJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUy
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFNzgwMzYxOTE5QUZGODAwMTgyOUEyIC8qIHNpbXBsZTIuaHRtbCAqLzsgfTsKIAkJNTFF
NUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU3ODAzNzE5MTlBRkY4MDAxODI5
QTIgLyogc2ltcGxlMy5odG1sICovOyB9OwogCQk1MUU2QTg5NDFEMkYxQzBBMDBDMDA0QjYgLyog
TG9jYWxTdG9yYWdlQ2xlYXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUU2QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIu
bW0gKi87IH07CkBAIC0yNjU5LDYgKzI2NjAsNyBAQAogCQkJCTM3NEI3QTYwMURGMzZFRUUwMEFD
Q0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBC
Rjg5NTFERDU5OUNEMDBCMDAzMjggLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBMURGNzQzMjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OUIxRTc4NTQyNTAwMkIyODIwIC8q
IENvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNzFBRkUxRDQ5QzBCRDAw
OTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjQx
QTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDREM4RTQ4RDFCQzVDQjQ1MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCmluZGV4IDI1YWU0N2ZkNWI0
ZjJmZDY0NTc3OGNhNzUzNjI5MjQ1Y2ZkNzJkZGYuLjEyOThkNzBkNjQwN2JkYmMyYTg0MTc3MzI0
M2QzNTUzOTE3ZjcyOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMjcsNyArMjcs
NyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JhZ2UuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAt
NDAsMTAgKzQwLDEwIEBAIFRFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmFnZSkKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQu
b3JnIl1dOwogCi0gICAgUmV0YWluUHRyPFdLSFRUUENvb2tpZVN0b3JhZ2U+IGNvb2tpZVN0b3Jh
Z2UgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdLl9odHRwQ29va2llU3Rv
cmFnZTsKKyAgICBSZXRhaW5QdHI8V0tIVFRQQ29va2llU3RvcmU+IGNvb2tpZVN0b3JlID0gW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXS5faHR0cENvb2tpZVN0b3JlOwogCiAg
ICAgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMgPSBuaWw7Ci0gICAgW2Nvb2tpZVN0
b3JhZ2UgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICBbY29va2llU3RvcmUgZmV0Y2hDb29raWVzOltj
b29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMp
IHsKICAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CiAgICAgICAgIGdv
dEZsYWcgPSB0cnVlOwogICAgIH1dOwpAQCAtNzMsMjEgKzczLDIxIEBAIFRFU1QoV2ViS2l0Miwg
V0tIVFRQQ29va2llU3RvcmFnZSkKICAgICAgICAgTlNIVFRQQ29va2llTWF4aW11bUFnZTogQCIx
MDAwMCIsCiAgICAgfV07CiAKLSAgICBbY29va2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpeworICAgIFtjb29raWVTdG9yZSBzZXRDb29raWU6
Y29va2llMS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpewogICAgICAgICBnb3RGbGFnID0g
dHJ1ZTsKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7
CiAgICAgZ290RmxhZyA9IGZhbHNlOwogCi0gICAgW2Nvb2tpZVN0b3JhZ2Ugc2V0Q29va2llOmNv
b2tpZTIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W10oKXsKKyAgICBbY29va2llU3RvcmUgc2V0
Q29va2llOmNvb2tpZTIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W10oKXsKICAgICAgICAgZ290
RmxhZyA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdv
dEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIAotICAgIFtjb29raWVTdG9yYWdlIGZldGNo
Q29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAq
bnNDb29raWVzKSB7CisgICAgW2Nvb2tpZVN0b3JlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CiAgICAgICAg
ICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOwogICAgICAgICBnb3RGbGFnID0gdHJ1
ZTsKICAgICB9XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304428</attachid>
            <date>2017-03-14 14:50:02 -0700</date>
            <delta_ts>2017-03-14 14:54:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169630-20170314145014.patch</filename>
            <type>text/plain</type>
            <size>70052</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzBiMjdlNzZlNzVlYjUy
NmQ4ZDUyN2VhNTZjYTljZWY2ODM1ZDc1OS4uOWVmNDg1YTUwNjE5NTY0NTg2ODIyOTgzMzAwYjQ4
OTM3MmMwMjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAzLTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV0tIVFRQQ29v
a2llU3RvcmFnZSB0byBXS0hUVFBDb29raWVTdG9yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIAorICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNw
cC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpIVFRQQ29va2llU3RvcmUpOgorICAg
ICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUpOgorICAgICAgICAo
QVBJOjpIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2ll
U3RvcmU6OnNldENvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6c2V0Q29v
a2llcyk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQ29va2llKToKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToK
KyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5o
LgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmUpOgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29v
a2llU3RvcmFnZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSFRUUENvb2tpZVN0b3JhZ2UubW0uCisgICAgICAgIChjb3JlQ29va2llc1RvTlNDb29raWVz
KToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmUgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0hUVFBDb29raWVTdG9yZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tp
ZVN0b3JlIGZldGNoQ29va2llc0ZvclVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tIVFRQQ29va2llU3RvcmUgc2V0Q29va2llOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIHNldENvb2tpZXM6Zm9yVVJMOm1haW5E
b2N1bWVudFVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2ll
U3RvcmUgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tIVFRQQ29va2llU3RvcmUgc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIGZldGNoQ29va2llQWNjZXB0UG9saWN5Ol0pOgor
ICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZUludGVybmFsLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JlXSk6CisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAg
ICAgCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3
LTAzLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFj
dG9yOiBBbGxvdyBXZWJLaXQyIHRvIG92ZXJyaWRlIHRoZSBjcmVhdGlvbiBvZiBSZWFsdGltZU1l
ZGlhU291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBiMWNlZTE0NTM5OWRiMGIxNTdmMTIw
NGM3Y2ZlZDJjYWY1M2Y2YmU5Li5jODE4NzIwMDM5M2MzN2MwMzNhZThmYTNhMTc0OWVlMGRkMDg4
OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMzMzLDcgKzMzMyw3IEBAIHNldChXZWJLaXQy
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA0NmYyNzkxZGRmYzQ1MjQy
YmEzNTE0YjA1Zjk2MzMxOGUyZmU1MWI3Li43M2RhOGY4Zjc5MDk0YTBiNmU2OWIzNmQyZjFiYzIx
ZDliMzUzYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTExNiw3
ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZ1bGxTY3JlZW5NYW5hZ2VyLAogICAgICAgICBH
ZW9sb2NhdGlvbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qs
Ci0gICAgICAgIEhUVFBDb29raWVTdG9yYWdlLAorICAgICAgICBIVFRQQ29va2llU3RvcmUsCiAg
ICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9zaXRpb24sCiAgICAg
ICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQppbmRleCBkYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjLi40NDFiMzRm
ZWU2NTcxZWViOGQ1NzU3YzcxN2RkNDEyZjg5ZjA5ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgIldLQ29udGVu
dEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRFeHRlbnNpb25TdG9yZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCi0jaW1wb3J0ICJXS0hU
VFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNp
bXBvcnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBAIC0xNzksOCArMTc5LDggQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtX
S0ZyYW1lSW5mbyBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBUeXBlOjpIVFRQ
Q29va2llU3RvcmFnZToKLSAgICAgICAgd3JhcHBlciA9IFtXS0hUVFBDb29raWVTdG9yYWdlIGFs
bG9jXTsKKyAgICBjYXNlIFR5cGU6OkhUVFBDb29raWVTdG9yZToKKyAgICAgICAgd3JhcHBlciA9
IFtXS0hUVFBDb29raWVTdG9yZSBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yYWdlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4Yjg1MjRi
OWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9y
YWdlLmgiCi0KLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1l
c3BhY2UgQVBJIHsKLQotSFRUUENvb2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCi0gICAgOiBtX293bmluZ0RhdGFTdG9yZSh3
ZWJzaXRlRGF0YVN0b3JlKQotewotfQotCi1IVFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29raWVT
dG9yYWdlKCkKLXsKLX0KLQotdm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVE
YXRhU3RvcmUoKTsKLSAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29r
aWVTdG9yYWdlT3BlcmF0aW9ucygpOwotICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5z
dXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotCi0gICAgY29va2ll
TWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RG
TW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdE
YXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7Ci0gICAgYXV0byogY29va2ll
TWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCk7Ci0KLSAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29r
aWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvb2tpZXMpOwotICAgIH0pOwotfQotCi12b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRh
U3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9j
ZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7Ci0gICAgYXV0byogY29va2llTWFu
YWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
Ci0KLSAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBj
b29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotfQotCi12b2lkIEhUVFBDb29raWVTdG9y
YWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRV
UkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byYg
ZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGF1
dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25z
KCk7Ci0gICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0KLSAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVz
KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFtw
b29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotICAgIH0pOwotfQotCi12b2lkIEhUVFBDb29raWVTdG9yYWdlOjpkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdE
YXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7Ci0gICAgYXV0byogY29va2ll
TWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCk7Ci0KLSAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWUoZGF0YVN0b3JlLnNlc3Npb25J
RCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotfQotCi12b2lkIEhUVFBDb29r
aWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0
YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3Vw
cGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgIGNvb2tpZU1h
bmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0
b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwotICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7Ci0gICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0KLSAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9
IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0Rh
dGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnBy
b2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVN
YW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4o
KTsKLQotICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0
b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvciAhPSBD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgcG9saWN5ID0gSFRUUENvb2tp
ZUFjY2VwdFBvbGljeU5ldmVyOwotCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSk7
Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhZGY3YmEyNTZiNjgzMGU0MzA1ZDk5ZDYwZDcxNTM0YWM4NmY5ZDMwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgotI2luY2x1ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKLSNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFVSTDsKLXN0cnVjdCBDb29raWU7Ci19Ci0KLW5hbWVzcGFjZSBBUEkg
ewotCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwotCi1jbGFzcyBIVFRQQ29va2llU3RvcmFnZSBm
aW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhUVFBDb29raWVTdG9yYWdlPiBjcmVhdGUoV2Vi
c2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhUVFBDb29raWVTdG9yYWdlKHdlYnNpdGVEYXRhU3RvcmUpKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIH5IVFRQQ29va2llU3RvcmFnZSgpOwotCi0gICAgdm9pZCBjb29raWVz
KEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwotICAgIHZvaWQgY29va2llcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKLQotICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgc2V0Q29va2ll
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpD
b29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLQotICAgIHZv
aWQgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLQotICAgIHZv
aWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChXZWJLaXQ6OkhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAKLXByaXZhdGU6Ci0gICAg
SFRUUENvb2tpZVN0b3JhZ2UoV2Vic2l0ZURhdGFTdG9yZSYpOwotCi0gICAgV2Vic2l0ZURhdGFT
dG9yZSYgbV9vd25pbmdEYXRhU3RvcmU7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA5NjVk
YTliYmM3NjY1NzNjZDI3ZTkzMDkzOWYxMzc1Mjg1MGFlZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcApAQCAtMCww
ICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
UElIVFRQQ29va2llU3RvcmUuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
KyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK25hbWVzcGFjZSBBUEkgeworCitIVFRQQ29va2llU3RvcmU6OkhUVFBDb29raWVT
dG9yZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAgIDogbV9vd25pbmdE
YXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKK3sKK30KKworSFRUUENvb2tpZVN0b3JlOjp+SFRU
UENvb2tpZVN0b3JlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OmNvb2tpZXMoRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJz
aXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9y
Q29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9v
bC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNv
b2tpZU1hbmFnZXItPmdldEFsbENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9
IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOwor
ICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llcyhjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmlu
Z0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3Jl
LnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29r
aWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25J
RCgpLCB1cmwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNv
b2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpzZXRD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRh
U3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9j
ZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFu
YWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBj
b29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9y
ZTo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJM
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRh
dGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRv
IHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygp
OworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhk
YXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBbcG9v
bCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OmRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFT
dG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nl
c3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5h
Z2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsK
KworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0
b3JlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3Jl
KCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFn
ZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVu
dDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXIt
PmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0
ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpz
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBG
dW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFT
dG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBv
b2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwor
ICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+c2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIHBvbGljeSwgW3Bvb2wgPSBXVEZNb3Zl
KHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xG
b3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBw
b29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAg
Y29va2llTWFuYWdlci0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShkYXRhU3RvcmUuc2Vzc2lv
bklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpCisgICAgICAgICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9s
aWN5TmV2ZXI7CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKKyAgICB9KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDA3ODgzZWZhMGQ0MWVjMzlk
YjgxMDEzMmE4OTM3NGU2OWRhZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
ICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7
CitzdHJ1Y3QgQ29va2llOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKKworY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPEhUVFBDb29raWVTdG9yZT4gY3JlYXRlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRh
U3RvcmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVFRQQ29va2llU3Rv
cmUod2Vic2l0ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVT
dG9yZSgpOworCisgICAgdm9pZCBjb29raWVzKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY29va2ll
cyhjb25zdCBXZWJDb3JlOjpVUkwmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgc2V0Q29va2ll
KGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50
VVJMLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZShzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShX
ZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlv
bjx2b2lkIChXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICAKK3ByaXZhdGU6CisgICAgSFRUUENvb2tpZVN0b3JlKFdlYnNpdGVEYXRhU3Rv
cmUmKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUmIG1fb3duaW5nRGF0YVN0b3JlOworfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAKaW5kZXggZTczY2VhYzNkYWQ0YzA4YWY5ZmVmZDVkMzlkYTdmZTBiNmMwMzM2My4u
NTFiZjlmOTNhYmQyNTQ2MjM3NDlkZTE2M2EwOTZkZTNjMzk4ZDg4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC02
NCwxMiArNjQsMTIgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewog
fQogCi1IVFRQQ29va2llU3RvcmFnZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3Jh
Z2UoKQorSFRUUENvb2tpZVN0b3JlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmUo
KQogewotICAgIGlmICghbV9hcGlIVFRQQ29va2llU3RvcmFnZSkKLSAgICAgICAgbV9hcGlIVFRQ
Q29va2llU3RvcmFnZSA9IEhUVFBDb29raWVTdG9yYWdlOjpjcmVhdGUoKnRoaXMpOworICAgIGlm
ICghbV9hcGlIVFRQQ29va2llU3RvcmUpCisgICAgICAgIG1fYXBpSFRUUENvb2tpZVN0b3JlID0g
SFRUUENvb2tpZVN0b3JlOjpjcmVhdGUoKnRoaXMpOwogCi0gICAgcmV0dXJuICptX2FwaUhUVFBD
b29raWVTdG9yYWdlOworICAgIHJldHVybiAqbV9hcGlIVFRQQ29va2llU3RvcmU7CiB9CiAKIGJv
b2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjhjZTU4YWU1OWEx
ZDdhZTYzODI2OGNlZDhjOTE4MWNhYzY4YThhMS4uZmIxOTYzNTJmY2FhNDAzYjA3ZWVhNTUxYjBl
YWM5YTk2NmQ2MjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0
ZURhdGFTdG9yZV9oCiAjZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAi
QVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpOwog
CiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgeyByZXR1
cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQotICAgIEhUVFBDb29raWVTdG9yYWdlJiBodHRwQ29v
a2llU3RvcmFnZSgpOworICAgIEhUVFBDb29raWVTdG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7CiAK
ICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CkBAIC03NSw3
ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwog
CiAgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3Jl
OwotICAgIFJlZlB0cjxIVFRQQ29va2llU3RvcmFnZT4gbV9hcGlIVFRQQ29va2llU3RvcmFnZTsK
KyAgICBSZWZQdHI8SFRUUENvb2tpZVN0b3JlPiBtX2FwaUhUVFBDb29raWVTdG9yZTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hU
VFBDb29raWVTdG9yYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYTkyZWMy
MGM5OWQ2NjYxMGQxY2JhOGY2NjI4YzYyZTEyNTdhMjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0hUVFBDb29raWVTdG9yYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgotCi0jaWYgV0tfQVBJ
X0VOQUJMRUQKLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0KLU5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCi0KLS8qIQotIEEgV0tIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgYWxs
b3dzIG1hbmFnaW5nIHRoZSBIVFRQIGNvb2tpZXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxh
ciBXS1dlYnNpdGVEYXRhU3RvcmUuCi0gKi8KLVdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKLUBpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmFn
ZSA6IE5TT2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwotCi0v
KiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIHN0b3JlZCBjb29raWVzLgotIEBwYXJhbSBjb21wbGV0
aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIGNvb2tpZXMuCi0g
Ki8KLS0gKHZvaWQpZmV0Y2hDb29raWVzOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqKSljb21wbGV0aW9uSGFuZGxlcjsKLQotLyohIEBhYnN0cmFjdCBGZXRjaGVzIGFsbCBvZiB0
aGUgc3RvcmVkIGNvb2tpZXMgZm9yIHRoZSBnaXZlbiBVUkwuCi0gQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2llcy4KLSAqLwot
LSAodm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsK
LQotLyohIEBhYnN0cmFjdCBTZXQgYSBjb29raWUuCi0gQHBhcmFtIGNvb2tpZSBUaGUgY29va2ll
IHRvIHNldC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25j
ZSB0aGUgY29va2llIGhhcyBiZWVuIHN0b3JlZC4KLSAqLwotLSAodm9pZClzZXRDb29raWU6KE5T
SFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXiko
KSljb21wbGV0aW9uSGFuZGxlcjsKLQotLyohIEBhYnN0cmFjdCBBZGRzIGFuIGFycmF5IGNvb2tp
ZXMgdG8gdGhlIGNvb2tpZSBzdG9yZSwgZm9sbG93aW5nIHRoZSBjb29raWUgYWNjZXB0IHBvbGlj
eS4KLSBAcGFyYW0gY29va2llcyBUaGUgY29va2llcyB0byBzZXQuCi0gQHBhcmFtIFVSTCBUaGUg
VVJMIGZyb20gd2hpY2ggdGhlIGNvb2tpZXMgd2VyZSBzZW50LgotIEBwYXJhbSBtYWluRG9jdW1l
bnRVUkwgVGhlIG1haW4gZG9jdW1lbnQgVVJMIHRvIGJlIHVzZWQgYXMgYSBiYXNlIGZvciB0aGUg
InNhbWUgZG9tYWluIGFzIG1haW4gZG9jdW1lbnQiIHBvbGljeS4KLSBAcGFyYW0gY29tcGxldGlv
bkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZlIGJlZW4gc3Rv
cmVkLgotICovCi0tICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICop
Y29va2llcyBmb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVSTDoobnVsbGFibGUgTlNV
UkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4p
KCkpY29tcGxldGlvbkhhbmRsZXI7Ci0KLS8qISBAYWJzdHJhY3QgRGVsZXRlIHRoZSBzcGVjaWZp
ZWQgY29va2llLgotIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBv
bmNlIHRoZSBjb29raWUgaGFzIGJlZW4gZGVsZXRlZC4KLSAqLwotLSAodm9pZClkZWxldGVDb29r
aWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKLQotLyohIEBhYnN0cmFjdCBEZWxldGUgYWxsIGNv
b2tpZXMgZnJvbSB0aGUgY29va2llIHN0b3JhZ2Ugc2luY2UgdGhlIHByb3ZpZGVkIGRhdGUuCi0g
QHBhcmFtIGRhdGUgVGhlIGRhdGUgYWZ0ZXIgd2hpY2ggc2V0IGNvb2tpZXMgc2hvdWxkIGJlIHJl
bW92ZWQuCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2Ug
dGhlIGNvb2tpZXMgaGF2ZSBiZWVuIGRlbGV0ZWQuCi0gKi8KLS0gKHZvaWQpcmVtb3ZlQ29va2ll
c1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKLQotLyohIEBhYnN0cmFjdCBTZXRzIHRoZSBjb29r
aWUgYWNjZXB0IHBvbGljeSBwcmVmZXJlbmNlIG9mIHRoZSByZWNlaXZlci4KLSBAcGFyYW0gcG9s
aWN5IFRoZSBjb29raWUgYWNjZXB0IHBvbGljeSB0byBzZXQuCi0gQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIHBvbGljeSBoYXMgYmVlbiBzZXQuCi0g
Ki8KLS0gKHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kpcG9saWN5IGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRp
b25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IEZldGNoZXMgdGhlIGNvb2tpZSBhY2NlcHQgcG9s
aWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgotIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIHBvbGljeS4KLSAqLwotLSAodm9p
ZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5KSljb21wbGV0aW9uSGFuZGxlcjsKLQotQGVuZAotCi1OU19BU1NVTUVfTk9OTlVMTF9FTkQK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUzYzczNGE2ZjI2YTdmMDNjODQyZmE3NDRjODUwZjI2MDUzMjNlZWYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTYx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLSFRU
UENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgotCi0jaWYgV0tfQVBJX0VOQUJMRUQKLQotI2luY2x1
ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NGTmV0d29y
a1NQSS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLXN0YXRpYyBOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqY29yZUNvb2tpZXNUb05TQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29yZUNvb2tpZXMpCi17Ci0gICAgTlNNdXRhYmxlQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpuc0Nvb2tpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNv
b2tpZXMuc2l6ZSgpXTsKLQotICAgIGZvciAoYXV0byYgY29va2llIDogY29yZUNvb2tpZXMpCi0g
ICAgICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29raWVdOwotCi0g
ICAgcmV0dXJuIG5zQ29va2llczsKLX0KLQotQGltcGxlbWVudGF0aW9uIFdLSFRUUENvb2tpZVN0
b3JhZ2UKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgX2Nvb2tpZVN0b3JhZ2UtPkFQSTo6SFRU
UENvb2tpZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSgpOwotCi0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tICh2b2lkKWZldGNoQ29va2llczoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBD
b29raWUgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBfY29va2llU3RvcmFnZS0+Y29v
a2llcyhbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKLSAgICAgICAgYXV0byByYXdIYW5k
bGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7
Ci0gICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7Ci0g
ICAgfSk7Ci19Ci0KLS0gKHZvaWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxl
dGlvbkhhbmRsZXIKLXsKLSAgICBfY29va2llU3RvcmFnZS0+Y29va2llcyh1cmwsIFtoYW5kbGVy
ID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYgY29va2llcykgewotICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAo
XikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgcmF3
SGFuZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKLSAgICB9KTsKLX0KLQot
LSAodm9pZClzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIF9jb29raWVTdG9yYWdlLT5z
ZXRDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oKSB7Ci0gICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgIGlmIChyYXdIYW5kbGVyKQotICAgICAgICAgICAgcmF3SGFuZGxlcigp
OwotICAgIH0pOwotCi19Ci0KLS0gKHZvaWQpZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKilj
b29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSAgICBfY29va2llU3RvcmFnZS0+ZGVsZXRlQ29va2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewotICAgICAgICBhdXRvIHJhd0hhbmRs
ZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAocmF3SGFuZGxlcikK
LSAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzZXRDb29r
aWVzOihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKWNvb2tpZXMgZm9yVVJMOihOU1VSTCAqKVVS
TCBtYWluRG9jdW1lbnRVUkw6KE5TVVJMICopbWFpbkRvY3VtZW50VVJMIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29yZUNvb2tpZXM7Ci0gICAgY29yZUNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb29raWVzLmNvdW50KTsKLSAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2llIDogY29v
a2llcykKLSAgICAgICAgY29yZUNvb2tpZXMudW5jaGVja2VkQXBwZW5kKGNvb2tpZSk7Ci0KLSAg
ICBfY29va2llU3RvcmFnZS0+c2V0Q29va2llcyhjb3JlQ29va2llcywgVVJMLCBtYWluRG9jdW1l
bnRVUkwsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsK
LSAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKLSAg
ICAgICAgaWYgKHJhd0hhbmRsZXIpCi0gICAgICAgICAgICByYXdIYW5kbGVyKCk7Ci0gICAgfSk7
Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGF1dG8g
c3lzdGVtQ2xvY2tUaW1lID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChz
dGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpkdXJh
dGlvbj4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5j
ZTE5NzApKSk7Ci0KLSAgICBfY29va2llU3RvcmFnZS0+cmVtb3ZlQ29va2llc1NpbmNlRGF0ZShz
eXN0ZW1DbG9ja1RpbWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pXSgpIHsKLSAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5n
ZXQoKTsKLSAgICAgICAgaWYgKHJhd0hhbmRsZXIpCi0gICAgICAgICAgICByYXdIYW5kbGVyKCk7
Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBs
ZXRpb25IYW5kbGVyCi17Ci0gICAgX2Nvb2tpZVN0b3JhZ2UtPnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kocG9saWN5LCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHld
KV0oKSB7Ci0gICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0
KCk7Ci0gICAgICAgIGlmIChyYXdIYW5kbGVyKQotICAgICAgICAgICAgcmF3SGFuZGxlcigpOwot
ICAgIH0pOwotfQotCi1zdGF0aWMgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGtpdENvb2tpZVBv
bGljeVRvTlNDb29raWVQb2xpY3koV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5IGtpdFBv
bGljeSkKLXsKLSAgICBzd2l0Y2ggKGtpdFBvbGljeSkgewotICAgIGNhc2UgV2ViS2l0OjpIVFRQ
Q29va2llQWNjZXB0UG9saWN5QWx3YXlzOgotICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5QWx3YXlzOwotICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
TmV2ZXI6Ci0gICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKLSAg
ICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluOgotICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21N
YWluRG9jdW1lbnREb21haW47Ci0gICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW46Ci0gICAgICAgIC8vIENhc3QgcmVx
dWlyZWQgYmVjYXVzZSBvZiBDRk5ldHdvcmtTUEkuCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1
c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2Vw
dFBvbGljeU5ldmVyOwotfQotCi0tICh2b2lkKWZldGNoQ29va2llQWNjZXB0UG9saWN5Oih2b2lk
ICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAg
X2Nvb2tpZVN0b3JhZ2UtPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koW2hhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpIHsKLSAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSkpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgcmF3SGFuZGxlcihr
aXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KHBvbGljeSkpOwotICAgIH0pOwotfQotCi0j
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KLQotLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKLXsKLSAgICByZXR1cm4gKl9jb29raWVTdG9yYWdlOwotfQotCi1A
ZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGU4YTMwYmFkMjhlYjFhMDI0NmMyNDFlZTc2NmZmYmYzNDE4MTBi
YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJX
S0hUVFBDb29raWVTdG9yYWdlLmgiCi0KLSNpZiBXS19BUElfRU5BQkxFRAotCi0jaW1wb3J0ICJB
UElIVFRQQ29va2llU3RvcmFnZS5oIgotI2ltcG9ydCAiV0tPYmplY3QuaCIKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWlubGluZSBXS0hUVFBDb29raWVTdG9yYWdlICp3cmFwcGVyKEFQSTo6SFRU
UENvb2tpZVN0b3JhZ2UmIGNvb2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKFtjb29raWVTdG9y
YWdlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS0hUVFBDb29raWVTdG9yYWdlIGNsYXNzXV0p
OwotICAgIHJldHVybiAoV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tpZVN0b3JhZ2Uud3JhcHBl
cigpOwotfQotCi19Ci0KLUBpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmFnZSAoKSA8V0tPYmpl
Y3Q+IHsKLUBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U+IF9jb29raWVTdG9yYWdlOwotfQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjAzZTZjYzI4N2E0OWNhM2RiYzYxODc2Yzc1Yjc5MGFmNDRiMjUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yZS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQv
V0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworLyohCisgQSBX
S0hUVFBDb29raWVTdG9yZSBvYmplY3QgYWxsb3dzIG1hbmFnaW5nIHRoZSBIVFRQIGNvb2tpZXMg
YXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBXS1dlYnNpdGVEYXRhU3RvcmUuCisgKi8KK1dL
X0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0Bp
bnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmUgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUp
aW5pdCBOU19VTkFWQUlMQUJMRTsKKworLyohIEBhYnN0cmFjdCBGZXRjaGVzIGFsbCBzdG9yZWQg
Y29va2llcy4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0
aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCistICh2b2lkKWZldGNoQ29va2llczoodm9pZCAo
XikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBA
YWJzdHJhY3QgRmV0Y2hlcyBhbGwgb2YgdGhlIHN0b3JlZCBjb29raWVzIGZvciB0aGUgZ2l2ZW4g
VVJMLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRo
ZSBmZXRjaGVkIGNvb2tpZXMuCisgKi8KKy0gKHZvaWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VS
TCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgU2V0IGEgY29va2llLgor
IEBwYXJhbSBjb29raWUgVGhlIGNvb2tpZSB0byBzZXQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5k
bGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZSBoYXMgYmVlbiBzdG9yZWQuCisg
Ki8KKy0gKHZvaWQpc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhh
bmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJz
dHJhY3QgQWRkcyBhbiBhcnJheSBjb29raWVzIHRvIHRoZSBjb29raWUgc3RvcmUsIGZvbGxvd2lu
ZyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kuCisgQHBhcmFtIGNvb2tpZXMgVGhlIGNvb2tpZXMg
dG8gc2V0LgorIEBwYXJhbSBVUkwgVGhlIFVSTCBmcm9tIHdoaWNoIHRoZSBjb29raWVzIHdlcmUg
c2VudC4KKyBAcGFyYW0gbWFpbkRvY3VtZW50VVJMIFRoZSBtYWluIGRvY3VtZW50IFVSTCB0byBi
ZSB1c2VkIGFzIGEgYmFzZSBmb3IgdGhlICJzYW1lIGRvbWFpbiBhcyBtYWluIGRvY3VtZW50IiBw
b2xpY3kuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2Ug
dGhlIGNvb2tpZXMgaGF2ZSBiZWVuIHN0b3JlZC4KKyAqLworLSAodm9pZClzZXRDb29raWVzOihO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKWNvb2tpZXMgZm9yVVJMOihOU1VSTCAqKXVybCBtYWlu
RG9jdW1lbnRVUkw6KG51bGxhYmxlIE5TVVJMICopbWFpbkRvY3VtZW50VVJMIGNvbXBsZXRpb25I
YW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFi
c3RyYWN0IERlbGV0ZSB0aGUgc3BlY2lmaWVkIGNvb2tpZS4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llIGhhcyBiZWVuIGRlbGV0ZWQu
CisgKi8KKy0gKHZvaWQpZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxl
dGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8q
ISBAYWJzdHJhY3QgRGVsZXRlIGFsbCBjb29raWVzIGZyb20gdGhlIGNvb2tpZSBzdG9yYWdlIHNp
bmNlIHRoZSBwcm92aWRlZCBkYXRlLgorIEBwYXJhbSBkYXRlIFRoZSBkYXRlIGFmdGVyIHdoaWNo
IHNldCBjb29raWVzIHNob3VsZCBiZSByZW1vdmVkLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWVzIGhhdmUgYmVlbiBkZWxldGVkLgor
ICovCistICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxl
dGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8q
ISBAYWJzdHJhY3QgU2V0cyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kgcHJlZmVyZW5jZSBvZiB0
aGUgcmVjZWl2ZXIuCisgQHBhcmFtIHBvbGljeSBUaGUgY29va2llIGFjY2VwdCBwb2xpY3kgdG8g
c2V0LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRo
ZSBwb2xpY3kgaGFzIGJlZW4gc2V0LgorICovCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGlj
eTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoobnVs
bGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBGZXRj
aGVzIHRoZSBjb29raWUgYWNjZXB0IHBvbGljeSBwcmVmZXJlbmNlIG9mIHRoZSByZWNlaXZlci4K
KyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgZmV0
Y2hlZCBwb2xpY3kuCisgKi8KKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQg
KF4pKE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXI7CisKK0BlbmQK
KworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2Q4ZDNlMWVkYjEzZTM1MTVmZDIyMjNlMzYzM2IxNWYwYTczNGE3ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3Rv
cmUubW0KQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFC
TEVECisKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRk5ldHdvcmtTUEkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMg
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5
PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OmNvcmVDb29raWVzLnNpemUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNv
cmVDb29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llICop
Y29va2llXTsKKworICAgIHJldHVybiBuc0Nvb2tpZXM7Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBX
S0hUVFBDb29raWVTdG9yZQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29va2llU3RvcmUt
PkFQSTo6SFRUUENvb2tpZVN0b3JlOjp+SFRUUENvb2tpZVN0b3JlKCk7CisKKyAgICBbc3VwZXIg
ZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmV0Y2hDb29raWVzOih2b2lkICheKShOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yZS0+
Y29va2llcyhbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdI
YW5kbGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0
KCk7CisgICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmUtPmNvb2tpZXModXJsLCBbaGFuZGxl
ciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQg
KF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJh
d0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisK
Ky0gKHZvaWQpc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmUtPnNl
dENvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5n
ZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7
CisgICAgfSk7CisKK30KKworLSAodm9pZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNv
b2tpZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIF9jb29raWVTdG9yZS0+ZGVsZXRlQ29va2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5T
KFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAg
ICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZXRDb29raWVz
OihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKWNvb2tpZXMgZm9yVVJMOihOU1VSTCAqKVVSTCBt
YWluRG9jdW1lbnRVUkw6KE5TVVJMICopbWFpbkRvY3VtZW50VVJMIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29yZUNvb2tpZXM7CisgICAgY29yZUNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShjb29raWVzLmNvdW50KTsKKyAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2llIDogY29va2ll
cykKKyAgICAgICAgY29yZUNvb2tpZXMudW5jaGVja2VkQXBwZW5kKGNvb2tpZSk7CisKKyAgICBf
Y29va2llU3RvcmUtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJM
LCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAg
ICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAg
IGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQor
CistICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3Rl
bUNsb2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpj
aHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+
KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcw
KSkpOworCisgICAgX2Nvb2tpZVN0b3JlLT5yZW1vdmVDb29raWVzU2luY2VEYXRlKHN5c3RlbUNs
b2NrVGltZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkg
eworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwor
ICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9
KTsKK30KKworLSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSlwb2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyAgICBfY29va2llU3RvcmUtPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5LCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7Cisg
ICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAg
ICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOwor
fQorCitzdGF0aWMgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGtpdENvb2tpZVBvbGljeVRvTlND
b29raWVQb2xpY3koV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5IGtpdFBvbGljeSkKK3sK
KyAgICBzd2l0Y2ggKGtpdFBvbGljeSkgeworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNj
ZXB0UG9saWN5QWx3YXlzOgorICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5
QWx3YXlzOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI6Cisg
ICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKKyAgICBjYXNlIFdl
YktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgor
ICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1l
bnREb21haW47CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNp
dmVseUZyb21NYWluRG9jdW1lbnREb21haW46CisgICAgICAgIC8vIENhc3QgcmVxdWlyZWQgYmVj
YXVzZSBvZiBDRk5ldHdvcmtTUEkuCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3k+KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5l
dmVyOworfQorCistICh2b2lkKWZldGNoQ29va2llQWNjZXB0UG9saWN5Oih2b2lkICheKShOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0
b3JlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxl
dGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5
KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29va2llUG9s
aWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBtYXJr
IFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBp
T2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3RvcmU7Cit9CisKK0BlbmQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWIzMmJhZWYyODE2MTc0
ZTU0ZGI2MGUwNjFlNTNmZWNmOGVhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmUuaCIKKwor
I2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQSUhUVFBDb29raWVTdG9yZS5oIgorI2lt
cG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBXS0hUVFBD
b29raWVTdG9yZSAqd3JhcHBlcihBUEk6OkhUVFBDb29raWVTdG9yZSYgY29va2llU3RvcmUpCit7
CisgICAgQVNTRVJUKFtjb29raWVTdG9yZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbV0tIVFRQ
Q29va2llU3RvcmUgY2xhc3NdXSk7CisgICAgcmV0dXJuIChXS0hUVFBDb29raWVTdG9yZSAqKWNv
b2tpZVN0b3JlLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIFdLSFRUUENvb2tpZVN0
b3JlICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJ
OjpIVFRQQ29va2llU3RvcmU+IF9jb29raWVTdG9yZTsKK30KK0BlbmQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCmluZGV4IDIzNGY4MGViZmU1ODRjYzg2MjM1MTVlOTM3ZmZmMzMzMGI5YmEyMDIu
LmUzN2VlYjc5MjYyMDc2YjAwN2M4ZTc0NDJhZWJhNTYwYjVmOGJiMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaW1wb3J0ICJX
S0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3Jl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0
YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBA
IC0xOTUsOSArMTk1LDkgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQ6KEJPT0wpZW5hYmxlZAogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLS0gKFdL
SFRUUENvb2tpZVN0b3JhZ2UgKilfaHR0cENvb2tpZVN0b3JhZ2UKKy0gKFdLSFRUUENvb2tpZVN0
b3JlICopX2h0dHBDb29raWVTdG9yZQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dl
YnNpdGVEYXRhU3RvcmUtPmh0dHBDb29raWVTdG9yYWdlKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OndyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmh0dHBDb29raWVTdG9yZSgpKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCAwOTliMDQ1OWVlNmVhMmU2Y2ZmNmY3
ZDQxZTAwMjMwNDRiNmU3ZTllLi5mMDcxNzRlODExZjkwNjEzZTc4MWM1ZTdhNGQ4NjFlZmM0MDhh
MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMjksNyArMjksNyBAQAogCiBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCi1AY2xhc3MgV0tIVFRQQ29va2llU3RvcmFnZTsKK0Bj
bGFzcyBXS0hUVFBDb29raWVTdG9yZTsKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjsKIAogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKQEAgLTQ0LDggKzQ0LDggQEAgdHlwZWRlZiBOU19PUFRJT05T
KE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6
KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKLS8qISBAYWJzdHJhY3QgUmV0dXJucyB0aGUgY29v
a2llIHN0b3JhZ2UgcmVwcmVzZW50aW5nIEhUVFAgY29va2llcyBpbiB0aGlzIHdlYnNpdGUgZGF0
YSBzdG9yZS4gKi8KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tIVFRQQ29va2ll
U3RvcmFnZSAqX2h0dHBDb29raWVTdG9yYWdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLyohIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjb29r
aWUgc3RvcmUgcmVwcmVzZW50aW5nIEhUVFAgY29va2llcyBpbiB0aGlzIHdlYnNpdGUgZGF0YSBz
dG9yZS4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tIVFRQQ29va2llU3Rv
cmUgKl9odHRwQ29va2llU3RvcmUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjJkNDQ5M2NkYTc3YTE1YjU0NjExMTEzYTM2MGJmZjI3
MzFmNDFkOC4uYmI5NzYyYWZjZThhZDlhNzU2MGM2Zjg1YTk0NGZkNmM4ZmIwMmY0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29v
a2llU3RvcmUuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCmluZGV4IDk4MThhOTM4ZmQ5MDZkYzY5OWY4ZmY5ZjViMmQ0M2E4OWRkYmYwNzAuLjJiMDdh
NGUxMmMwN2JkY2M3ZmM4MGRiZjg4YmI5ZDhiNzVkOGJiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBBUEkg
ewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwotY2xhc3MgSFRUUENvb2tpZVN0b3JhZ2U7Citj
bGFzcyBIVFRQQ29va2llU3RvcmU7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsK
IGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDMwNDRm
Y2VjZjIwMzU5Y2M4M2QyZWM5ODllZDI3YzUxNThlMjYyZGMuLjEyYzk2MTEwMmJlZjVmMjUyZTZk
NGRjNzUwODE3MTQyZjE2Y2E2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCBSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29sRm9y
Q29va2llU3RvcmFnZU9wZXJhdGlvbnMoKQogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBtdWx0aXBs
ZSBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9uLCB3aGljaCBt
ZWFucyB0aGF0IG11bHRpcGxlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NlcyBjYW4gYmUgcmVmZXJy
aW5nIHRvIHRoZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9yYWdlLgogICAgIC8vCi0gICAgLy8g
V2hpbGUgdGhpcyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3aXRoIGZ1dHVyZSBBUElzIGl0IGlz
IGFjdHVhbGx5IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUgV0tIVFRQQ29va2llU3RvcmFnZSBB
UEkKKyAgICAvLyBXaGlsZSB0aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0dXJl
IEFQSXMgaXQgaXMgYWN0dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBDb29r
aWVTdG9yZSBBUEkKICAgICAvLyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUgTmV0d29ya1Byb2Nl
c3MgdG8gc3VjY2Vzc2Z1bGx5IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0gY29va2llIHN0b3Jh
Z2UgY2hhbmdlLgogICAgIC8vCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gc3RhcnQgdG8gdW5y
YXZlbCB0aGlzIG1lc3MgZ29pbmcgZm9yd2FyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxM2U0MWM2MjJhMmQ5NjllM2JhODYz
M2UwYTdiM2VlZTlmNWFlY2JlLi4wMjY4NjZmMzY5NDQ2NDg1MDk2OTliMDg1OWYyM2U0NDdjNjc3
YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDYzLDkgKzEwNjMsOSBAQAogCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAg
LyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1l
SGFuZGxlclRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTUxRDEyNDM2MUU2REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0
MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi87IH07CiAJ
CTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzODFF
NkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovOyB9OwotCQk1
MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODIxRTczNEFD
ODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLzsgfTsKLQkJNTFEMTI0OTIx
RTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLzsgfTsKLQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIy
ODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4MjFF
NzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JlLmNwcCAqLzsgfTsKKwkJNTFEMTI0
OTIxRTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODUxRTczNEFFMzAwMkIyODIw
IC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovOyB9OworCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4
MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVT
dG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4
MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25z
ZURhdGEuY3BwICovOyB9OwpAQCAtMzI5MywxMSArMzI5MywxMSBAQAogCQk1MUQxMjQzNzFFNkRG
RDJBMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAg
LyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFu
ZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1l
SGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMTI0ODIxRTcz
NEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBD
b29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhUVFBD
b29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDEyNDg0MUU3
MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jh
Z2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0hUVFBDb29r
aWVTdG9yYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQxMjQ4NjFFNzM0
QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJ
SFRUUENvb2tpZVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFQSUhUVFBDb29raWVTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
RDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVT
dG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NTFFNzM0QUUzMDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3Rv
cmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA0RjEzODJF
QUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlcXVlc3RE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTU2Miw5ICs1NTYyLDkgQEAKIAkJCQkxQTRENjY0OTE4QTMwMzBFMDBEODJF
MjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRGOUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8q
IFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQkxQTZGQTIxRDFCRDA0MzVCMDBBQUE2NTAg
LyogV0tGcmFtZUluZm9Qcml2YXRlLmggKi8sCi0JCQkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIw
IC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLywKLQkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4
MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLywKLQkJCQk1MUQxMjQ4NjFFNzM0QUUzMDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8sCisJCQkJNTFEMTI0ODQx
RTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggKi8sCisJCQkJNTFEMTI0ODUx
RTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovLAorCQkJCTUxRDEyNDg2
MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmggKi8sCiAJCQkJ
MUE0MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oICov
LAogCQkJCTFBQjQwRUUzMUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMu
bW0gKi8sCiAJCQkJMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlm
aWVyc1ByaXZhdGUuaCAqLywKQEAgLTY3NTgsOCArNjc1OCw4IEBACiAJCQkJMkRBQkE3NzUxQTgy
QjQyMTAwRUYwRjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQk5M0E4OEI0MjFCQzg4
MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJCQkJOTNBODhCNDMxQkM4
ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKLQkJCQk1MUQxMjQ4MjFFNzM0
QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovLAotCQkJCTUxRDEyNDgz
MUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5oICovLAorCQkJCTUxRDEy
NDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuY3BwICovLAorCQkJCTUx
RDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuaCAqLywKIAkJCQk1
MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJ
CQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50
LmggKi8sCkBAIC04NTUyLDcgKzg1NTIsNyBAQAogCQkJCTUxNDEyOTk0MUM2NDI4QkIwMDU5RTcx
NCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDUy
Mzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQkQxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQ
Q29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIy
ODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjgyMDEy
NzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAz
MkQ4MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVCQTgzNTFCQTNFNzBBMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MDYsNyArOTgwNiw3IEBACiAJCQkJ
MUE2RkJBMkIxMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdp
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0
c2NhcGVQbHVnaW5NYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUQxMjQ5MjFFNzRCRjQ4MDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEy
NDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzlBMkYzMTFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0
QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCkBAIC05ODI1LDcgKzk4MjUsNyBAQAogCQkJCTgzMUVFQkJFMUJEODVDNDMwMEJC
NjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQx
IC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFEMTI0
OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxRDEyNDkxMUU3NEJGM0MwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZFRDAxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxMDQyOEMxQkQ2QjY2RjAw
QTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGQxYzc3MjRiN2ViZDI1NDM3NDE1YzA5YWI0NzFjZDNiOTI5ZTdhYzUuLjg0
ZmEyZmUwNTM3YWFhYTQwNTA3OWY1NDNiODI5ZDMwM2JkNDNlYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0w
My0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1l
IFdLSFRUUENvb2tpZVN0b3JhZ2UgdG8gV0tIVFRQQ29va2llU3RvcmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2MzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW06CisgICAgICAgIChURVNUKToKKwog
MjAxNy0wMy0xNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgd2Via2l0cHk6IEVmZmljaWVudCBhcHAgaW5zdGFsbGF0aW9uIGZvciBkZXZpY2UgdGVzdGlu
ZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KaW5kZXggMjVhZTQ3ZmQ1YjRmMmZkNjQ1Nzc4Y2E3
NTM2MjkyNDVjZmQ3MmRkZi4uMTI5OGQ3MGQ2NDA3YmRiYzJhODQxNzczMjQzZDM1NTM5MTdmNzI5
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+
Ci0jaW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29va2llU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLSFRUUENvb2tpZVN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MCwxMCArNDAsMTAg
QEAgVEVTVChXZWJLaXQyLCBXS0hUVFBDb29raWVTdG9yYWdlKQogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIk9oIGhlbGxvIiBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CiAKLSAg
ICBSZXRhaW5QdHI8V0tIVFRQQ29va2llU3RvcmFnZT4gY29va2llU3RvcmFnZSA9IFtXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0uX2h0dHBDb29raWVTdG9yYWdlOworICAgIFJl
dGFpblB0cjxXS0hUVFBDb29raWVTdG9yZT4gY29va2llU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGRlZmF1bHREYXRhU3RvcmVdLl9odHRwQ29va2llU3RvcmU7CiAKICAgICBOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqY29va2llcyA9IG5pbDsKLSAgICBbY29va2llU3RvcmFnZSBmZXRjaENv
b2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5z
Q29va2llcykgeworICAgIFtjb29raWVTdG9yZSBmZXRjaENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAm
Y29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgewogICAgICAgICAq
Y29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKICAgICAgICAgZ290RmxhZyA9IHRydWU7
CiAgICAgfV07CkBAIC03MywyMSArNzMsMjEgQEAgVEVTVChXZWJLaXQyLCBXS0hUVFBDb29raWVT
dG9yYWdlKQogICAgICAgICBOU0hUVFBDb29raWVNYXhpbXVtQWdlOiBAIjEwMDAwIiwKICAgICB9
XTsKIAotICAgIFtjb29raWVTdG9yYWdlIHNldENvb2tpZTpjb29raWUxLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOltdKCl7CisgICAgW2Nvb2tpZVN0b3JlIHNldENvb2tpZTpjb29raWUxLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOltdKCl7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1d
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFn
ID0gZmFsc2U7CiAKLSAgICBbY29va2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMi5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpbXSgpeworICAgIFtjb29raWVTdG9yZSBzZXRDb29raWU6Y29va2ll
Mi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpewogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsK
ICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAg
Z290RmxhZyA9IGZhbHNlOwogCi0gICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltjb29r
aWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsK
KyAgICBbY29va2llU3RvcmUgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKICAgICAgICAgKmNvb2tpZXNQdHIg
PSBbbnNDb29raWVzIHJldGFpbl07CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304431</attachid>
            <date>2017-03-14 14:54:43 -0700</date>
            <delta_ts>2017-03-14 15:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169630-20170314145456.patch</filename>
            <type>text/plain</type>
            <size>70044</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzBiMjdlNzZlNzVlYjUy
NmQ4ZDUyN2VhNTZjYTljZWY2ODM1ZDc1OS4uNDEyOTllMGFiYTU0ZDdjYTFkOTE5M2ZhOTA5YmNm
YTFkMDE3NmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAzLTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV0tIVFRQQ29v
a2llU3RvcmFnZSB0byBXS0hUVFBDb29raWVTdG9yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgCisgICAgICAg
ICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwLgor
ICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OkhUVFBDb29raWVTdG9yZSk6CisgICAgICAg
IChBUEk6OkhUVFBDb29raWVTdG9yZTo6fkhUVFBDb29raWVTdG9yZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yZTo6Y29va2llcyk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
ZTo6c2V0Q29va2llKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpzZXRDb29raWVz
KToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpkZWxldGVDb29raWUpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnJlbW92ZUNvb2tpZXNTaW5jZURhdGUpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAg
ICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmguCisg
ICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omh0dHBDb29raWVTdG9yZSk6CisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Omh0dHBDb29raWVTdG9yYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVT
dG9yYWdlLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9y
ZS5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbS4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgor
ICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLSFRU
UENvb2tpZVN0b3JlIGZldGNoQ29va2llczpdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3Rv
cmUgZmV0Y2hDb29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S0hUVFBDb29raWVTdG9yZSBzZXRDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLSFRUUENvb2tpZVN0b3JlIGRlbGV0ZUNvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmUgc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3Vt
ZW50VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSByZW1vdmVDb29raWVzU2luY2VEYXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS0hUVFBDb29raWVTdG9yZSBzZXRDb29raWVBY2NlcHRQb2xpY3k6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIChraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KToKKyAgICAg
ICAgKC1bV0tIVFRQQ29va2llU3RvcmUgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVy
bmFsLmguCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIF9odHRwQ29va2llU3RvcmVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRl
RGF0YVN0b3JlIF9odHRwQ29va2llU3RvcmFnZV0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMpOgorICAgICAgICAK
KyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMt
MDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3I6
IEFsbG93IFdlYktpdDIgdG8gb3ZlcnJpZGUgdGhlIGNyZWF0aW9uIG9mIFJlYWx0aW1lTWVkaWFT
b3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGIxY2VlMTQ1Mzk5ZGIwYjE1N2YxMjA0Yzdj
ZmVkMmNhZjUzZjZiZTkuLmM4MTg3MjAwMzkzYzM3YzAzM2FlOGZhM2ExNzQ5ZWUwZGQwODg5NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzMsNyArMzMzLDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0FQSUZyYW1lSW5mby5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
YWdlLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDQ2ZjI3OTFkZGZjNDUyNDJiYTM1
MTRiMDVmOTYzMzE4ZTJmZTUxYjcuLjczZGE4ZjhmNzkwOTRhMGI2ZTY5YjM2ZDJmMWJjMjFkOWIz
NTNhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xv
Y2F0aW9uTWFuYWdlciwKICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKLSAg
ICAgICAgSFRUUENvb2tpZVN0b3JhZ2UsCisgICAgICAgIEhUVFBDb29raWVTdG9yZSwKICAgICAg
ICAgSGl0VGVzdFJlc3VsdCwKICAgICAgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiwKICAgICAgICAg
R3JhbW1hckRldGFpbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9B
UElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmlu
ZGV4IGRjNjlhZDc5MzljNWY0Y2QwZjAxMWU3YTZlN2Q0N2EyNzhkNmY5NGMuLjQ0MWIzNGZlZTY1
NzFlZWI4ZDU3NTdjNzE3ZGQ0MTJmODlmMDlmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQpAQCAtMzYsNyArMzYsNyBAQAogI2ltcG9ydCAiV0tDb250ZW50RXh0
ZW5zaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGVudEV4dGVuc2lvblN0b3JlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLSFRUUENv
b2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9y
dCAiV0tOU0RpY3Rpb25hcnkuaCIKQEAgLTE3OSw4ICsxNzksOCBAQCB2b2lkKiBPYmplY3Q6Om5l
d09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW1dLRnJh
bWVJbmZvIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFR5cGU6OkhUVFBDb29r
aWVTdG9yYWdlOgotICAgICAgICB3cmFwcGVyID0gW1dLSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2Nd
OworICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JlOgorICAgICAgICB3cmFwcGVyID0gW1dL
SFRUUENvb2tpZVN0b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzhiODUyNGI5ZmM4
OWYxNGFjODQ2MjM1YzE3Y2I1MTFiNDhiOGUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JhZ2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
aCIKLQotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJDb29r
aWVNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvQ29va2llLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLW5hbWVzcGFj
ZSBBUEkgewotCi1IVFRQQ29va2llU3RvcmFnZTo6SFRUUENvb2tpZVN0b3JhZ2UoV2Vic2l0ZURh
dGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKLSAgICA6IG1fb3duaW5nRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUpCi17Ci19Ci0KLUhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3Jh
Z2UoKQotewotfQotCi12b2lkIEhUVFBDb29raWVTdG9yYWdlOjpjb29raWVzKEZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0
b3JhZ2VPcGVyYXRpb25zKCk7Ci0gICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBs
ZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0KLSAgICBjb29raWVNYW5h
Z2VyLT5nZXRBbGxDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3Zl
KHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb29raWVzKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFT
dG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nl
c3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5h
Z2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsK
LQotICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCB1
cmwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMs
IENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29va2llcyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9y
ZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5hZ2Vy
ID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQot
ICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tp
ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwg
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRh
U3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBw
b29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsK
LSAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoZGF0
YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgW3Bvb2wg
PSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFT
dG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nl
c3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKLSAgICBhdXRvKiBjb29raWVNYW5h
Z2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsK
LQotICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSFRUUENvb2tpZVN0
b3JhZ2U6OnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCBkYXRlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9y
YWdlT3BlcmF0aW9ucygpOwotICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVt
ZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotCi0gICAgY29va2llTWFuYWdl
ci0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBk
YXRlLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBIVFRQQ29va2llU3RvcmFn
ZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBk
YXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgYXV0
byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMo
KTsKLSAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgIGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBwb2xpY3ksIFtwb29sID0gV1RG
TW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotICAgIH0pOwotfQotCi12b2lkIEhUVFBDb29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0
b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vz
c1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwotICAgIGF1dG8qIGNvb2tpZU1hbmFn
ZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOwot
Ci0gICAgY29va2llTWFuYWdlci0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ks
IENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVycm9yICE9IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNj
ZXB0UG9saWN5TmV2ZXI7Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKLSAg
ICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2ZjlkMzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgotI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgVVJMOwotc3RydWN0IENvb2tpZTsKLX0KLQotbmFtZXNwYWNlIEFQSSB7Ci0K
LWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KLWNsYXNzIEhUVFBDb29raWVTdG9yYWdlIGZpbmFs
IDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmFnZT4gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SFRUUENvb2tpZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vic2l0ZURhdGFTdG9yZSkpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdlKCk7Ci0KLSAgICB2b2lkIGNvb2tpZXMoRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBjb29raWVzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwotCi0gICAgdm9pZCBzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBzZXRDb29raWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tp
ZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotCi0gICAgdm9pZCBy
ZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotCi0gICAgdm9pZCBz
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSwg
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKFdlYktpdDo6SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIAotcHJpdmF0ZToKLSAgICBIVFRQ
Q29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3JlJik7Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3Jl
JiBtX293bmluZ0RhdGFTdG9yZTsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDk2NWRhOWJi
Yzc2NjU3M2NkMjdlOTMwOTM5ZjEzNzUyODUwYWVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0wLDAgKzEs
MTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUhU
VFBDb29raWVTdG9yZS5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2lu
Y2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworbmFtZXNwYWNlIEFQSSB7CisKK0hUVFBDb29raWVTdG9yZTo6SFRUUENvb2tpZVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAgOiBtX293bmluZ0RhdGFT
dG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29va2llU3RvcmU6On5IVFRQQ29v
a2llU3RvcmUoKQoreworfQorCit2b2lkIEhUVFBDb29raWVTdG9yZTo6Y29va2llcyhGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29r
aWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5z
dXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2ll
TWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RG
TW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpjb29raWVzKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0
YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJv
Y2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1h
bmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Pigp
OworCisgICAgY29va2llTWFuYWdlci0+Z2V0Q29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IHVybCwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2ll
cywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb29raWVzKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OnNldENvb2tp
ZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9y
ZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2Vy
ID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKwor
ICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tp
ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JlOjpz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0
b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9v
bCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7Cisg
ICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0g
V1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yZTo6ZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3Jl
LndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bv
b2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIg
PSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisg
ICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29v
a2llLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6
OnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBkYXRlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsK
KyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3Bl
cmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkYXRlLCBb
cG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OnNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0
aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3Jl
ID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9
IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAg
YXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9v
bCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmU6OmdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0
ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wt
PnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29r
aWVNYW5hZ2VyLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkKKyAgICAgICAgICAgIHBvbGljeSA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lO
ZXZlcjsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2xpY3kpOworICAgIH0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MDc4ODNlZmEwZDQxZWMzOWRiODEw
MTMyYTg5Mzc0ZTY5ZGFlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkhU
VFBDb29raWVBY2NlcHRQb2xpY3kuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVSTDsKK3N0
cnVjdCBDb29raWU7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOworCitjbGFzcyBIVFRQQ29va2llU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxP
YmplY3Q6OlR5cGU6OkhUVFBDb29raWVTdG9yZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
SFRUUENvb2tpZVN0b3JlPiBjcmVhdGUoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUVFBDb29raWVTdG9yZSh3
ZWJzaXRlRGF0YVN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRUUENvb2tpZVN0b3Jl
KCk7CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29u
c3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkws
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktp
dDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZv
aWQgKFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYp
OworCisgICAgV2Vic2l0ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3RvcmU7Cit9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCBlNzNjZWFjM2RhZDRjMDhhZjlmZWZkNWQzOWRhN2ZlMGI2YzAzMzYzLi41MWJm
OWY5M2FiZDI1NDYyMzc0OWRlMTYzYTA5NmRlM2MzOThkODgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTY0LDEy
ICs2NCwxMiBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiB9CiAK
LUhUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSgp
CitIVFRQQ29va2llU3RvcmUmIFdlYnNpdGVEYXRhU3RvcmU6Omh0dHBDb29raWVTdG9yZSgpCiB7
Ci0gICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQotICAgICAgICBtX2FwaUhUVFBDb29r
aWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFt
X2FwaUhUVFBDb29raWVTdG9yZSkKKyAgICAgICAgbV9hcGlIVFRQQ29va2llU3RvcmUgPSBIVFRQ
Q29va2llU3RvcmU6OmNyZWF0ZSgqdGhpcyk7CiAKLSAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tp
ZVN0b3JhZ2U7CisgICAgcmV0dXJuICptX2FwaUhUVFBDb29raWVTdG9yZTsKIH0KIAogYm9vbCBX
ZWJzaXRlRGF0YVN0b3JlOjppc1BlcnNpc3RlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2OGNlNThhZTU5YTFkN2Fl
NjM4MjY4Y2VkOGM5MTgxY2FjNjhhOGExLi5mYjE5NjM1MmZjYWE0MDNiMDdlZWE1NTFiMGVhYzlh
OTY2ZDYyMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBUElXZWJzaXRlRGF0
YVN0b3JlX2gKICNkZWZpbmUgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAKLSNpbmNsdWRlICJBUElI
VFRQQ29va2llU3RvcmFnZS5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAKICAg
ICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiAq
bV93ZWJzaXRlRGF0YVN0b3JlOyB9Ci0gICAgSFRUUENvb2tpZVN0b3JhZ2UmIGh0dHBDb29raWVT
dG9yYWdlKCk7CisgICAgSFRUUENvb2tpZVN0b3JlJiBodHRwQ29va2llU3RvcmUoKTsKIAogICAg
IHN0YXRpYyBTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBz
dGF0aWMgU3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTc1LDcgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci0g
ICAgUmVmUHRyPEhUVFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOworICAg
IFJlZlB0cjxIVFRQQ29va2llU3RvcmU+IG1fYXBpSFRUUENvb2tpZVN0b3JlOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VhOTJlYzIwYzk5
ZDY2NjEwZDFjYmE4ZjY2MjhjNjJlMTI1N2EyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+Ci0KLSNpZiBXS19BUElfRU5B
QkxFRAotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQotTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KLQotLyohCi0gQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3Mg
bWFuYWdpbmcgdGhlIEhUVFAgY29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdL
V2Vic2l0ZURhdGFTdG9yZS4KLSAqLwotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKQotQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDog
TlNPYmplY3QKLQotLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7Ci0KLS8qISBA
YWJzdHJhY3QgRmV0Y2hlcyBhbGwgc3RvcmVkIGNvb2tpZXMuCi0gQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2llcy4KLSAqLwot
LSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICop
KWNvbXBsZXRpb25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIG9mIHRoZSBz
dG9yZWQgY29va2llcyBmb3IgdGhlIGdpdmVuIFVSTC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgotICovCi0tICh2
b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi0v
KiEgQGFic3RyYWN0IFNldCBhIGNvb2tpZS4KLSBAcGFyYW0gY29va2llIFRoZSBjb29raWUgdG8g
c2V0LgotIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRo
ZSBjb29raWUgaGFzIGJlZW4gc3RvcmVkLgotICovCi0tICh2b2lkKXNldENvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNv
bXBsZXRpb25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IEFkZHMgYW4gYXJyYXkgY29va2llcyB0
byB0aGUgY29va2llIHN0b3JlLCBmb2xsb3dpbmcgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5Lgot
IEBwYXJhbSBjb29raWVzIFRoZSBjb29raWVzIHRvIHNldC4KLSBAcGFyYW0gVVJMIFRoZSBVUkwg
ZnJvbSB3aGljaCB0aGUgY29va2llcyB3ZXJlIHNlbnQuCi0gQHBhcmFtIG1haW5Eb2N1bWVudFVS
TCBUaGUgbWFpbiBkb2N1bWVudCBVUkwgdG8gYmUgdXNlZCBhcyBhIGJhc2UgZm9yIHRoZSAic2Ft
ZSBkb21haW4gYXMgbWFpbiBkb2N1bWVudCIgcG9saWN5LgotIEBwYXJhbSBjb21wbGV0aW9uSGFu
ZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWVzIGhhdmUgYmVlbiBzdG9yZWQu
Ci0gKi8KLS0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29r
aWVzIGZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAq
KW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSlj
b21wbGV0aW9uSGFuZGxlcjsKLQotLyohIEBhYnN0cmFjdCBEZWxldGUgdGhlIHNwZWNpZmllZCBj
b29raWUuCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2Ug
dGhlIGNvb2tpZSBoYXMgYmVlbiBkZWxldGVkLgotICovCi0tICh2b2lkKWRlbGV0ZUNvb2tpZToo
TlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IERlbGV0ZSBhbGwgY29va2ll
cyBmcm9tIHRoZSBjb29raWUgc3RvcmFnZSBzaW5jZSB0aGUgcHJvdmlkZWQgZGF0ZS4KLSBAcGFy
YW0gZGF0ZSBUaGUgZGF0ZSBhZnRlciB3aGljaCBzZXQgY29va2llcyBzaG91bGQgYmUgcmVtb3Zl
ZC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUg
Y29va2llcyBoYXZlIGJlZW4gZGVsZXRlZC4KLSAqLwotLSAodm9pZClyZW1vdmVDb29raWVzU2lu
Y2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOwotCi0vKiEgQGFic3RyYWN0IFNldHMgdGhlIGNvb2tpZSBh
Y2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgotIEBwYXJhbSBwb2xpY3kg
VGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHRvIHNldC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgcG9saWN5IGhhcyBiZWVuIHNldC4KLSAqLwot
LSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhh
bmRsZXI7Ci0KLS8qISBAYWJzdHJhY3QgRmV0Y2hlcyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kg
cHJlZmVyZW5jZSBvZiB0aGUgcmVjZWl2ZXIuCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEg
YmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgcG9saWN5LgotICovCi0tICh2b2lkKWZl
dGNoQ29va2llQWNjZXB0UG9saWN5Oih2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kp
KWNvbXBsZXRpb25IYW5kbGVyOwotCi1AZW5kCi0KLU5TX0FTU1VNRV9OT05OVUxMX0VORAotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNj
NzM0YTZmMjZhN2YwM2M4NDJmYTc0NGM4NTBmMjYwNTMyM2VlZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tIVFRQQ29v
a2llU3RvcmFnZUludGVybmFsLmgiCi0KLSNpZiBXS19BUElfRU5BQkxFRAotCi0jaW5jbHVkZSAi
SFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJ
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiBjb3JlQ29va2llcykKLXsKLSAgICBOU011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4g
Km5zQ29va2llcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29va2ll
cy5zaXplKCldOwotCi0gICAgZm9yIChhdXRvJiBjb29raWUgOiBjb3JlQ29va2llcykKLSAgICAg
ICAgW25zQ29va2llcyBhZGRPYmplY3Q6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07Ci0KLSAgICBy
ZXR1cm4gbnNDb29raWVzOwotfQotCi1AaW1wbGVtZW50YXRpb24gV0tIVFRQQ29va2llU3RvcmFn
ZQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBfY29va2llU3RvcmFnZS0+QVBJOjpIVFRQQ29v
a2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCk7Ci0KLSAgICBbc3VwZXIgZGVhbGxvY107
Ci19Ci0KLS0gKHZvaWQpZmV0Y2hDb29raWVzOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tp
ZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIF9jb29raWVTdG9yYWdlLT5jb29raWVz
KFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykgewotICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKLSAg
ICAgICAgcmF3SGFuZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKLSAgICB9
KTsKLX0KLQotLSAodm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9u
SGFuZGxlcgotewotICAgIF9jb29raWVTdG9yYWdlLT5jb29raWVzKHVybCwgW2hhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiBjb29raWVzKSB7Ci0gICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICByYXdIYW5k
bGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOwotICAgIH0pOwotfQotCi0tICh2
b2lkKXNldENvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENv
b2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0p
XSgpIHsKLSAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQo
KTsKLSAgICAgICAgaWYgKHJhd0hhbmRsZXIpCi0gICAgICAgICAgICByYXdIYW5kbGVyKCk7Ci0g
ICAgfSk7Ci0KLX0KLQotLSAodm9pZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tp
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgotewotICAg
IF9jb29raWVTdG9yYWdlLT5kZWxldGVDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMo
W2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7Ci0gICAgICAgIGF1dG8gcmF3SGFuZGxlciA9
ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChyYXdIYW5kbGVyKQotICAg
ICAgICAgICAgcmF3SGFuZGxlcigpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXNldENvb2tpZXM6
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1h
aW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiBjb3JlQ29va2llczsKLSAgICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGNvb2tpZXMuY291bnQpOwotICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVz
KQotICAgICAgICBjb3JlQ29va2llcy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKLQotICAgIF9j
b29raWVTdG9yYWdlLT5zZXRDb29raWVzKGNvcmVDb29raWVzLCBVUkwsIG1haW5Eb2N1bWVudFVS
TCwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewotICAg
ICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwotICAgICAg
ICBpZiAocmF3SGFuZGxlcikKLSAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKLSAgICB9KTsKLX0K
LQotLSAodm9pZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgYXV0byBzeXN0
ZW1DbG9ja1RpbWUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KHN0ZDo6
Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9u
PihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3
MCkpKTsKLQotICAgIF9jb29raWVTdG9yYWdlLT5yZW1vdmVDb29raWVzU2luY2VEYXRlKHN5c3Rl
bUNsb2NrVGltZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSld
KCkgewotICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgp
OwotICAgICAgICBpZiAocmF3SGFuZGxlcikKLSAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKLSAg
ICB9KTsKLX0KLQotLSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSlwb2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlv
bkhhbmRsZXIKLXsKLSAgICBfY29va2llU3RvcmFnZS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShwb2xpY3ksIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgp
IHsKLSAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsK
LSAgICAgICAgaWYgKHJhd0hhbmRsZXIpCi0gICAgICAgICAgICByYXdIYW5kbGVyKCk7Ci0gICAg
fSk7Ci19Ci0KLXN0YXRpYyBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0Q29va2llUG9saWN5
VG9OU0Nvb2tpZVBvbGljeShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0UG9saWN5
KQotewotICAgIHN3aXRjaCAoa2l0UG9saWN5KSB7Ci0gICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29r
aWVBY2NlcHRQb2xpY3lBbHdheXM6Ci0gICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXM7Ci0gICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZl
cjoKLSAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOwotICAgIGNh
c2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW46Ci0gICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbjsKLSAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4
Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKLSAgICAgICAgLy8gQ2FzdCByZXF1aXJl
ZCBiZWNhdXNlIG9mIENGTmV0d29ya1NQSS4KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeT4oTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5TmV2ZXI7Ci19Ci0KLS0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQgKF4p
KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBfY29v
a2llU3RvcmFnZS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShbaGFuZGxlciA9IGFkb3B0TlMo
W2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkgewotICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KSloYW5kbGVyLmdldCgpOwotICAgICAgICByYXdIYW5kbGVyKGtpdENv
b2tpZVBvbGljeVRvTlNDb29raWVQb2xpY3kocG9saWN5KSk7Ci0gICAgfSk7Ci19Ci0KLSNwcmFn
bWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgotCi0tIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdAotewotICAgIHJldHVybiAqX2Nvb2tpZVN0b3JhZ2U7Ci19Ci0KLUBlbmQK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZThhMzBiYWQyOGViMWEwMjQ2YzI0MWVlNzY2ZmZiZjM0MTgxMGJiYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldLSFRU
UENvb2tpZVN0b3JhZ2UuaCIKLQotI2lmIFdLX0FQSV9FTkFCTEVECi0KLSNpbXBvcnQgIkFQSUhU
VFBDb29raWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotaW5saW5lIFdLSFRUUENvb2tpZVN0b3JhZ2UgKndyYXBwZXIoQVBJOjpIVFRQQ29v
a2llU3RvcmFnZSYgY29va2llU3RvcmFnZSkKLXsKLSAgICBBU1NFUlQoW2Nvb2tpZVN0b3JhZ2Uu
d3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLSFRUUENvb2tpZVN0b3JhZ2UgY2xhc3NdXSk7Ci0g
ICAgcmV0dXJuIChXS0hUVFBDb29raWVTdG9yYWdlICopY29va2llU3RvcmFnZS53cmFwcGVyKCk7
Ci19Ci0KLX0KLQotQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlICgpIDxXS09iamVjdD4g
ewotQHBhY2thZ2UKLSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpIVFRQQ29va2llU3RvcmFn
ZT4gX2Nvb2tpZVN0b3JhZ2U7Ci19Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVmMDNlNmNjMjg3YTQ5Y2EzZGJjNjE4NzZjNzViNzkwYWY0NGIyNTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0
b3JlLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisvKiEKKyBBIFdLSFRU
UENvb2tpZVN0b3JlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAgY29va2llcyBhc3Nv
Y2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4KKyAqLworV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVy
ZmFjZSBXS0hUVFBDb29raWVTdG9yZSA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0
IE5TX1VOQVZBSUxBQkxFOworCisvKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIHN0b3JlZCBjb29r
aWVzLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRo
ZSBmZXRjaGVkIGNvb2tpZXMuCisgKi8KKy0gKHZvaWQpZmV0Y2hDb29raWVzOih2b2lkICheKShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0
cmFjdCBGZXRjaGVzIGFsbCBvZiB0aGUgc3RvcmVkIGNvb2tpZXMgZm9yIHRoZSBnaXZlbiBVUkwu
CisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZl
dGNoZWQgY29va2llcy4KKyAqLworLSAodm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICop
dXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAq
KSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBTZXQgYSBjb29raWUuCisgQHBh
cmFtIGNvb2tpZSBUaGUgY29va2llIHRvIHNldC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIg
QSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llIGhhcyBiZWVuIHN0b3JlZC4KKyAqLwor
LSAodm9pZClzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxl
cjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFj
dCBBZGRzIGFuIGFycmF5IGNvb2tpZXMgdG8gdGhlIGNvb2tpZSBzdG9yZSwgZm9sbG93aW5nIHRo
ZSBjb29raWUgYWNjZXB0IHBvbGljeS4KKyBAcGFyYW0gY29va2llcyBUaGUgY29va2llcyB0byBz
ZXQuCisgQHBhcmFtIFVSTCBUaGUgVVJMIGZyb20gd2hpY2ggdGhlIGNvb2tpZXMgd2VyZSBzZW50
LgorIEBwYXJhbSBtYWluRG9jdW1lbnRVUkwgVGhlIG1haW4gZG9jdW1lbnQgVVJMIHRvIGJlIHVz
ZWQgYXMgYSBiYXNlIGZvciB0aGUgInNhbWUgZG9tYWluIGFzIG1haW4gZG9jdW1lbnQiIHBvbGlj
eS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUg
Y29va2llcyBoYXZlIGJlZW4gc3RvcmVkLgorICovCistICh2b2lkKXNldENvb2tpZXM6KE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1
bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRs
ZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJh
Y3QgRGVsZXRlIHRoZSBzcGVjaWZpZWQgY29va2llLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFzIGJlZW4gZGVsZXRlZC4KKyAq
LworLSAodm9pZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9u
SGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBh
YnN0cmFjdCBEZWxldGUgYWxsIGNvb2tpZXMgZnJvbSB0aGUgY29va2llIHN0b3JhZ2Ugc2luY2Ug
dGhlIHByb3ZpZGVkIGRhdGUuCisgQHBhcmFtIGRhdGUgVGhlIGRhdGUgYWZ0ZXIgd2hpY2ggc2V0
IGNvb2tpZXMgc2hvdWxkIGJlIHJlbW92ZWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEg
YmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZXMgaGF2ZSBiZWVuIGRlbGV0ZWQuCisgKi8K
Ky0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9u
SGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBh
YnN0cmFjdCBTZXRzIHRoZSBjb29raWUgYWNjZXB0IHBvbGljeSBwcmVmZXJlbmNlIG9mIHRoZSBy
ZWNlaXZlci4KKyBAcGFyYW0gcG9saWN5IFRoZSBjb29raWUgYWNjZXB0IHBvbGljeSB0byBzZXQu
CisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIHBv
bGljeSBoYXMgYmVlbiBzZXQuCisgKi8KKy0gKHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJs
ZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IEZldGNoZXMg
dGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgorIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVk
IHBvbGljeS4KKyAqLworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXiko
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZDhkM2UxZWRiMTNlMzUxNWZkMjIyM2UzNjMzYjE1ZjBhNzM0YTdkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5t
bQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQK
KworI2luY2x1ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NGTmV0d29ya1NQSS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqY29yZUNvb2tpZXNUb05TQ29va2llcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgY29yZUNvb2tpZXMpCit7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNI
VFRQQ29va2llICo+ICpuc0Nvb2tpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNp
dHk6Y29yZUNvb2tpZXMuc2l6ZSgpXTsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29yZUNv
b2tpZXMpCisgICAgICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUgKiljb29r
aWVdOworCisgICAgcmV0dXJuIG5zQ29va2llczsKK30KKworQGltcGxlbWVudGF0aW9uIFdLSFRU
UENvb2tpZVN0b3JlCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yZS0+QVBJ
OjpIVFRQQ29va2llU3RvcmU6On5IVFRQQ29va2llU3RvcmUoKTsKKworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JlLT5jb29r
aWVzKFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRs
ZXIgPSAodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsK
KyAgICAgICAgcmF3SGFuZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClmZXRjaENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yZS0+Y29va2llcyh1cmwsIFtoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29va2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFu
ZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAgICB9KTsKK30KKworLSAo
dm9pZClzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yZS0+c2V0Q29v
a2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSld
KCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgp
OworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAg
ICB9KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2ll
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
X2Nvb2tpZVN0b3JlLT5kZWxldGVDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2
b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAg
ICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZXM6KE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5E
b2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiBjb3JlQ29va2llczsKKyAgICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
b2tpZXMuY291bnQpOworICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKQor
ICAgICAgICBjb3JlQ29va2llcy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKKworICAgIF9jb29r
aWVTdG9yZS0+c2V0Q29va2llcyhjb3JlQ29va2llcywgVVJMLCBtYWluRG9jdW1lbnRVUkwsIFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYg
KHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0g
KHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gc3lzdGVtQ2xv
Y2tUaW1lID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9u
bzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oc3Rk
OjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7
CisKKyAgICBfY29va2llU3RvcmUtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xvY2tU
aW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7Cisg
ICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAg
ICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOwor
fQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIF9jb29raWVTdG9yZS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ks
IFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAg
ICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAg
aWYgKHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisK
K3N0YXRpYyBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0Q29va2llUG9saWN5VG9OU0Nvb2tp
ZVBvbGljeShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0UG9saWN5KQoreworICAg
IHN3aXRjaCAoa2l0UG9saWN5KSB7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXM6CisgICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdh
eXM7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjoKKyAgICAg
ICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworICAgIGNhc2UgV2ViS2l0
OjpIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW46CisgICAg
ICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbjsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgLy8gQ2FzdCByZXF1aXJlZCBiZWNhdXNl
IG9mIENGTmV0d29ya1NQSS4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeT4oTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7
Cit9CisKKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQgKF4pKE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmUt
PmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XSldKFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIHsK
KyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcihraXRDb29raWVQb2xpY3lU
b05TQ29va2llUG9saWN5KHBvbGljeSkpOworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgV0tP
YmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKK3sKKyAgICByZXR1cm4gKl9jb29raWVTdG9yZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hU
VFBDb29raWVTdG9yZUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxYjMyYmFlZjI4MTYxNzRlNTRk
YjYwZTA2MWU1M2ZlY2Y4ZWE2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZS5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCisjaW1wb3J0
ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW5saW5lIFdLSFRUUENvb2tp
ZVN0b3JlICp3cmFwcGVyKEFQSTo6SFRUUENvb2tpZVN0b3JlJiBjb29raWVTdG9yZSkKK3sKKyAg
ICBBU1NFUlQoW2Nvb2tpZVN0b3JlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS0hUVFBDb29r
aWVTdG9yZSBjbGFzc11dKTsKKyAgICByZXR1cm4gKFdLSFRUUENvb2tpZVN0b3JlICopY29va2ll
U3RvcmUud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmUg
KCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkhU
VFBDb29raWVTdG9yZT4gX2Nvb2tpZVN0b3JlOworfQorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KaW5kZXggMjM0ZjgwZWJmZTU4NGNjODYyMzUxNWU5MzdmZmYzMzMwYjliYTIwMi4uZTM3
ZWViNzkyNjIwNzZiMDA3YzhlNzQ0MmFlYmE1NjBiNWY4YmIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLSNpbXBvcnQgIldLSFRU
UENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTE5
NSw5ICsxOTUsOSBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDoo
Qk9PTCllbmFibGVkCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAotLSAoV0tIVFRQ
Q29va2llU3RvcmFnZSAqKV9odHRwQ29va2llU3RvcmFnZQorLSAoV0tIVFRQQ29va2llU3RvcmUg
KilfaHR0cENvb2tpZVN0b3JlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfd2Vic2l0
ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JhZ2UoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDA5OWIwNDU5ZWU2ZWEyZTZjZmY2ZjdkNDFl
MDAyMzA0NGI2ZTdlOWUuLmYwNzE3NGU4MTFmOTA2MTNlNzgxYzVlN2E0ZDg2MWVmYzQwOGEwMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKLUBjbGFzcyBXS0hUVFBDb29raWVTdG9yYWdlOworQGNsYXNz
IFdLSFRUUENvb2tpZVN0b3JlOwogQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOwogCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9y
ZUZldGNoT3B0aW9ucykgewpAQCAtNDQsOCArNDQsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJP
T0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAotLyohIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjb29raWUg
c3RvcmFnZSByZXByZXNlbnRpbmcgSFRUUCBjb29raWVzIGluIHRoaXMgd2Vic2l0ZSBkYXRhIHN0
b3JlLiAqLwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0hUVFBDb29raWVTdG9y
YWdlICpfaHR0cENvb2tpZVN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisvKiEgQGFic3RyYWN0IFJldHVybnMgdGhlIGNvb2tpZSBz
dG9yZSByZXByZXNlbnRpbmcgSFRUUCBjb29raWVzIGluIHRoaXMgd2Vic2l0ZSBkYXRhIHN0b3Jl
LiAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0hUVFBDb29raWVTdG9yZSAq
X2h0dHBDb29raWVTdG9yZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCA2MmQ0NDkzY2RhNzdhMTViNTQ2MTExMTNhMzYwYmZmMjczMWY0
MWQ4Li5iYjk3NjJhZmNlOGFkOWE3NTYwYzZmODVhOTQ0ZmQ2YzhmYjAyZjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKLSNp
bmNsdWRlICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVT
dG9yZS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggOTgxOGE5MzhmZDkwNmRjNjk5ZjhmZjlmNWIyZDQzYTg5ZGRiZjA3MC4uMmIwN2E0ZTEy
YzA3YmRjYzdmYzgwZGJmODhiYjlkOGI3NWQ4YmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBj
bGFzcyBBdXRvbWF0aW9uQ2xpZW50OwogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
OwogY2xhc3MgRG93bmxvYWRDbGllbnQ7Ci1jbGFzcyBIVFRQQ29va2llU3RvcmFnZTsKK2NsYXNz
IEhUVFBDb29raWVTdG9yZTsKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xh
c3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMzA0NGZjZWNm
MjAzNTljYzgzZDJlYzk4OWVkMjdjNTE1OGUyNjJkYy4uMTJjOTYxMTAyYmVmNWYyNTJlNmQ0ZGM3
NTA4MTcxNDJmMTZjYTYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBA
IFJlZjxXZWJQcm9jZXNzUG9vbD4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xGb3JDb29r
aWVTdG9yYWdlT3BlcmF0aW9ucygpCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IG11bHRpcGxlIE5l
dHdvcmtQcm9jZXNzZXMgY2FuIGJlIHVzaW5nIHRoZSBzYW1lIHNlc3Npb24sIHdoaWNoIG1lYW5z
IHRoYXQgbXVsdGlwbGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSByZWZlcnJpbmcg
dG8gdGhlIHNhbWUgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UuCiAgICAgLy8KLSAgICAvLyBXaGls
ZSB0aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0dXJlIEFQSXMgaXQgaXMgYWN0
dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBDb29raWVTdG9yYWdlIEFQSQor
ICAgIC8vIFdoaWxlIHRoaXMgbWF5IGNhdXNlIGNvbXBsaWNhdGlvbnMgd2l0aCBmdXR1cmUgQVBJ
cyBpdCBpcyBhY3R1YWxseSBmaW5lIGZvciBpbXBsZW1lbnRpbmcgdGhlIFdLSFRUUENvb2tpZVN0
b3JlIEFQSQogICAgIC8vIGJlY2F1c2Ugd2Ugb25seSBuZWVkIG9uZSBOZXR3b3JrUHJvY2VzcyB0
byBzdWNjZXNzZnVsbHkgbWFrZSBhIHJlcXVlc3RlZCBwbGF0Zm9ybSBjb29raWUgc3RvcmFnZSBj
aGFuZ2UuCiAgICAgLy8KICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBzdGFydCB0byB1bnJhdmVs
IHRoaXMgbWVzcyBnb2luZyBmb3J3YXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzZTQxYzYyMmEyZDk2OWUzYmE4NjMzZTBh
N2IzZWVlOWY1YWVjYmUuLjAyNjg2NmYzNjk0NDY0ODUwOTY5OWIwODU5ZjIzZTQ0N2M2NzdhMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwNjMsOSArMTA2Myw5IEBACiAJCTUxRDEyNDM1MUU2REY2NTIwMDJCMjgyMCAvKiBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUQxMjQyRjFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyVGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
IAkJNTFEMTI0MzYxRTZERkIzOTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzMDFF
NkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLzsgfTsKIAkJNTFE
MTI0M0ExRTZFMEFBQjAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDM4MUU2REZE
QjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi87IH07Ci0JCTUxRDEy
NDkxMUU3NEJGM0MwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4MjFFNzM0QUM4MDAy
QjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovOyB9OwotCQk1MUQxMjQ5MjFFNzRC
RjQ4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yYWdlLm1tICovOyB9OwotCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0
b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgyMUU3MzRB
QzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmUuY3BwICovOyB9OworCQk1MUQxMjQ5MjFF
NzRCRjQ4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyog
V0tIVFRQQ29va2llU3RvcmUubW0gKi87IH07CisJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAv
KiBXS0hUVFBDb29raWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFE
MTMwNTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA0RjEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLzsgfTsKIAkJNTFEMTMwNTQxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1MUQxMzA1NTEzODJFQUMwMDAzNTFFREQgLyogU2Vj
SXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0
YS5jcHAgKi87IH07CkBAIC0zMjkzLDExICszMjkzLDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEw
MDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBB
UElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVy
VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQxMjQ4MjFFNzM0QUM4
MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMTI0ODQxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0
b3JhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDEyNDg2MUU3MzRBRTMw
MDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQ
Q29va2llU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJ
SFRUUENvb2tpZVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0
ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElIVFRQQ29va2llU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0
b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUQxMjQ4NjFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmVJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZUlu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAw
MDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRURE
IC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NTYyLDkgKzU1NjIsOSBAQAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAv
KiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tG
cmFtZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTFBNkZBMjFEMUJEMDQzNUIwMEFBQTY1MCAvKiBX
S0ZyYW1lSW5mb1ByaXZhdGUuaCAqLywKLQkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyog
V0tIVFRQQ29va2llU3RvcmFnZS5oICovLAotCQkJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAv
KiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAotCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLywKKwkJCQk1MUQxMjQ4NDFFNzM0
QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCAqLywKKwkJCQk1MUQxMjQ4NTFFNzM0
QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCisJCQkJNTFEMTI0ODYxRTcz
NEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCAqLywKIAkJCQkxQTQy
MkY4QTE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8sCiAJ
CQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAq
LywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
UHJpdmF0ZS5oICovLApAQCAtNjc1OCw4ICs2NzU4LDggQEAKIAkJCQkyREFCQTc3NTFBODJCNDIx
MDBFRjBGMUEgLyogQVBJSGlzdG9yeUNsaWVudC5oICovLAogCQkJCTkzQTg4QjQyMUJDODgyOEMw
MEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCAqLywKIAkJCQk5M0E4OEI0MzFCQzg4MjhD
MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovLAotCQkJCTUxRDEyNDgyMUU3MzRBQzgw
MDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi8sCi0JCQkJNTFEMTI0ODMxRTcz
NEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8sCisJCQkJNTFEMTI0ODIx
RTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yZS5jcHAgKi8sCisJCQkJNTFEMTI0
ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yZS5oICovLAogCQkJCTUxNDNC
MjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdD
RTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5o
ICovLAogCQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCAq
LywKQEAgLTg1NTIsNyArODU1Miw3IEBACiAJCQkJNTE0MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8q
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNTIzNzQx
QzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0NGNkFCRDEyQzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODIwMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgy
MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1NUJBODM1MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTgwNiw3ICs5ODA2LDcgQEAKIAkJCQkxQTZG
QkEyQjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2Fw
ZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTIx
RTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTgzOUEyRjMxMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5
QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNl
cyAqLywKQEAgLTk4MjUsNyArOTgyNSw3IEBACiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMz
IC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyog
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUQxMjQ5MTFF
NzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDQzNkVEMDFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzEwNDI4QzFCRDZCNjZGMDBBNzE1
RTQgLyogTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTMwMjU4M0QxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZDFjNzcyNGI3ZWJkMjU0Mzc0MTVjMDlhYjQ3MWNkM2I5MjllN2FjNS4uNGRiMDJj
ZWI0ZjVmNzA4NTFmOGIzZTY2NzZjMDM3NDFlMTNjYzllYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAzLTE0
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV0tI
VFRQQ29va2llU3RvcmFnZSB0byBXS0hUVFBDb29raWVTdG9yZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTYzMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMTctMDMt
MTQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtp
dHB5OiBFZmZpY2llbnQgYXBwIGluc3RhbGxhdGlvbiBmb3IgZGV2aWNlIHRlc3RpbmcKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tp
ZVN0b3JhZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hU
VFBDb29raWVTdG9yYWdlLm1tCmluZGV4IDI1YWU0N2ZkNWI0ZjJmZDY0NTc3OGNhNzUzNjI5MjQ1
Y2ZkNzJkZGYuLjEyOThkNzBkNjQwN2JkYmMyYTg0MTc3MzI0M2QzNTUzOTE3ZjcyOTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tp
ZVN0b3JhZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgotI2ltcG9y
dCA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0hUVFBD
b29raWVTdG9yZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNDAsMTAgKzQwLDEwIEBAIFRFU1Qo
V2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmFnZSkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOwogCi0gICAgUmV0YWlu
UHRyPFdLSFRUUENvb2tpZVN0b3JhZ2U+IGNvb2tpZVN0b3JhZ2UgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIGRlZmF1bHREYXRhU3RvcmVdLl9odHRwQ29va2llU3RvcmFnZTsKKyAgICBSZXRhaW5QdHI8
V0tIVFRQQ29va2llU3RvcmU+IGNvb2tpZVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXS5faHR0cENvb2tpZVN0b3JlOwogCiAgICAgTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKmNvb2tpZXMgPSBuaWw7Ci0gICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltj
b29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMp
IHsKKyAgICBbY29va2llU3RvcmUgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNd
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKICAgICAgICAgKmNvb2tpZXNQ
dHIgPSBbbnNDb29raWVzIHJldGFpbl07CiAgICAgICAgIGdvdEZsYWcgPSB0cnVlOwogICAgIH1d
OwpAQCAtNzMsMjEgKzczLDIxIEBAIFRFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmFnZSkK
ICAgICAgICAgTlNIVFRQQ29va2llTWF4aW11bUFnZTogQCIxMDAwMCIsCiAgICAgfV07CiAKLSAg
ICBbY29va2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMS5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpbXSgpeworICAgIFtjb29raWVTdG9yZSBzZXRDb29raWU6Y29va2llMS5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpbXSgpewogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNl
OwogCi0gICAgW2Nvb2tpZVN0b3JhZ2Ugc2V0Q29va2llOmNvb2tpZTIuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6W10oKXsKKyAgICBbY29va2llU3RvcmUgc2V0Q29va2llOmNvb2tpZTIuZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6W10oKXsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CiAgICAgfV07
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcg
PSBmYWxzZTsKIAotICAgIFtjb29raWVTdG9yYWdlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgW2Nv
b2tpZVN0b3JlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CiAgICAgICAgICpjb29raWVzUHRyID0gW25zQ29v
a2llcyByZXRhaW5dOwogICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKICAgICB9XTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>