<?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>190817</bug_id>
          
          <creation_ts>2018-10-22 19:03:46 -0700</creation_ts>
          <short_desc>[WebGPU] Rename old GPU* implementation files to GPULegacy* for WebMetal</short_desc>
          <delta_ts>2018-10-23 15:05:38 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471464</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-22 19:03:46 -0700</bug_when>
    <thetext>[WebGPU] Rename old GPU* implementation files to GPULegacy* for WebMetal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471469</commentid>
    <comment_count>1</comment_count>
      <attachid>352946</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-22 19:11:59 -0700</bug_when>
    <thetext>Created attachment 352946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471470</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-22 19:16:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/45474393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471471</commentid>
    <comment_count>3</comment_count>
      <attachid>352947</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-22 19:24:18 -0700</bug_when>
    <thetext>Created attachment 352947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471472</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-22 19:29:05 -0700</bug_when>
    <thetext>Attachment 352947 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/metal/GPULegacyComputeCommandEncoderMetal.mm:47:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:40:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:43:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:46:  Missing space after ,  [whitespace/comma] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:46:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:47:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:51:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:54:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyDrawableMetal.mm:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/html/canvas/WebMetalDrawable.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyFunctionMetal.mm:39:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyDepthStencilStateMetal.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyTextureDescriptorMetal.mm:37:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyTextureDescriptorMetal.mm:38:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyRenderPipelineStateMetal.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyCommandBufferMetal.mm:42:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 16 in 121 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>1471486</commentid>
    <comment_count>5</comment_count>
      <attachid>352954</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-22 21:25:32 -0700</bug_when>
    <thetext>Created attachment 352954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471487</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-22 21:30:37 -0700</bug_when>
    <thetext>Attachment 352954 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/metal/GPULegacyComputeCommandEncoderMetal.mm:47:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:40:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:43:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:46:  Missing space after ,  [whitespace/comma] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:46:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:47:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:51:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h:54:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyDrawableMetal.mm:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/html/canvas/WebMetalDrawable.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyFunctionMetal.mm:39:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyDepthStencilStateMetal.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyTextureDescriptorMetal.mm:37:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyTextureDescriptorMetal.mm:38:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyRenderPipelineStateMetal.mm:40:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/metal/GPULegacyCommandBufferMetal.mm:42:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 16 in 121 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>1471667</commentid>
    <comment_count>7</comment_count>
      <attachid>352954</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-23 14:13:43 -0700</bug_when>
    <thetext>Comment on attachment 352954
Patch

rs=me assuming you fix the style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471672</commentid>
    <comment_count>8</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-23 14:30:35 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #7)
&gt; Comment on attachment 352954 [details]
&gt; Patch
&gt; 
&gt; rs=me assuming you fix the style errors.

The style errors are red herrings e.g. delegated constructor calls that confuse the indentation checker and also a bunch for the multi-line string shaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471680</commentid>
    <comment_count>9</comment_count>
      <attachid>352954</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-23 15:05:36 -0700</bug_when>
    <thetext>Comment on attachment 352954
Patch

Clearing flags on attachment: 352954

Committed r237368: &lt;https://trac.webkit.org/changeset/237368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471681</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-23 15:05:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352946</attachid>
            <date>2018-10-22 19:11:59 -0700</date>
            <delta_ts>2018-10-22 19:24:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190817-20181022191158.patch</filename>
            <type>text/plain</type>
            <size>481049</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEwOGRlNzE3ZTI3YmU5
MTRmYzFjZGFjYjhlMTIxMDNlNThiYjA4Yy4uMDJlY2Q3MDM5ZmQyOWVlNTMzODEzMzk3MDUzYmRi
NDlmYTM4YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTIyICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gUmVuYW1l
IG9sZCBHUFUqIGltcGxlbWVudGF0aW9uIGZpbGVzIHRvIEdQVUxlZ2FjeSogZm9yIFdlYk1ldGFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFtMYXJnZSBsaXN0IG9m
IHJlZmFjdG9yZWQgY2xhc3NlcyBhbmQgcmVuYW1lZCBmaWxlc106IEdQVSogaXMgbm93IEdQVUxl
Z2FjeSoKKwogMjAxOC0xMC0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gQWRkIGp1c3RpZnkgdGV4dC1hbGlnbiBzdXBwb3J0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCBiNzgxMWEzMzllYjY1ZGIxNWNhZWVhMTdmNzliZTI0ODc5NTllYzNmLi4xYTQ4
YjgwYmViY2FkYjM2ODA5YWYwNWQ0MTQ5Y2Y4MTA4NDkwNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MTcxNSwyNyArMTcxNSwyNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCiAKLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCdWZmZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1
ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kUXVldWUuY3BwCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2
aWNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURyYXdhYmxlLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxp
YnJhcnkuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
Y3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lE
ZXZpY2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCitwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5TGlicmFyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeVRleHR1cmUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAppbmRleCA4NDU1NWE2YTc5YWEwNDFlMmFiYjVhOWIwNDg5NDg5ZDg2MjAzMDgw
Li45NGZmMTU2MjViMzQ4YzQ1MmIxYmE3MDM1YjdlZDgwMjA1Mjc5NDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTM0NSwyNyArMzQ1LDI3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9T
aW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVy
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5tbQogCi1wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVCdWZmZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVDb21tYW5kUXVldWVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbXB1
dGVQaXBlbGluZVN0YXRlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRGVw
dGhTdGVuY2lsU3RhdGVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRGV2aWNl
TWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURyYXdhYmxlTWV0YWwubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUZ1bmN0aW9uTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxpYnJhcnlNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXNjcmlw
dG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVUZXh0dXJlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUJ1ZmZl
ck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kQnVmZmVy
TWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1l
dGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVu
Y29kZXJNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVw
dGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lEZXZpY2VNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
RHJhd2FibGVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RnVuY3Rp
b25NZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5TGlicmFyeU1ldGFs
Lm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
c2NyaXB0b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwu
bW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQogCiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjUwMWVi
ODY4YjI1OTRiYjU5NzExMTg3M2JiYTI5MGQwZGEyOTc5Li5lNjllZmY2OTI1NzM2MTJmYzI5Mjgw
NjM4ZjcwZDU5ZDhiNzIwMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDksMjcgKzkwOSwyNyBAQAogCQkzMTQ4NzdFNjFG
QUFCMDI1MDBDMDU3NTkgLyogSlNPZmZzY3JlZW5DYW52YXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDg3N0U0MUZBQUIwMjIwMEMwNTc1OSAvKiBK
U09mZnNjcmVlbkNhbnZhcy5oICovOyB9OwogCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyog
Q1NTTmFtZWRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTRCRTNBMDFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE0
QkUzQTcxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0QkUzQTUxQjMxMDNG
QjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwotCQkzMTZCREI4
NjFFNkUwQTI3MDBERTBENUEgLyogR1BVRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVRGV2
aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MzE2QkRCODYxRTZFMEEyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCODUxRTZFMEEyMTAwREUw
RDVBIC8qIEdQVUxlZ2FjeURldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTMxNkJEQjhDMUU2RTE1MzAwMERFMEQ1QSAvKiBXZWJNZXRhbExh
eWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REI4QTFFNkUxNTMwMDBERTBENUEgLyogV2ViTWV0YWxMYXllci5oICovOyB9OwotCQkzMTZCREI5
NTFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVG
dW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTMxNkJEQjlCMUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREI5OTFFNzBDQkJGMDBERTBE
NUEgLyogR1BVTGlicmFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTMxNkJEQkFBMUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVCdWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkE4MUU3MUZB
OTMwMERFMEQ1QSAvKiBHUFVCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkzMTZCREJCMjFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVy
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRC
QjAxRTczNTRCQjAwREUwRDVBIC8qIEdQVVRleHR1cmUuaCAqLzsgfTsKLQkJMzE2QkRCQjgxRTcz
NTdDQjAwREUwRDVBIC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJCNjFFNzM1N0NCMDBERTBENUEgLyog
R1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRCQkMxRTczODgwNjAwREUwRDVB
IC8qIEdQVUNvbW1hbmRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2QkRCQkExRTczODgwNjAwREUwRDVBIC8qIEdQVUNvbW1hbmRRdWV1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxNkJE
QkNEMUU3NUYxODQwMERFMEQ1QSAvKiBHUFVEcmF3YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQ0IxRTc1RjE3NjAwREUwRDVBIC8qIEdQ
VURyYXdhYmxlLmggKi87IH07Ci0JCTMxNkJEQkNFMUU3NUYxOEEwMERFMEQ1QSAvKiBHUFVDb21t
YW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTZCREJDNTFFNzVFRTI0MDBERTBENUEgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovOyB9Owot
CQkzMTZCREJEMzFFNzVGN0I2MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkQxMUU3
NUY3QUUwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovOyB9OwotCQkzMTZC
REJEQjFFNzYxMkUyMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
NkJEQkQ5MUU3NjEyREIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oICovOyB9OwotCQkzMTZCREJERjFFNzYxMzc1MDBERTBENUEgLyogR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJERDFFNzYxMzZDMDBERTBENUEgLyogR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxNkJEQkU0MUU3NjFGMDUwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRTMxRTc2MUVGRjAwREUw
RDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07Ci0J
CTMxNkJEQkVCMUU3NjI0NEQwMERFMEQ1QSAvKiBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRTkxRTc2
MjQ0NDAwREUwRDVBIC8qIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi87IH07Ci0JCTMxNkJE
QkYwMUU3NjI5MjAwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRUYxRTc2MjkxQjAwREUw
RDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlLmggKi87IH07Ci0JCTMxNkJEQkY3MUU3NjJBRDUw
MERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyog
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICovOyB9OwotCQkzMTZCREJGQjFFNzYyRDA0MDBE
RTBENUEgLyogR1BVRW51bXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNkJEQkZBMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVFbnVtcy5oICovOyB9Owot
CQkzMTZCREMwMjFFNzYyRjY0MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJG
RDFFNzYyRjU3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi87IH07
Ci0JCTMxNkJEQzAzMUU3NjJGNjkwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJGRjFF
NzYyRjU3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovOyB9OwotCQkzMTZC
REMwRDFFNzYzNEQyMDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTZCREMwOTFFNzYzNDI3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxNkJEQjk1MUU3MEM4OTcwMERFMEQ1QSAvKiBH
UFVMZWdhY3lGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE2QkRCOTMxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzE2QkRC
OUIxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQjk5MUU3MENCQkYwMERFMEQ1QSAv
KiBHUFVMZWdhY3lMaWJyYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMzE2QkRCQUExRTcxRkE5MzAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRC
QTgxRTcxRkE5MzAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxNkJEQkIyMUU3MzU0QkIwMERFMEQ1
QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTZCREJCMDFFNzM1NEJCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVy
ZS5oICovOyB9OworCQkzMTZCREJCODFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxNkJEQkI2MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRv
ci5oICovOyB9OworCQkzMTZCREJCQzFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzE2QkRCQ0QxRTc1
RjE4NDAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJDQjFFNzVGMTc2MDBERTBENUEgLyogR1BV
TGVnYWN5RHJhd2FibGUuaCAqLzsgfTsKKwkJMzE2QkRCQ0UxRTc1RjE4QTAwREUwRDVBIC8qIEdQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxNkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5k
QnVmZmVyLmggKi87IH07CisJCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBh
c3NEZXNjcmlwdG9yLmggKi87IH07CisJCTMxNkJEQkRCMUU3NjEyRTIwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRDkxRTc2MTJEQjAwREUwRDVB
IC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07
CisJCTMxNkJEQkRGMUU3NjEzNzUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxNkJEQkREMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCRTQxRTc2MUYwNTAwREUwRDVBIC8q
IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJFMzFFNzYxRUZGMDBE
RTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAq
LzsgfTsKKwkJMzE2QkRCRUIxRTc2MjQ0RDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1h
bmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTZCREJFOTFFNzYyNDQ0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuaCAqLzsgfTsKKwkJMzE2QkRCRjAxRTc2MjkyMDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRo
U3RlbmNpbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTZCREJFRjFFNzYyOTFCMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3Rh
dGUuaCAqLzsgfTsKKwkJMzE2QkRCRjcxRTc2MkFENTAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNkJEQkY1MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmggKi87IH07CisJCTMxNkJEQkZCMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUVudW1zLmggKi87IH07CisJ
CTMxNkJEQzAyMUU3NjJGNjQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
NkJEQkZEMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaCAqLzsgfTsKKwkJMzE2QkRDMDMxRTc2MkY2OTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlLmggKi87IH07CisJCTMxNkJEQzBEMUU3NjM0RDIwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAv
KiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsg
fTsKIAkJMzE2RENCMjAxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZEQ0Ix
QTFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlvbnMuaCAqLzsgfTsKIAkJ
MzE2RENCMjIxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkRDQjFD
MUU3OENBNTUwMDFCNUY4NyAvKiBKU1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmggKi87IH07
CiAJCTMxNkRDQjRDMUU3OTEwQTYwMDFCNUY4NyAvKiBKU1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2RENCNDYx
RTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNlQ29ubmVjdGlvblN0YXRlLmggKi87IH07CkBAIC0y
NjMwLDkgKzI2MzAsOSBAQAogCQk5M0E4MDYxNzFFMDNCNTFDMDA4QTFGMjYgLyogTG9uZ1Jhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYx
MzFFMDNCNTFDMDA4QTFGMjYgLyogTG9uZ1JhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8qIEpT
RG91YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQTgwNjFBMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJhbmdlLmggKi87IH07CiAJ
CTkzQTgwNjIwMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUMxRTAzQjU4NTAwOEExRjI2
IC8qIEpTTG9uZ1JhbmdlLmggKi87IH07Ci0JCTkzQTk1M0IwMjBFQkQzQzkwMEE2MTlGNiAvKiBH
UFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzgxRTM1RUMxRThFMjNFNDAwNDNFODUwIC8qIEdQVUNvbXB1dGVQaXBl
bGluZVN0YXRlLmggKi87IH07Ci0JCTkzQTk1M0I0MjBFQkQ0MzIwMEE2MTlGNiAvKiBHUFVDb21w
dXRlQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM4MUUzNUVBMUU4RTIwRDkwMDQzRTg1MCAvKiBHUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXIuaCAqLzsgfTsKLQkJOTNBOTUzQjUyMEVDOUMzRjAwQTYxOUY2IC8qIEdQVVNpemUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4MUUzNUY2MUU4
RTREMEUwMDQzRTg1MCAvKiBHUFVTaXplLmggKi87IH07CisJCTkzQTk1M0IwMjBFQkQzQzkwMEE2
MTlGNiAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgxRTM1RUMxRThFMjNFNDAwNDNFODUwIC8q
IEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmggKi87IH07CisJCTkzQTk1M0I0MjBFQkQ0
MzIwMEE2MTlGNiAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4MUUzNUVBMUU4RTIwRDkwMDQz
RTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCAqLzsgfTsKKwkJOTNBOTUz
QjUyMEVDOUMzRjAwQTYxOUY2IC8qIEdQVUxlZ2FjeVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4MUUzNUY2MUU4RTREMEUwMDQzRTg1MCAvKiBH
UFVMZWdhY3lTaXplLmggKi87IH07CiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRk
ZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNkEwRTYw
QjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4
dE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0
NjggLyogSlNET01CaW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTY4NTYsNjUgKzY4NTYsNjQgQEAKIAkJMzE0QkUzQTIxQjMwRjZEMTAw
MTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDU1NOYW1lZEltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNEJF
M0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQjg0MUU2RTBBMjEwMERFMEQ1QSAvKiBH
UFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGV2
aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCODUxRTZFMEEyMTAw
REUwRDVBIC8qIEdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCODgxRTZFMTQx
QzAwREUwRDVBIC8qIEdQVURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVRGV2aWNlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkJEQjg0MUU2RTBBMjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCODUxRTZFMEEyMTAwREUwRDVBIC8q
IEdQVUxlZ2FjeURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVM
ZWdhY3lEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCODgxRTZF
MTQxQzAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNlTWV0YWwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQjhBMUU2RTE1MzAwMERFMEQ1QSAvKiBXZWJNZXRh
bExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1ldGFsTGF5ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCOTIxRTcwQzg5NzAwREUwRDVB
IC8qIEdQVUZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVUZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCOTMx
RTcwQzg5NzAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
NkJEQjk2MUU3MENBMjQwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbk1ldGFsLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRnVuY3Rpb25NZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCOTgxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxp
YnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGlicmFy
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQjk5MUU3MENCQkYwMERF
MEQ1QSAvKiBHUFVMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCOUMxRTcwQ0Q5
MDAwREUwRDVBIC8qIEdQVUxpYnJhcnlNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUxpYnJhcnlNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzE2QkRCQTUxRTcxRkE2RjAwREUwRDVBIC8qIEdQVUJ1ZmZlck1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVQnVmZmVyTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkE3MUU3MUZBOTMwMERFMEQ1QSAv
KiBHUFVCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQTgxRTcxRkE5
MzAwREUwRDVBIC8qIEdQVUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQUQxRTcz
NTQ5QzAwREUwRDVBIC8qIEdQVVRleHR1cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEdQVVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzE2QkRCQUYxRTczNTRCQjAwREUwRDVBIC8qIEdQVVRleHR1cmUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVVGV4dHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVU
ZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVRleHR1cmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQjMxRTczNTdCMDAwREUwRDVBIC8q
IEdQVVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzMTZCREJCNTFFNzM1N0NCMDBERTBENUEgLyogR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVVGV4
dHVyZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJC
NjFFNzM1N0NCMDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQjkxRTczODgwNjAwREUwRDVBIC8qIEdQVUNvbW1hbmRR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVDb21tYW5k
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCQTFFNzM4ODA2
MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREJCRDFFNzM4ODEzMDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlTWV0YWwubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21tYW5kUXVldWVNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQzQxRTc1RUUyNDAwREUwRDVB
IC8qIEdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQzYxRTc1RUUzRDAwREUwRDVBIC8qIEdQVUNvbW1hbmRC
dWZmZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQ
VUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCQzkxRTc1RjE2MjAwREUwRDVBIC8qIEdQVURyYXdhYmxlTWV0YWwubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEcmF3YWJsZU1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJDQTFFNzVGMTc2MDBERTBENUEgLyogR1BVRHJh
d2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRHJhd2Fi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJDQjFFNzVGMTc2MDBE
RTBENUEgLyogR1BVRHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVRHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRDAxRTc1
RjdBRTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkQ0MUU3NUY3Q0EwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRC
RDYxRTc2MTJDNDAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzMTZCREJEODFFNzYxMkRCMDBERTBENUEgLyogR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJEOTFFNzYxMkRCMDBERTBENUEgLyog
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVB
IC8qIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJERDFFNzYxMzZDMDBERTBE
NUEgLyogR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFMDFFNzYxQ0I1MDBERTBENUEgLyog
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRTIxRTc2MUVG
RjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCRTMxRTc2MUVGRjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkU2MUU3NjFGMjcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRTgxRTc2MjQ0MzAwREUwRDVBIC8qIEdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkVDMUU3NjI0NkIwMERF
MEQ1QSAvKiBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRUUxRTc2MjkxQjAwREUwRDVBIC8q
IEdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCRUYxRTc2MjkxQjAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVURlcHRoU3RlbmNpbFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkYyMUU3NjI5MzcwMERFMEQ1QSAv
KiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVRGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8qIEdQVURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxNkJEQkY1MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRjgxRTc2MkJFRjAw
REUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRkExRTc2MkQwNDAwREUw
RDVBIC8qIEdQVUVudW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVu
dW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkZDMUU3NjJGNTcwMERF
MEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRkQxRTc2MkY1NzAwREUwRDVBIC8qIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzE2QkRCRkUxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3Rh
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkZGMUU3
NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMDQxRTc2MkY3RTAwREUwRDVBIC8qIEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQzA1MUU3NjJGN0UwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNkJEQzA4MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMDkxRTc2MzQyNzAwREUwRDVBIC8q
IEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMEExRTc2MzQz
NjAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxNkJEQjkyMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lG
dW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjkzMUU3MEM4
OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVMZWdhY3lGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTZCREI5NjFFNzBDQTI0MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUZ1bmN0
aW9uTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjk4MUU3MENC
QkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lMaWJyYXJ5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjlDMUU3MENEOTAwMERFMEQ1QSAvKiBH
UFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkJEQkE1MUU3MUZBNkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXJNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZl
ck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJBNzFFNzFGQTkz
MDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkJEQkE4MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5QnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkFGMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxl
Z2FjeVRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJCMDFF
NzM1NEJCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkJEQkIzMUU3MzU3QjAwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BV
TGVnYWN5VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2QkRCQjUxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRl
eHR1cmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRC
QjYxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkI5MUU3Mzg4MDYwMERFMEQ1QSAv
KiBHUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzE2QkRCQkExRTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kUXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQkQxRTczODgxMzAwREUw
RDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkM0MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lDb21tYW5kQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTZCREJDNTFFNzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkM2MUU3NUVFM0QwMERFMEQ1
QSAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkM5MUU3NUYxNjIwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lEcmF3YWJsZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gR1BVTGVnYWN5RHJhd2FibGVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2QkRCQ0ExRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeURyYXdhYmxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQ0IxRTc1RjE3NjAwREUwRDVB
IC8qIEdQVUxlZ2FjeURyYXdhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUxlZ2FjeURyYXdhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJE
QkQwMUU3NUY3QUUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkQxMUU3
NUY3QUUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJENDFFNzVGN0NBMDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0
YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkQ2MUU3NjEyQzQwMERF
MEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRDgxRTc2MTJEQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRDkxRTc2MTJEQjAw
REUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
NkJEQkRDMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE2QkRCREQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTAxRTc2MUNCNTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkUyMUU3NjFF
RkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxNkJEQkUzMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJFNjFFNzYxRjI3MDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxNkJEQkU4MUU3NjI0NDMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5j
b2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
NkJEQkU5MUU3NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJDb21tYW5k
RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJFQzFFNzYyNDZC
MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRF
bmNvZGVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkVFMUU3
NjI5MUIwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkVGMUU3NjI5MUIwMERFMEQ1
QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMTZCREJGMjFFNzYyOTM3MDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxNkJEQkY0MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxNkJEQkY4MUU3NjJCRUYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxNkJEQkZBMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lFbnVtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJGQzFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkZEMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkZFMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTZCREJGRjFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJE
QzA0MUU3NjJGN0UwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JN
ZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTZCREMwNTFFNzYyRjdFMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTZCREMwODFFNzYzNDI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQzA5MUU3NjM0
MjcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxNkJEQzBBMUU3NjM0MzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZE
Q0IxMjFFNzhCRTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSVENPZmZlckFuc3dlck9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTZEQ0IxNzFFNzhDMzMwMDAxQjVGODcgLyogUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2RENCMTkxRTc4Q0E1NTAwMUI1Rjg3IC8q
IEpTUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTcxOTYsMTUgKzcxOTUsMTUgQEAKIAkJMzgxRTM1RTYxRThFMURCOTAwNDNF
ODUwIC8qIFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzgxRTM1RTcxRThFMUUwQTAwNDNFODUwIC8qIFdlYkdQVUNvbXB1dGVDb21t
YW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21w
dXRlQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzgxRTM1
RTgxRThFMUUxNjAwNDNFODUwIC8qIFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFOTFFOEUyMEFD
MDA0M0U4NTAgLyogR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzgxRTM1RUExRThFMjBEOTAwNDNF
ODUwIC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzgxRTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUNvbXB1dGVDb21tYW5k
RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVDb21w
dXRlQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFF
MzVFQzFFOEUyM0U0MDA0M0U4NTAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzgxRTM1RUQxRThFMjQ3QTAwNDNFODUwIC8qIEdQ
VUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzgxRTM1RUUxRThFMjRDQjAwNDNFODUwIC8qIEdQVUNvbXB1dGVQaXBlbGluZVN0
YXRlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVD
b21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzODFFMzVFOTFFOEUyMEFDMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVM
ZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzgx
RTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFFMzVF
QzFFOEUyM0U0MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzgxRTM1RUQxRThFMjQ3QTAwNDNF
ODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzgxRTM1RUUxRThFMjRDQjAwNDNFODUwIC8q
IEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODFFMzVFRjFFOEUzRDdGMDA0M0U4
NTAgLyogV2ViR1BVU2l6ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2l6ZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4MUUzNUY1MUU4RTRDNDIwMDQzRTg1
MCAvKiBXZWJHUFVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzgxRTM1RjYxRThFNEQwRTAw
NDNFODUwIC8qIEdQVVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
U2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFFMzVGNjFFOEU0RDBFMDA0
M0U4NTAgLyogR1BVTGVnYWN5U2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4N0FFOTU4
MUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVTaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzg3QUU5NTkxRThFOTJFRjAwMDBERTk2IC8qIEpTV2ViR1BVU2l6ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVNpemUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzhGMjNBQUUxRThFODNDNDAwQ0U0NkY1IC8qIEpTV2ViR1BVQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNzQ0LDYgKzEzNzQzLDcgQEAKIAkJRDA0NUFEMjEyMTY4MjQ3NDAwMEE2
RTlCIC8qIFdlYk1ldGFsQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFsQnVm
ZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA0NUFEMjIyMTY4MjQ3NDAw
MEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZXRh
bENvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA0NUFEMjMy
MTY4MjQ3NTAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1
cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIy
QzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29t
bWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0QmxvY2tDb21t
YW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNkMwRDhEMENGRDExNDYwMDY1
RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3ODk5LDUwICsxNzg5OSw1MCBAQAogCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyog
Z3B1ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkzMTZC
REJBNzFFNzFGQTkzMDBERTBENUEgLyogR1BVQnVmZmVyLmNwcCAqLywKLQkJCQkzMTZCREJBODFF
NzFGQTkzMDBERTBENUEgLyogR1BVQnVmZmVyLmggKi8sCi0JCQkJMzE2QkRCQzQxRTc1RUUyNDAw
REUwRDVBIC8qIEdQVUNvbW1hbmRCdWZmZXIuY3BwICovLAotCQkJCTMxNkJEQkM1MUU3NUVFMjQw
MERFMEQ1QSAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8sCi0JCQkJMzE2QkRCQjkxRTczODgwNjAw
REUwRDVBIC8qIEdQVUNvbW1hbmRRdWV1ZS5jcHAgKi8sCi0JCQkJMzE2QkRCQkExRTczODgwNjAw
REUwRDVBIC8qIEdQVUNvbW1hbmRRdWV1ZS5oICovLAotCQkJCTM4MUUzNUVCMUU4RTIxOTkwMDQz
RTg1MCAvKiBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwICovLAotCQkJCTM4MUUzNUVBMUU4
RTIwRDkwMDQzRTg1MCAvKiBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCAqLywKLQkJCQkzODFF
MzVFRDFFOEUyNDdBMDA0M0U4NTAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwICovLAot
CQkJCTM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5o
ICovLAotCQkJCTMxNkJEQkY0MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyogR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkVFMUU3NjI5MUIwMERFMEQ1QSAvKiBH
UFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8sCi0JCQkJMzE2QkRCRUYxRTc2MjkxQjAwREUwRDVB
IC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlLmggKi8sCi0JCQkJMzE2QkRCODQxRTZFMEEyMTAwREUw
RDVBIC8qIEdQVURldmljZS5jcHAgKi8sCi0JCQkJMzE2QkRCODUxRTZFMEEyMTAwREUwRDVBIC8q
IEdQVURldmljZS5oICovLAotCQkJCTMxNkJEQkNBMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVEcmF3
YWJsZS5jcHAgKi8sCi0JCQkJMzE2QkRCQ0IxRTc1RjE3NjAwREUwRDVBIC8qIEdQVURyYXdhYmxl
LmggKi8sCi0JCQkJMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQVUVudW1zLmggKi8sCi0J
CQkJMzE2QkRCOTIxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uLmNwcCAqLywKLQkJCQkz
MTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rpb24uaCAqLywKLQkJCQkzMTZCREI5
ODFFNzBDQkJGMDBERTBENUEgLyogR1BVTGlicmFyeS5jcHAgKi8sCi0JCQkJMzE2QkRCOTkxRTcw
Q0JCRjAwREUwRDVBIC8qIEdQVUxpYnJhcnkuaCAqLywKLQkJCQkzMTZCREJFODFFNzYyNDQzMDBE
RTBENUEgLyogR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovLAotCQkJCTMxNkJEQkU5MUU3
NjI0NDQwMERFMEQ1QSAvKiBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovLAotCQkJCTMxNkJE
QkRDMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwICovLAotCQkJCTMxNkJEQkREMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJEODFFNzYxMkRCMDBERTBENUEgLyog
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJE
QkQ5MUU3NjEyREIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovLAotCQkJCTMxNkJEQkUyMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCRTMxRTc2MUVGRjAw
REUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCi0J
CQkJMzE2QkRCRDAxRTc1RjdBRTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNw
cCAqLywKLQkJCQkzMTZCREJEMTFFNzVGN0FFMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaCAqLywKLQkJCQkzMTZCREMwODFFNzYzNDI3MDBERTBENUEgLyogR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREMwOTFFNzYz
NDI3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmggKi8sCi0JCQkJMzE2QkRCRkMxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCRkQxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkZFMUU3NjJGNTcwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLywKLQkJCQkzMTZCREJGRjFFNzYyRjU3
MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAotCQkJCTM4MUUzNUY2MUU4
RTREMEUwMDQzRTg1MCAvKiBHUFVTaXplLmggKi8sCi0JCQkJMzE2QkRCQUYxRTczNTRCQjAwREUw
RDVBIC8qIEdQVVRleHR1cmUuY3BwICovLAotCQkJCTMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAv
KiBHUFVUZXh0dXJlLmggKi8sCi0JCQkJMzE2QkRCQjUxRTczNTdDQjAwREUwRDVBIC8qIEdQVVRl
eHR1cmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJCNjFFNzM1N0NCMDBERTBENUEgLyog
R1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTZCREJBNzFFNzFGQTkzMDBERTBENUEg
LyogR1BVTGVnYWN5QnVmZmVyLmNwcCAqLywKKwkJCQkzMTZCREJBODFFNzFGQTkzMDBERTBENUEg
LyogR1BVTGVnYWN5QnVmZmVyLmggKi8sCisJCQkJMzE2QkRCQzQxRTc1RUUyNDAwREUwRDVBIC8q
IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwICovLAorCQkJCTMxNkJEQkM1MUU3NUVFMjQwMERF
MEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmggKi8sCisJCQkJMzE2QkRCQjkxRTczODgw
NjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAgKi8sCisJCQkJMzE2QkRCQkEx
RTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oICovLAorCQkJCTM4MUUz
NUVCMUU4RTIxOTkwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3Bw
ICovLAorCQkJCTM4MUUzNUVBMUU4RTIwRDkwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIuaCAqLywKKwkJCQkzODFFMzVFRDFFOEUyNDdBMDA0M0U4NTAgLyogR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwICovLAorCQkJCTM4MUUzNUVDMUU4RTIzRTQwMDQz
RTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oICovLAorCQkJCTMxNkJEQkY0
MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAq
LywKKwkJCQkzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5oICovLAorCQkJCTMxNkJEQkVFMUU3NjI5MUIwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8sCisJCQkJMzE2QkRCRUYxRTc2MjkxQjAwREUwRDVB
IC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggKi8sCisJCQkJMzE2QkRCODQxRTZFMEEy
MTAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5jcHAgKi8sCisJCQkJMzE2QkRCODUxRTZFMEEy
MTAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5oICovLAorCQkJCTMxNkJEQkNBMUU3NUYxNzYw
MERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5jcHAgKi8sCisJCQkJMzE2QkRCQ0IxRTc1RjE3
NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmggKi8sCisJCQkJMzE2QkRCRkExRTc2MkQw
NDAwREUwRDVBIC8qIEdQVUxlZ2FjeUVudW1zLmggKi8sCisJCQkJMzE2QkRCOTIxRTcwQzg5NzAw
REUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcCAqLywKKwkJCQkzMTZCREI5MzFFNzBDODk3
MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCAqLywKKwkJCQkzMTZCREI5ODFFNzBDQkJG
MDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5jcHAgKi8sCisJCQkJMzE2QkRCOTkxRTcwQ0JC
RjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCAqLywKKwkJCQkzMTZCREJFODFFNzYyNDQz
MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovLAorCQkJCTMx
NkJEQkU5MUU3NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5o
ICovLAorCQkJCTMxNkJEQkRDMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxNkJEQkREMUU3NjEzNkMwMERFMEQ1
QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkz
MTZCREJEODFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxNkJEQkQ5MUU3NjEyREIwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMx
NkJEQkUyMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzE2QkRCRTMxRTc2MUVGRjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzE2
QkRCRDAxRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNw
cCAqLywKKwkJCQkzMTZCREJEMTFFNzVGN0FFMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTZCREMwODFFNzYzNDI3MDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkz
MTZCREMwOTFFNzYzNDI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCisJCQkJMzE2QkRCRkMxRTc2MkY1NzAwREUwRDVBIC8q
IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzE2QkRCRkQx
RTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICov
LAorCQkJCTMxNkJEQkZFMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlLmNwcCAqLywKKwkJCQkzMTZCREJGRjFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAorCQkJCTM4MUUzNUY2MUU4RTREMEUwMDQzRTg1MCAv
KiBHUFVMZWdhY3lTaXplLmggKi8sCisJCQkJMzE2QkRCQUYxRTczNTRCQjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVRleHR1cmUuY3BwICovLAorCQkJCTMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAvKiBH
UFVMZWdhY3lUZXh0dXJlLmggKi8sCisJCQkJMzE2QkRCQjUxRTczNTdDQjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMTZCREJCNjFFNzM1N0NCMDBE
RTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCAqLywKIAkJCQk0OTg3NzBENzEy
NDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5jcHAgKi8sCiAJCQkJNDk4NzcwRDgxMjQyQzUzNTAw
MjIyNkJBIC8qIFRleHR1cmUuaCAqLywKIAkJCQk0OTg3NzBEOTEyNDJDNTM1MDAyMjI2QkEgLyog
VGlsaW5nRGF0YS5jcHAgKi8sCkBAIC0xOTgxOSw5ICsxOTgxOSw3IEBACiAJCQkJRTQyMDUwMTYy
MTQxOTAxQjAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmNwcCAqLywKIAkJCQlFNDIwNTAxNDIx
NDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dhcm1pbmcuaCAqLywKIAkJCQlDRDlBODdGOTIxNUQ2
Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmNwcCAqLywKLQkJCQlDRDlBODdGMjIxNUQ0M0E2MDA2RjE3
QjUgLyogUXVpcmtzLmNwcCAqLywKIAkJCQlDRDlBODdGQjIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVp
cmtzLmggKi8sCi0JCQkJQ0Q5QTg3RjEyMTVENDNBNjAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAog
CQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAog
CQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJ
CQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAqLywKQEAg
LTIwNjg5LDI3ICsyMDY4NywyNyBAQAogCQk5MzY4QzQ5MTIwRjlCNTcyMDA0MzRENjEgLyogbWV0
YWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTMxNkJE
QkE1MUU3MUZBNkYwMERFMEQ1QSAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJD
NjFFNzVFRTNEMDBERTBENUEgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCTMx
NkJEQkJEMUU3Mzg4MTMwMERFMEQ1QSAvKiBHUFVDb21tYW5kUXVldWVNZXRhbC5tbSAqLywKLQkJ
CQkzODFFMzVFOTFFOEUyMEFDMDA0M0U4NTAgLyogR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0
YWwubW0gKi8sCi0JCQkJMzgxRTM1RUUxRThFMjRDQjAwNDNFODUwIC8qIEdQVUNvbXB1dGVQaXBl
bGluZVN0YXRlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCRjgxRTc2MkJFRjAwREUwRDVBIC8qIEdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJGMjFFNzYyOTM3
MDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbSAqLywKLQkJCQkzMTZCREI4
ODFFNkUxNDFDMDBERTBENUEgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCQzkx
RTc1RjE2MjAwREUwRDVBIC8qIEdQVURyYXdhYmxlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCOTYx
RTcwQ0EyNDAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCOUMx
RTcwQ0Q5MDAwREUwRDVBIC8qIEdQVUxpYnJhcnlNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJFQzFF
NzYyNDZCMDBERTBENUEgLyogR1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLywKLQkJ
CQkzMTZCREJFMDFFNzYxQ0I1MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCRDYxRTc2MTJDNDAwREUwRDVBIC8qIEdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRC
RTYxRTc2MUYyNzAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCRDQxRTc1RjdDQTAwREUwRDVBIC8qIEdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRDMEExRTc2MzQzNjAwREUwRDVB
IC8qIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICov
LAotCQkJCTMxNkJEQzA0MUU3NjJGN0UwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3JNZXRhbC5tbSAqLywKLQkJCQkzMTZCREMwNTFFNzYyRjdFMDBERTBENUEgLyogR1BVUmVu
ZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tICovLAotCQkJCTMxNkJEQkIzMUU3MzU3QjAwMERFMEQ1
QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tICovLAotCQkJCTMxNkJEQkFEMUU3MzU0
OUMwMERFMEQ1QSAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJMzE2QkRCQTUxRTcxRkE2
RjAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkM2MUU3
NUVFM0QwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCisJCQkJ
MzE2QkRCQkQxRTczODgxMzAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1t
ICovLAorCQkJCTM4MUUzNUU5MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXJNZXRhbC5tbSAqLywKKwkJCQkzODFFMzVFRTFFOEUyNENCMDA0M0U4NTAgLyog
R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJGODFF
NzYyQkVGMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1t
ICovLAorCQkJCTMxNkJEQkYyMUU3NjI5MzcwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxTdGF0ZU1ldGFsLm1tICovLAorCQkJCTMxNkJEQjg4MUU2RTE0MUMwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lEZXZpY2VNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJDOTFFNzVGMTYyMDBERTBENUEgLyog
R1BVTGVnYWN5RHJhd2FibGVNZXRhbC5tbSAqLywKKwkJCQkzMTZCREI5NjFFNzBDQTI0MDBERTBE
NUEgLyogR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbSAqLywKKwkJCQkzMTZCREI5QzFFNzBDRDkw
MDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tICovLAorCQkJCTMxNkJEQkVDMUU3
NjI0NkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tICov
LAorCQkJCTMxNkJEQkUwMUU3NjFDQjUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJENjFFNzYxMkM0MDBERTBE
NUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bSAqLywKKwkJCQkzMTZCREJFNjFFNzYxRjI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJENDFFNzVG
N0NBMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLywK
KwkJCQkzMTZCREMwQTFFNzYzNDM2MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzE2QkRDMDQxRTc2MkY3
RTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICov
LAorCQkJCTMxNkJEQzA1MUU3NjJGN0UwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlTWV0YWwubW0gKi8sCisJCQkJMzE2QkRCQjMxRTczNTdCMDAwREUwRDVBIC8qIEdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gKi8sCisJCQkJRDA1NzNENDIyMTdFQjgxRTAw
RDFCRTkxIC8qIEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0g
bWV0YWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjg1MzAsMjkgKzI4NTI4LDI5
IEBACiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2Vk
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQUExRTcx
RkE5MzAwREUwRDVBIC8qIEdQVUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQ0Ux
RTc1RjE4QTAwREUwRDVBIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMxNkJEQkJDMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTkzQTk1M0I0MjBFQkQ0MzIwMEE2MTlGNiAvKiBHUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQTk1M0IwMjBFQkQzQzkwMEE2MTlGNiAvKiBH
UFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCRjcxRTc2
MkFENTAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCTMxNkJEQkYwMUU3NjI5MjAwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCODYxRTZFMEEyNzAwREUwRDVBIC8qIEdQVURldmlj
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQ0QxRTc1RjE4NDAwREUwRDVBIC8qIEdQVURy
YXdhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJGQjFFNzYyRDA0MDBERTBENUEgLyog
R1BVRW51bXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQjk1MUU3MEM4OTcwMERFMEQ1QSAv
KiBHUFVGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCOUIxRTcwQ0JCRjAwREUw
RDVBIC8qIEdQVUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkVCMUU3NjI0NEQw
MERFMEQ1QSAvKiBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzE2QkRCREYxRTc2MTM3NTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCREIxRTc2MTJFMjAwREUwRDVBIC8qIEdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkzMTZCREJFNDFFNzYxRjA1MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRD
MEQxRTc2MzREMjAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMDIxRTc2MkY2NDAwREUwRDVBIC8q
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRD
MDMxRTc2MkY2OTAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTkzQTk1M0I1MjBFQzlDM0YwMEE2MTlGNiAvKiBHUFVTaXplLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkzMTZCREJCMjFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzE2QkRCQjgxRTczNTdDQjAwREUwRDVBIC8qIEdQVVRleHR1cmVEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJBQTFFNzFGQTkzMDBERTBENUEgLyog
R1BVTGVnYWN5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJDRTFFNzVGMThBMDBE
RTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2
QkRCQkMxRTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTNBOTUzQjQyMEVCRDQzMjAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNBOTUzQjAyMEVCRDNDOTAwQTYx
OUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMTZCREJGNzFFNzYyQUQ1MDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCRjAxRTc2MjkyMDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREI4NjFF
NkUwQTI3MDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MTZCREJDRDFFNzVGMTg0MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMxNkJEQkZCMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCOTUxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREI5QjFFNzBDQkJGMDBERTBENUEgLyog
R1BVTGVnYWN5TGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCRUIxRTc2MjQ0RDAw
REUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTZCREJERjFFNzYxMzc1MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJEQjFFNzYxMkUyMDBE
RTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTMxNkJEQkU0MUU3NjFGMDUwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzE2QkRCRDMxRTc1RjdCNjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREMwRDFFNzYzNEQyMDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMTZCREMwMjFFNzYyRjY0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREMwMzFFNzYyRjY5MDBERTBE
NUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNBOTUzQjUyMEVDOUMzRjAwQTYxOUY2IC8qIEdQVUxlZ2FjeVNpemUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTMxNkJEQkIyMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTZCREJCODFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIx
RUI1RCAvKiBHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAw
NzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFG
MDQxNDZCNUM2QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwCmluZGV4IGJkMzAx
ZWU5ODU1M2E2MTc5YjRkYjNmYTRkY2IzNGFkZGVkMmZlZGMuLmY2NTkwNGI4NmY3NmIwNTYyNmFk
OGRjMmViYzY1NGZjMWFjNmIwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJNZXRhbEJ1ZmZlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gV2ViTWV0YWxCdWZmZXI6OmNyZWF0ZShHUFVC
dWZmZXImJiBidWZmZXIpCitSZWZQdHI8V2ViTWV0YWxCdWZmZXI+IFdlYk1ldGFsQnVmZmVyOjpj
cmVhdGUoR1BVTGVnYWN5QnVmZmVyJiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBDb25zaWRl
ciByZXR1cm5pbmcgbnVsbCByYXRoZXIgdGhhbiBhIGJ1ZmZlciB3aXRoIGxlbmd0aCAwIGFuZCBj
b250ZW50cyBudWxsIHdoZW4gY3JlYXRpb24gZmFpbHMuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViTWV0YWxCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVdlYk1ldGFsQnVmZmVy
OjpXZWJNZXRhbEJ1ZmZlcihHUFVCdWZmZXImJiBidWZmZXIpCitXZWJNZXRhbEJ1ZmZlcjo6V2Vi
TWV0YWxCdWZmZXIoR1BVTGVnYWN5QnVmZmVyJiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIgeyBX
VEZNb3ZlKGJ1ZmZlcikgfQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsQnVmZmVyLmgKaW5kZXggMmUzNDFhNzJhZWE5MDdkODJiYmJiOTczYTM1ZWFjNjlkZjA1NDhj
Yi4uZTg0NGExNzA2N2M1ODZmNjE3ODRlMDI0YTYzMGJmMjNmYWI2ZTVhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEJ1ZmZlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKKyNpbmNsdWRl
ICJHUFVMZWdhY3lCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzUsMTcgKzM1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV2ViTWV0YWxCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbEJ1
ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViTWV0YWxCdWZmZXI+IGNyZWF0
ZShHUFVCdWZmZXImJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gY3JlYXRl
KEdQVUxlZ2FjeUJ1ZmZlciYmKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmxlbmd0aCgpOyB9CiAgICAgSlNDOjpBcnJheUJ1ZmZlciYgY29udGVudHMo
KSBjb25zdCB7IHJldHVybiAqbV9idWZmZXIuY29udGVudHMoKTsgfQogCi0gICAgY29uc3QgR1BV
QnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IEdQ
VUxlZ2FjeUJ1ZmZlciYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbEJ1ZmZlcihHUFVCdWZmZXImJik7CisgICAgZXhw
bGljaXQgV2ViTWV0YWxCdWZmZXIoR1BVTGVnYWN5QnVmZmVyJiYpOwogCi0gICAgR1BVQnVmZmVy
IG1fYnVmZmVyOworICAgIEdQVUxlZ2FjeUJ1ZmZlciBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbENvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGQxYmJlMWE2NDhjMTQ1M2M4MzAwYjQ4MzE1NzY2
NzQ2MjQwZGVlOTAuLjAzYWZjMzZiNjIyMDRjYjI1NWM5N2Q3OGQwMzAxYWMxYjlhMmIwNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21tYW5kQnVm
ZmVyLmNwcApAQCAtMjksOCArMjksOCBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5j
bHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgor
I2luY2x1ZGUgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lD
b21tYW5kUXVldWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxD
b21wdXRlQ29tbWFuZEVuY29kZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbERyYXdhYmxlLmgiCkBA
IC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViTWV0YWxD
b21tYW5kQnVmZmVyPiBXZWJNZXRhbENvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVDb21t
YW5kUXVldWUmIHF1ZXVlKQorUmVmPFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcj4gV2ViTWV0YWxDb21t
YW5kQnVmZmVyOjpjcmVhdGUoY29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiBxdWV1ZSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbENvbW1hbmRCdWZmZXIocXVldWUpKTsK
IH0KIAotV2ViTWV0YWxDb21tYW5kQnVmZmVyOjpXZWJNZXRhbENvbW1hbmRCdWZmZXIoY29uc3Qg
R1BVQ29tbWFuZFF1ZXVlJiBxdWV1ZSkKK1dlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6V2ViTWV0YWxD
b21tYW5kQnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYgcXVldWUpCiAgICAgOiBt
X2J1ZmZlciB7IHF1ZXVlLCBbdGhpc10gKCkgeyBtX2NvbXBsZXRlZC5yZXNvbHZlKCk7IH0gfQog
ewogICAgIExPRyhXZWJNZXRhbCwgIldlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6V2ViTWV0YWxDb21t
YW5kQnVmZmVyKCkiKTsKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIFdlYk1ldGFsQ29tbWFuZEJ1
ZmZlcjo6cHJlc2VudERyYXdhYmxlKFdlYk1ldGFsRHJhd2FibGUmIGRyYXdhYmxlKQogCiBSZWY8
V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gV2ViTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVh
dGVSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yKFdlYk1ldGFsUmVuZGVyUGFzc0Rl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsUmVuZGVyQ29tbWFu
ZEVuY29kZXI6OmNyZWF0ZShHUFVSZW5kZXJDb21tYW5kRW5jb2RlciB7IG1fYnVmZmVyLCBkZXNj
cmlwdG9yLmRlc2NyaXB0b3IoKSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6Y3JlYXRlKEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyIHsgbV9idWZmZXIs
IGRlc2NyaXB0b3IuZGVzY3JpcHRvcigpIH0pOwogfQogCiBSZWY8V2ViTWV0YWxDb21wdXRlQ29t
bWFuZEVuY29kZXI+IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlQ29tcHV0ZUNvbW1hbmRF
bmNvZGVyKCkKIHsKLSAgICByZXR1cm4gV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI6OmNy
ZWF0ZShHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIgeyBtX2J1ZmZlciB9KTsKKyAgICByZXR1cm4g
V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIgeyBtX2J1ZmZlciB9KTsKIH0KIAogRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+
JiBXZWJNZXRhbENvbW1hbmRCdWZmZXI6OmNvbXBsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGIzODRmMmQxMjg3
MWY5MWI1ZmIyZmIyNWUwNjAwNzEwYWFmNjc4N2UuLjI2MWZkZDY0ODIzMzQ0NTNjZWRlNTM0ZTcx
NzBhODM5NGMzZmQ5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQk1F
VEFMKQogCiAjaW5jbHVkZSAiRE9NUHJvbWlzZVByb3h5LmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFu
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDMsNyArNDMs
NyBAQCBjbGFzcyBXZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxD
b21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21tYW5kQnVmZmVyPiB7
CiBwdWJsaWM6CiAgICAgfldlYk1ldGFsQ29tbWFuZEJ1ZmZlcigpOwotICAgIHN0YXRpYyBSZWY8
V2ViTWV0YWxDb21tYW5kQnVmZmVyPiBjcmVhdGUoY29uc3QgR1BVQ29tbWFuZFF1ZXVlJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJNZXRhbENvbW1hbmRCdWZmZXI+IGNyZWF0ZShjb25zdCBHUFVMZWdh
Y3lDb21tYW5kUXVldWUmKTsKIAogICAgIHZvaWQgY29tbWl0KCk7CiAgICAgdm9pZCBwcmVzZW50
RHJhd2FibGUoV2ViTWV0YWxEcmF3YWJsZSYpOwpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoK
IAogICAgIERPTVByb21pc2VQcm94eTxJRExWb2lkPiYgY29tcGxldGVkKCk7CiAKLSAgICBjb25z
dCBHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQor
ICAgIGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxDb21tYW5kQnVm
ZmVyKGNvbnN0IEdQVUNvbW1hbmRRdWV1ZSYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsQ29tbWFu
ZEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kUXVldWUmKTsKIAotICAgIEdQVUNvbW1hbmRC
dWZmZXIgbV9idWZmZXI7CisgICAgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciBtX2J1ZmZlcjsKICAg
ICBET01Qcm9taXNlUHJveHk8SURMVm9pZD4gbV9jb21wbGV0ZWQ7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAKaW5kZXgg
YTQ5YjIzYjVlMmQ0Y2Y0Mjg1OGFmNmNhNjgwMmI0MmM4OWI3Mjk2My4uZGE0ZDJjMmQxY2E4MjNj
MGFiM2ZmYzRjMTIxMzUzOTEyZTdlZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBXZWJNZXRh
bENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUNvbW1hbmRRdWV1ZSYmIHF1ZXVlKQorUmVmPFdlYk1l
dGFsQ29tbWFuZFF1ZXVlPiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUxlZ2FjeUNv
bW1hbmRRdWV1ZSYmIHF1ZXVlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFs
Q29tbWFuZFF1ZXVlKFdURk1vdmUocXVldWUpKSk7CiB9CiAKLVdlYk1ldGFsQ29tbWFuZFF1ZXVl
OjpXZWJNZXRhbENvbW1hbmRRdWV1ZShHUFVDb21tYW5kUXVldWUmJiBxdWV1ZSkKK1dlYk1ldGFs
Q29tbWFuZFF1ZXVlOjpXZWJNZXRhbENvbW1hbmRRdWV1ZShHUFVMZWdhY3lDb21tYW5kUXVldWUm
JiBxdWV1ZSkKICAgICA6IG1fcXVldWUgeyBXVEZNb3ZlKHF1ZXVlKSB9CiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21tYW5kUXVldWUuaAppbmRleCBm
NTA3YjIzNjEwNmVlYTJkNTg2NzA3NWM2OTNiNjQ4Y2M4ZDg0NGI2Li41Y2JiODcyMmVlYThlMDE1
NTc5N2E1ODIwN2Y4MGIzZThkMTNkODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsQ29tbWFuZFF1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUg
IkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYk1ldGFsQ29t
bWFuZEJ1ZmZlcjsKIGNsYXNzIFdlYk1ldGFsQ29tbWFuZFF1ZXVlIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViTWV0YWxDb21tYW5kUXVldWU+IHsKIHB1YmxpYzoKICAgICB+V2ViTWV0YWxDb21tYW5k
UXVldWUoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBjcmVhdGUoR1BV
Q29tbWFuZFF1ZXVlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21tYW5kUXVldWU+IGNy
ZWF0ZShHUFVMZWdhY3lDb21tYW5kUXVldWUmJik7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX3F1ZXVlLmxhYmVsKCk7IH0KICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwpIHsgbV9xdWV1ZS5zZXRMYWJlbChsYWJlbCk7IH0KQEAgLTQ2LDkgKzQ2LDkg
QEAgcHVibGljOgogICAgIFJlZjxXZWJNZXRhbENvbW1hbmRCdWZmZXI+IGNyZWF0ZUNvbW1hbmRC
dWZmZXIoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbENvbW1hbmRRdWV1ZShH
UFVDb21tYW5kUXVldWUmJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxDb21tYW5kUXVldWUoR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlJiYpOwogCi0gICAgR1BVQ29tbWFuZFF1ZXVlIG1fcXVldWU7Cisg
ICAgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlIG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENv
bXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKaW5kZXggYjQ2MDNmNDc3NTIxZDU2MjFkZDli
NDRiMjIzMGJkZTEyYTlhYjdjOS4uODQ0MDFkZDg4OGQ0NjI1ZDFjNjNkNjc5OThhMGFlNjgyYjE2
ZWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21w
dXRlQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMjgsMjYgKzI4LDI2IEBACiAKICNp
ZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5j
bHVkZSAiR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVU2l6ZS5oIgor
I2luY2x1ZGUgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lTaXplLmgiCiAjaW5j
bHVkZSAiV2ViTWV0YWxCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbENvbW1hbmRCdWZmZXIu
aCIKICNpbmNsdWRlICJXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBHUFVTaXplIEdQVVNpemVNYWtlKFdlYk1ldGFs
U2l6ZSBzaXplKQorc3RhdGljIGlubGluZSBHUFVMZWdhY3lTaXplIEdQVUxlZ2FjeVNpemVNYWtl
KFdlYk1ldGFsU2l6ZSBzaXplKQogewogICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVp
Z2h0LCBzaXplLmRlcHRoIH07CiB9CiAKLVJlZjxXZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rl
cj4gV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShHUFVDb21wdXRlQ29tbWFu
ZEVuY29kZXImJiBlbmNvZGVyKQorUmVmPFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBX
ZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKEdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2RlciYmIGVuY29kZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0
YWxDb21wdXRlQ29tbWFuZEVuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkpOwogfQogICAgIAotV2Vi
TWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI6OldlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
KEdQVUNvbXB1dGVDb21tYW5kRW5jb2RlciYmIGVuY29kZXIpCitXZWJNZXRhbENvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXIoR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyJiYgZW5jb2RlcikKICAgICA6IG1fZW5jb2RlciB7IFdURk1vdmUoZW5j
b2RlcikgfQogewogfQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFdlYk1ldGFsQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjpzZXRCdWZmZXIoV2ViTWV0YWxCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgbwog
CiB2b2lkIFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaChXZWJNZXRhbFNp
emUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgV2ViTWV0YWxTaXplIHRocmVhZHNQZXJUaHJlYWRncm91
cCkKIHsKLSAgICBtX2VuY29kZXIuZGlzcGF0Y2goR1BVU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVy
R3JpZCksIEdQVVNpemVNYWtlKHRocmVhZHNQZXJUaHJlYWRncm91cCkpOworICAgIG1fZW5jb2Rl
ci5kaXNwYXRjaChHUFVMZWdhY3lTaXplTWFrZSh0aHJlYWRncm91cHNQZXJHcmlkKSwgR1BVTGVn
YWN5U2l6ZU1ha2UodGhyZWFkc1BlclRocmVhZGdyb3VwKSk7CiB9CiAKIHZvaWQgV2ViTWV0YWxD
b21wdXRlQ29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlci5oCmlu
ZGV4IGJmYmE4YzVjNDBhZjMwYjA3MGQ3NTA0NzQ2ODA5MDllZGU2NGJjNjEuLjZmNmFkNzhhZTEw
ZWJhMDIwMzE5NmE0Mjk2MjFjMmU1ZjYyOTI3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXIuaApAQCAt
MjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFdl
Yk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU7CiAKIGNsYXNzIFdlYk1ldGFsQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyPiBjcmVhdGUoR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyJiYpOworICAgIHN0YXRpYyBSZWY8
V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI+IGNyZWF0ZShHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXImJik7CiAKICAgICB2b2lkIHNldENvbXB1dGVQaXBlbGluZVN0YXRlKFdlYk1l
dGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUmKTsKICAgICB2b2lkIHNldEJ1ZmZlcihXZWJNZXRhbEJ1
ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCk7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVuZEVuY29kaW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxD
b21wdXRlQ29tbWFuZEVuY29kZXIoR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyJiYpOworICAgIGV4
cGxpY2l0IFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKEdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2RlciYmKTsKIAotICAgIEdQVUNvbXB1dGVDb21tYW5kRW5jb2RlciBtX2VuY29kZXI7
CisgICAgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyIG1fZW5jb2RlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKaW5kZXggMTFiNTNiNTVh
MDBmNDNlM2IzZGQyNWM5YjNkY2ZlZWRjOTY4OTY2OC4uODUzMTA3ZjcwMzAwNGU4YTJmYWM0MzY4
MmUzZTM1ZTdlYjM5NGQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKQEAgLTMwLDEyICszMCwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGlu
ZVN0YXRlPiBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlOjpjcmVhdGUoR1BVQ29tcHV0ZVBp
cGVsaW5lU3RhdGUmJiBzdGF0ZSkKK1JlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBX
ZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlOjpjcmVhdGUoR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUmJiBzdGF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbENv
bXB1dGVQaXBlbGluZVN0YXRlKFdURk1vdmUoc3RhdGUpKSk7CiB9CiAKLVdlYk1ldGFsQ29tcHV0
ZVBpcGVsaW5lU3RhdGU6OldlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUoR1BVQ29tcHV0ZVBp
cGVsaW5lU3RhdGUmJiBzdGF0ZSkKK1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU6OldlYk1l
dGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUoR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBz
dGF0ZSkKICAgICA6IG1fc3RhdGUgeyBXVEZNb3ZlKHN0YXRlKSB9CiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0
YXRlLmgKaW5kZXggYmNlNDc4ZjJiNTI4N2NmYjI3ZTFlYjJjZDc4MDkxM2Y3MzExNTg2OS4uZjA0
ZmY1ZmUzNjM0MTBhZmUyOTJlZTRlOTJiZjNmNGY2NzAxODQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUu
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAi
R1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC0zNywxNCArMzcsMTQgQEAgY2xhc3MgV2ViTWV0YWxGdW5jdGlvbjsKIAog
Y2xhc3MgV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
Yk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
Yk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNyZWF0ZShHUFVDb21wdXRlUGlwZWxpbmVTdGF0
ZSYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNyZWF0
ZShHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYmKTsKIAotICAgIEdQVUNvbXB1dGVQaXBl
bGluZVN0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICBHUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZSYgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZShHUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZSYmKTsKKyAgICBleHBsaWNpdCBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRl
KEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlJiYpOwogCi0gICAgR1BVQ29tcHV0ZVBpcGVs
aW5lU3RhdGUgbV9zdGF0ZTsKKyAgICBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSBtX3N0
YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5j
cHAKaW5kZXggMjU5YjcwMzA5N2QwN2U2YWU2NTFlYjBjOTVlMTMwNTYyYjM0MDY0YS4uNTc3ODA2
Mzg3MjcyN2VhYzQxNGFhZTMwM2ExOGNkOTFiMTIyNmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0
b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIFdlYk1ldGFs
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjCiB2b2lkIFdl
Yk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oQ29t
cGFyZUZ1bmN0aW9uIG5ld0RlcHRoQ29tcGFyZUZ1bmN0aW9uKQogewogICAgIG1fZGVwdGhDb21w
YXJlRnVuY3Rpb24gPSBuZXdEZXB0aENvbXBhcmVGdW5jdGlvbjsKLSAgICBtX2Rlc2NyaXB0b3Iu
c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24odG9HUFVDb21wYXJlRnVuY3Rpb24obV9kZXB0aENvbXBh
cmVGdW5jdGlvbikpOworICAgIG1fZGVzY3JpcHRvci5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0
b0dQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKaW5kZXggYTNiNzk1
MGI1MmU4ODNmOWJhNWYzN2YxOWRhMjA3NTNjYjI1MGQ5My4uODA5YzFlYTg5NjFhNTBkZWQ2NTNm
N2M1YThjYWZjOTdkMmZkMWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKQEAgLTI3LDcgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxFbnVtcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXREZXB0aENvbXBhcmVGdW5jdGlvbihDb21wYXJlRnVuY3Rpb24pOwogCi0gICAgR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQor
ICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSB7IHJldHVy
biBtX2Rlc2NyaXB0b3I7IH0KIAogcHJpdmF0ZToKICAgICBXZWJNZXRhbERlcHRoU3RlbmNpbERl
c2NyaXB0b3IoKSA9IGRlZmF1bHQ7CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgLy8g
dGhlcmUgd291bGQgYmUgbm8gbmVlZCBmb3IgYSBkZWZhdWx0IHZhbHVlIGhlcmUuCiAKICAgICBX
ZWJNZXRhbENvbXBhcmVGdW5jdGlvbiBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uIHsgV2ViTWV0YWxD
b21wYXJlRnVuY3Rpb246OkFsd2F5cyB9OwotICAgIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3Ig
bV9kZXNjcmlwdG9yOworICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IgbV9kZXNj
cmlwdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcAppbmRl
eCA2YTk0N2ViNGQ3MDdjMjNhMTc5YTM5MzNkYjg2NzVjN2YxMmJkOTAwLi4wYTdjN2QyNGViZjQ3
NjNkYmVmZDZmYzUzOTNhMzI4MTg3OWQ0NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsRGVwdGhTdGVu
Y2lsU3RhdGU+IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShHUFVEZXB0aFN0ZW5j
aWxTdGF0ZSYmIHN0YXRlKQorUmVmPFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IFdlYk1ldGFs
RGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0
YXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUoV1RGTW92ZShzdGF0ZSkpKTsKIH0KIAotV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6V2Vi
TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQorV2Vi
TWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6V2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZShHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQogICAgIDogbV9zdGF0ZSB7IFdURk1vdmUoc3Rh
dGUpIH0KIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsRGVwdGhTdGVuY2lsU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsRGVwdGhTdGVuY2lsU3RhdGUuaAppbmRleCBmNDVjMmQ2ZDhkNWE5NzI2YzFjOWU2MTUwMDkx
ZWRjZTU5ODM4Yzk3Li4xYzk2ZjI5NTQ1ZTRlYTEyNmFjMWUwOWVlNzMzNWRkZjQzMjcyM2QwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNp
bFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0
ZW5jaWxTdGF0ZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAK
LSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURl
cHRoU3RlbmNpbFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKQEAgLTM1LDE3ICszNSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJN
ZXRhbERlcHRoU3RlbmNpbFN0YXRlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRh
bERlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoR1BVRGVwdGhTdGVuY2lsU3RhdGUmJik7CisgICAg
c3RhdGljIFJlZjxXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoR1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUmJik7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogCi0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUmIHN0
YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
JiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBX
ZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlKEdQVURlcHRoU3RlbmNpbFN0YXRlJiYpOworICAgIGV4
cGxpY2l0IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGUoR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3Rh
dGUmJik7CiAKLSAgICBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSBtX3N0YXRlOworICAgIEdQVUxlZ2Fj
eURlcHRoU3RlbmNpbFN0YXRlIG1fc3RhdGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEcmF3
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdhYmxlLmNw
cAppbmRleCA1N2Y3OTIxNzgxMDBjOGFhMTc5MjNhM2JiYzNlMzdjZjBjNTQ0YzA1Li41ZWQyZTll
YmRhMzgxOWJhY2IxOGNmMmQyZjQzNzA5NjhhYjYwMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdhYmxlLmNwcApAQCAtMjgsMTkgKzI4LDE5IEBACiAK
ICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCisjaW5jbHVk
ZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYk1ldGFsVGV4dHVyZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbERyYXdhYmxlPiBXZWJNZXRhbERyYXdh
YmxlOjpjcmVhdGUoR1BVRHJhd2FibGUmJiBkcmF3YWJsZSkKK1JlZjxXZWJNZXRhbERyYXdhYmxl
PiBXZWJNZXRhbERyYXdhYmxlOjpjcmVhdGUoR1BVTGVnYWN5RHJhd2FibGUmJiBkcmF3YWJsZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbERyYXdhYmxlKFdURk1vdmUoZHJh
d2FibGUpKSk7CiB9CiAKLVdlYk1ldGFsRHJhd2FibGU6OldlYk1ldGFsRHJhd2FibGUoR1BVRHJh
d2FibGUmJiBkcmF3YWJsZSkKK1dlYk1ldGFsRHJhd2FibGU6OldlYk1ldGFsRHJhd2FibGUoR1BV
TGVnYWN5RHJhd2FibGUmJiBkcmF3YWJsZSkKICAgICA6IG1fZHJhd2FibGUgeyBXVEZNb3ZlKGRy
YXdhYmxlKSB9Ci0gICAgLCBtX3RleHR1cmUgeyBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVU
ZXh0dXJlIHsgbV9kcmF3YWJsZSB9KSB9CisgICAgLCBtX3RleHR1cmUgeyBXZWJNZXRhbFRleHR1
cmU6OmNyZWF0ZShHUFVMZWdhY3lUZXh0dXJlIHsgbV9kcmF3YWJsZSB9KSB9CiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRHJhd2FibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRHJhd2FibGUuaAppbmRleCA1Mzdh
YjViODY3NzRhNTUzMDRkNjAwZGQ5ZDZlZjdjNzY5YWM0N2FjLi42NDliMjlmN2UyOTBlMWYzZmQ2
YzYwNWM0NTI3YzhmN2VkYWZjM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbERyYXdhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxEcmF3YWJsZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVU
QUwpCiAKLSNpbmNsdWRlICJHUFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdh
YmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTM4LDE1ICszOCwxNSBAQCBjbGFzcyBXZWJNZXRhbFRleHR1cmU7CiBjbGFzcyBXZWJN
ZXRhbERyYXdhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxEcmF3YWJsZT4gewogcHVi
bGljOgogICAgIH5XZWJNZXRhbERyYXdhYmxlKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbERy
YXdhYmxlPiBjcmVhdGUoR1BVRHJhd2FibGUmJik7CisgICAgc3RhdGljIFJlZjxXZWJNZXRhbERy
YXdhYmxlPiBjcmVhdGUoR1BVTGVnYWN5RHJhd2FibGUmJik7CiAKLSAgICBHUFVEcmF3YWJsZSYg
ZHJhd2FibGUoKSB7IHJldHVybiBtX2RyYXdhYmxlOyB9CisgICAgR1BVTGVnYWN5RHJhd2FibGUm
IGRyYXdhYmxlKCkgeyByZXR1cm4gbV9kcmF3YWJsZTsgfQogICAgIFdlYk1ldGFsVGV4dHVyZSYg
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IFdlYk1ldGFsRHJhd2FibGUoR1BVRHJhd2FibGUmJik7CisgICAgZXhwbGljaXQgV2Vi
TWV0YWxEcmF3YWJsZShHUFVMZWdhY3lEcmF3YWJsZSYmKTsKIAotICAgIEdQVURyYXdhYmxlIG1f
ZHJhd2FibGU7CisgICAgR1BVTGVnYWN5RHJhd2FibGUgbV9kcmF3YWJsZTsKICAgICBSZWY8V2Vi
TWV0YWxUZXh0dXJlPiBtX3RleHR1cmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbEVudW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsRW51bXMuY3BwCmluZGV4IDZhZDBhNDZlYzI3MmQzNWQ5NTM5MTA4MjMyYmM3
ZTA4YmY3MjhlOTIuLmQ3ZjkyNTU4NDZiYmM2M2E1NTc4ZGY2MDdmZDlmYjcyYmI5ZWE0ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVFbnVtcy5o
IgorI2luY2x1ZGUgIkdQVUxlZ2FjeUVudW1zLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc5LDI3ICs3OSwyNyBAQCBTdHJpbmcg
d2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIHZhbHVlKQog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1HUFVDb21wYXJlRnVuY3Rpb24gdG9HUFVD
b21wYXJlRnVuY3Rpb24oY29uc3QgV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24gdmFsdWUpCitHUFVM
ZWdhY3lDb21wYXJlRnVuY3Rpb24gdG9HUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24oY29uc3QgV2Vi
TWV0YWxDb21wYXJlRnVuY3Rpb24gdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IFdlYk1ldGFs
Q29tcGFyZUZ1bmN0aW9uOjpOZXZlcikKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlv
bjo6TmV2ZXI7CisgICAgICAgIHJldHVybiBHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb246Ok5ldmVy
OwogICAgIGlmICh2YWx1ZSA9PSBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbjo6TGVzcykKLSAgICAg
ICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TGVzczsKKyAgICAgICAgcmV0dXJuIEdQVUxl
Z2FjeUNvbXBhcmVGdW5jdGlvbjo6TGVzczsKICAgICBpZiAodmFsdWUgPT0gV2ViTWV0YWxDb21w
YXJlRnVuY3Rpb246OkVxdWFsKQotICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpF
cXVhbDsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw7CiAg
ICAgaWYgKHZhbHVlID09IFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCi0gICAg
ICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246Okxlc3NFcXVhbDsKKyAgICAgICAgcmV0dXJu
IEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6TGVzc0VxdWFsOwogICAgIGlmICh2YWx1ZSA9PSBX
ZWJNZXRhbENvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcikKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBh
cmVGdW5jdGlvbjo6R3JlYXRlcjsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5j
dGlvbjo6R3JlYXRlcjsKICAgICBpZiAodmFsdWUgPT0gV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246
Ok5vdGVxdWFsKQotICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RFcXVhbDsK
KyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6Tm90RXF1YWw7CiAgICAg
aWYgKHZhbHVlID09IFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWwpCi0gICAg
ICAgIHJldHVybiBHUFVDb21wYXJlRnVuY3Rpb246OkdyZWF0ZXJFcXVhbDsKKyAgICAgICAgcmV0
dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOwogICAgIGlmICh2YWx1
ZSA9PSBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbjo6QWx3YXlzKQotICAgICAgICByZXR1cm4gR1BV
Q29tcGFyZUZ1bmN0aW9uOjpBbHdheXM7CisgICAgICAgIHJldHVybiBHUFVMZWdhY3lDb21wYXJl
RnVuY3Rpb246OkFsd2F5czsKICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpOZXZlcjsKKyAgICByZXR1cm4gR1BVTGVnYWN5Q29t
cGFyZUZ1bmN0aW9uOjpOZXZlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxFbnVtcy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxFbnVtcy5oCmluZGV4IDI4MmM1MDYzYWZjMTc5
MDNkYWQ4ZjRkNDQ5ZDNhYjdjM2U0NjU5MGQuLjkxMTliMTIzZDBiYzYxMTBjZDIwZDEyOGRiMmFl
NmQyZjgyZjMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEVudW1z
LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNz
IEdQVUNvbXBhcmVGdW5jdGlvbjsKK2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9u
OwogCiBlbnVtIGNsYXNzIFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIHsKICAgICBOZXZlciwKQEAg
LTQ3LDcgKzQ3LDcgQEAgZW51bSBjbGFzcyBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbiB7CiAKIHN0
ZDo6b3B0aW9uYWw8V2ViTWV0YWxDb21wYXJlRnVuY3Rpb24+IHRvV2ViTWV0YWxDb21wYXJlRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKFdl
Yk1ldGFsQ29tcGFyZUZ1bmN0aW9uKTsKLUdQVUNvbXBhcmVGdW5jdGlvbiB0b0dQVUNvbXBhcmVG
dW5jdGlvbihXZWJNZXRhbENvbXBhcmVGdW5jdGlvbik7CitHUFVMZWdhY3lDb21wYXJlRnVuY3Rp
b24gdG9HUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24oV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24pOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxGdW5jdGlvbi5jcHAKaW5kZXggNDdiZDNhZGQwZTc2ZTg2ODllMWQ2YTc3Mzdl
YjQwZTdiNjhiNjg1NC4uNjA3MjdjOTA1ZThhZGQ2ODRkZTJmYzdhZGMxNmY0NWJmOGI2MzQwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5jcHAK
QEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRh
bEZ1bmN0aW9uPiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUoR1BVRnVuY3Rpb24mJiBmdW5jdGlv
bikKK1JlZjxXZWJNZXRhbEZ1bmN0aW9uPiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUoR1BVTGVn
YWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJN
ZXRhbEZ1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKLVdlYk1ldGFsRnVuY3Rpb246
OldlYk1ldGFsRnVuY3Rpb24oR1BVRnVuY3Rpb24mJiBmdW5jdGlvbikKK1dlYk1ldGFsRnVuY3Rp
b246OldlYk1ldGFsRnVuY3Rpb24oR1BVTGVnYWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICA6
IG1fZnVuY3Rpb24geyBXVEZNb3ZlKGZ1bmN0aW9uKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbEZ1bmN0aW9uLmgKaW5kZXggMmJhNjkyYzE0MzNiODg3Mzg1
MWJkYzU5NTEyNjZhYjdmNDEyYjhiNy4uNzAyNDVkYzNiMGFlNGVhYTI0NzVhNzhmOTQ5Y2FkM2M5
Nzg4YWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRnVuY3Rp
b24uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVk
ZSAiR1BVRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lGdW5jdGlvbi5oIgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzYsMTUgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV2ViTWV0YWxGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFs
RnVuY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsRnVuY3Rpb24+IGNy
ZWF0ZShHUFVGdW5jdGlvbiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsRnVuY3Rpb24+IGNy
ZWF0ZShHUFVMZWdhY3lGdW5jdGlvbiYmKTsKIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvbi5uYW1lKCk7IH0KLSAgICBjb25zdCBHUFVGdW5jdGlvbiYgZnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgY29uc3QgR1BVTGVnYWN5RnVu
Y3Rpb24mIGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFdlYk1ldGFsRnVuY3Rpb24oR1BVRnVuY3Rpb24mJik7CisgICAgZXhw
bGljaXQgV2ViTWV0YWxGdW5jdGlvbihHUFVMZWdhY3lGdW5jdGlvbiYmKTsKIAotICAgIEdQVUZ1
bmN0aW9uIG1fZnVuY3Rpb247CisgICAgR1BVTGVnYWN5RnVuY3Rpb24gbV9mdW5jdGlvbjsKIH07
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxMaWJyYXJ5LmNwcAppbmRleCBiNzkxNTZiZWUzODA0ZjhhODE0YmM4ZDQw
ZjVhNmRjMWU2MjExYzYyLi4zNjcyMzQ0ZjAyNzY3YTdhMGNkNWVhNDE1MTk3ODY5NzM1ZTYzMjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsTGlicmFyeS5jcHAK
QEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRh
bExpYnJhcnk+IFdlYk1ldGFsTGlicmFyeTo6Y3JlYXRlKEdQVUxpYnJhcnkmJiBsaWJyYXJ5LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCitSZWY8V2ViTWV0YWxMaWJyYXJ5PiBXZWJNZXRhbExp
YnJhcnk6OmNyZWF0ZShHUFVMZWdhY3lMaWJyYXJ5JiYgbGlicmFyeSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VDb2RlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFsTGlicmFyeShX
VEZNb3ZlKGxpYnJhcnkpLCBzb3VyY2VDb2RlKSk7CiB9CiAKLVdlYk1ldGFsTGlicmFyeTo6V2Vi
TWV0YWxMaWJyYXJ5KEdQVUxpYnJhcnkmJiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUpCitXZWJNZXRhbExpYnJhcnk6OldlYk1ldGFsTGlicmFyeShHUFVMZWdhY3lMaWJyYXJ5JiYg
bGlicmFyeSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQogICAgIDogbV9zb3VyY2VDb2RlIHsg
c291cmNlQ29kZSB9CiAgICAgLCBtX2xpYnJhcnkgeyBXVEZNb3ZlKGxpYnJhcnkpIH0KIHsKQEAg
LTUwLDcgKzUwLDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViTWV0YWxMaWJyYXJ5OjpmdW5jdGlvbk5h
bWVzKCkgY29uc3QKIAogUmVmUHRyPFdlYk1ldGFsRnVuY3Rpb24+IFdlYk1ldGFsTGlicmFyeTo6
ZnVuY3Rpb25XaXRoTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgR1BVRnVu
Y3Rpb24gZnVuY3Rpb24geyBtX2xpYnJhcnksIG5hbWUgfTsKKyAgICBHUFVMZWdhY3lGdW5jdGlv
biBmdW5jdGlvbiB7IG1fbGlicmFyeSwgbmFtZSB9OwogICAgIGlmICghZnVuY3Rpb24pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUo
V1RGTW92ZShmdW5jdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxMaWJyYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bExpYnJhcnkuaAppbmRleCBlOGUxMWQ5ZWYwOTZmOTZjYTc5YmY0ZjhjMTliOGZhOTdjYjYyMmE4
Li45ODc2YzIwYTBlODk5NWFhYzJjZTQ0ZGJkYmI4OGYxOTE5YWVlYTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuaApAQCAtMjcsNyArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVTGlicmFyeS5oIgorI2luY2x1
ZGUgIkdQVUxlZ2FjeUxpYnJhcnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBXZWJNZXRhbEZ1bmN0
aW9uOwogCiBjbGFzcyBXZWJNZXRhbExpYnJhcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRh
bExpYnJhcnk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsTGlicmFyeT4gY3Jl
YXRlKEdQVUxpYnJhcnkmJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKyAgICBzdGF0aWMg
UmVmPFdlYk1ldGFsTGlicmFyeT4gY3JlYXRlKEdQVUxlZ2FjeUxpYnJhcnkmJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlKTsKIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlQ29kZTsgfQogCkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgog
ICAgIFJlZlB0cjxXZWJNZXRhbEZ1bmN0aW9uPiBmdW5jdGlvbldpdGhOYW1lKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdlYk1ldGFsTGlicmFyeShHUFVMaWJyYXJ5JiYs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CisgICAgV2ViTWV0YWxMaWJyYXJ5KEdQVUxlZ2Fj
eUxpYnJhcnkmJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKIAogICAgIFN0cmluZyBtX3Nv
dXJjZUNvZGU7Ci0gICAgR1BVTGlicmFyeSBtX2xpYnJhcnk7CisgICAgR1BVTGVnYWN5TGlicmFy
eSBtX2xpYnJhcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwCmluZGV4IGU4ZTYxOGM2MjFlNGNjYjdkODM5OTJlMGU3ODM2ZjRkOTI2M2YxMTUuLmNj
NjgxYTk5ZjY4ZDQ5MmZkYjA5ZDdiYjkwMjhlMzk0ZDI2ZTdhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNs
dWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiR1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJNZXRhbEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYk1ldGFs
RGVwdGhTdGVuY2lsU3RhdGUuaCIKQEAgLTM4LDEyICszOCwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxXZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyPiBXZWJNZXRhbFJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJiBlbmNvZGVy
KQorUmVmPFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI+IFdlYk1ldGFsUmVuZGVyQ29tbWFu
ZEVuY29kZXI6OmNyZWF0ZShHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmIGVuY29kZXIp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rl
cihXVEZNb3ZlKGVuY29kZXIpKSk7CiB9CiAKLVdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6
OldlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIoR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJiBl
bmNvZGVyKQorV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6V2ViTWV0YWxSZW5kZXJDb21t
YW5kRW5jb2RlcihHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmIGVuY29kZXIpCiAgICAg
OiBtX2VuY29kZXIgeyBXVEZNb3ZlKGVuY29kZXIpIH0KIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaApp
bmRleCA5ZGVkN2FiZTQ1NzMyMTNlYjk1MzNlNjlmNDJiMGI4ZDllNzUxODYwLi5jYmU2NmZjNWE1
NDFmYjI4OTk5ZGZmMTNiM2VlNGFhMGIyZDE3OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlOwog
Y2xhc3MgV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
Yk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI+IHsKIHB1YmxpYzoKICAgICB+V2ViTWV0YWxSZW5k
ZXJDb21tYW5kRW5jb2RlcigpOwotICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxSZW5kZXJDb21tYW5k
RW5jb2Rlcj4gY3JlYXRlKEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyJiYpOworICAgIHN0YXRpYyBS
ZWY8V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKEdQVUxlZ2FjeVJlbmRlckNv
bW1hbmRFbmNvZGVyJiYpOwogCiAgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKFdlYk1l
dGFsUmVuZGVyUGlwZWxpbmVTdGF0ZSYpOwogICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUo
V2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZSYpOwpAQCAtNDksMTIgKzQ5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBjb3VudCk7CiAgICAgdm9pZCBlbmRFbmNvZGluZygpOwogCi0gICAgR1BVUmVuZGVy
Q29tbWFuZEVuY29kZXImIGVuY29kZXIoKSB7IHJldHVybiBtX2VuY29kZXI7IH0KKyAgICBHUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYgZW5jb2RlcigpIHsgcmV0dXJuIG1fZW5jb2Rlcjsg
fQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIo
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJD
b21tYW5kRW5jb2RlcihHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmKTsKIAotICAgIEdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyIG1fZW5jb2RlcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2RlciBtX2VuY29kZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKaW5kZXggMGZjNGJhYWE2MGZhYzc5
ZDViYWJjNGFjMmY5ODYzYjc2OThhZGYzYi4uM2VlZTc0NWI1YWRiZGZhYjcyZjMyZjQxYWRjMTky
YjA3YWUzOGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0
YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApA
QCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5o
IgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2luY2x1ZGUgIkdQVUxlZ2FjeVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJNZXRhbFRleHR1cmUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmgKaW5kZXggMjZiYzNlMGM3NWEyMjExMTQ2YzQzZWVhZmNjYWZiZDdlMDk4MzMxYy4uOTg1
ZDlkOGViMTZlZGNjNDNhYTNjYTQzZDQxZjMxMDcyOTM2ZGYxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3Mg
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxU
ZXh0dXJlOwogCiBjbGFzcyBXZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
PiB7CkBAIC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJNZXRhbFJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcigpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKCkgY29uc3QgPSAwOwogCiAgICAgUmVmUHRyPFdlYk1ldGFsVGV4dHVyZT4g
bV90ZXh0dXJlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5jcHAKaW5kZXggNjYyOGZmOTY3NGI5NjZhNWFkYTQ4YTUzM2VmYjRkNTY1MmIzMTY5YS4u
YWNlNDNkZGZkMjRhODk4YTgwYzBlMDQ3ZDIyMTMzYWNkYTc4NzFiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTI4LDI1ICsyOCwyNSBA
QAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2lu
Y2x1ZGUgIkdQVUxlZ2FjeVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJNZXRhbFRleHR1cmUuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdl
Yk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYk1ldGFsUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCitSZWY8V2ViTWV0YWxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6Y3JlYXRlKEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJN
ZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFdURk1vdmUoZGVzY3JpcHRv
cikpKTsKIH0KIAotV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
V2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCitXZWJNZXRhbFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yJiYgZGVzY3JpcHRvcikKICAgICA6IG1fZGVzY3JpcHRvciB7IFdURk1vdmUoZGVzY3JpcHRv
cikgfQogewogfQogCiBXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
Ojp+V2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpID0gZGVmYXVs
dDsKIAotY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBXZWJNZXRhbFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkgY29uc3QKK2Nv
bnN0IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgV2ViTWV0YWxSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZGVzY3JpcHRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaAppbmRleCBkMTAxZTdiZTUwMTA4NDU3ZDhlNTZkNjcyNGNkYTYzZDFk
ZmQzMDQ1Li5lNWY4YmFhODRjODQwZTkyYmViNzVkNjc1N2E2ZGViZDA5NjMwYjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
TWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTgg
KzM1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBwdWJsaWMgV2ViTWV0YWxSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYk1ldGFsUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1l
dGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKIAogICAgIFZlY3RvcjxmbG9hdD4g
Y2xlYXJDb2xvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8
ZmxvYXQ+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciYmKTsKKyAgICBleHBsaWNpdCBXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYp
OwogCi0gICAgY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7Cisg
ICAgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgbV9kZXNjcmlw
dG9yOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKaW5kZXggMDVjNWZiMjA0ZTVhZGJlMjQ2
ZTg5ZGQ1YTI0OTFiMjgzOTk0N2MwZi4uMDliMmI4ZWEzNzZkMWMzYmI2NWY0MDAxODc3ZDhiNTFl
Y2E4NzRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxX
ZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJNZXRhbFJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjcmVhdGUoR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorUmVmPFdlYk1ldGFsUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3I6OmNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihXVEZNb3ZlKGRlc2NyaXB0
b3IpKSk7CiB9CiAKLVdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OldlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorV2ViTWV0YWxSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcihHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvciYmIGRlc2NyaXB0b3IpCiAgICAgOiBtX2Rlc2NyaXB0b3IgeyBXVEZNb3ZlKGRlc2NyaXB0
b3IpIH0KIHsKIH0KQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBXZWJNZXRhbFJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckRlcHRoKGRvdWJsZSBuZXdDbGVhckQKICAg
ICBtX2Rlc2NyaXB0b3Iuc2V0Q2xlYXJEZXB0aChuZXdDbGVhckRlcHRoKTsKIH0KIAotY29uc3Qg
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBXZWJNZXRhbFJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkgY29uc3QKK2NvbnN0IEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZGVzY3JpcHRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuaAppbmRleCBiYTA5MDI5M2VlNDBmNmNkOGUxNzkzNTQ2OWU3ODk0MDE1MDkyNGUwLi4yMTc1
ODE2MGE1YWFhYzU4YTA1N2UzNTI0NjM5YzkzN2I4ZjhiODBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTggKzM1LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IgZmluYWwgOiBwdWJsaWMgV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYk1ldGFsUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvciYmKTsKIAogICAgIGRvdWJsZSBjbGVhckRlcHRoKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDbGVhckRlcHRoKGRvdWJsZSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBleHBsaWNpdCBXZWJNZXRhbFJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yJiYpOwogCi0gICAgY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgR1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJl
bmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bFJlbmRlclBhc3NEZXNjcmlwdG9yLmgKaW5kZXggMmUyMzg5YzlhNDczZTY3ZDdjNTBiZTMyNGI2
ZWMzNTFjMjYzNDY1Zi4uYmJhNDk0ZTM3ZDVkMWY3YzgzZGMwNzAxYzAwYmQxMWM3Nzc4YTVjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNz
RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1F
VEFMKQogCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYk1ldGFsUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJNZXRhbFJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciYgZGVwdGhBdHRhY2htZW50KCk7CiAgICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4mIGNvbG9y
QXR0YWNobWVudHMoKTsKIAotICAgIGNvbnN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yOyB9CisgICAgY29uc3QgR1BVTGVn
YWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rl
c2NyaXB0b3I7IH0KIAogcHJpdmF0ZToKICAgICBXZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9y
KCk7CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJNZXRh
bFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnRz
OwogICAgIFJlZlB0cjxXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
PiBtX2RlcHRoQXR0YWNobWVudDsKIAotICAgIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIG1fZGVz
Y3JpcHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmluZGV4IDVjNmQ5NjIwZjNhOThl
MmI5MWExMTRlMGZkMGZmYzhlZmMxYWNlODkuLjBlNTM0YzA5MDNjNzU3NjJmMjY1M2IzOWM0Zjk4
OTJjYzQxYjU2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZjxXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cj4gV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0
ZShHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNjcmlwdG9y
KQorUmVmPFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBX
ZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0
b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoV1RGTW92ZShkZXNjcmlwdG9yKSkpOwogfQogCi1XZWJN
ZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK1dlYk1ldGFsUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcihHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQogICAgIDogbV9kZXNjcmlwdG9yIHsgV1RGTW92ZShk
ZXNjcmlwdG9yKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaAppbmRleCBiNjZlZjUyNWM1MTExNzAxYmI1N2Y3MzU1MGU2ZTJmNjY2
NGU0NGRlLi5mYjg1NTgxMzE2NTUxN2M0Zjk2ZTk3OTY2Njk1NDlkYmZmOTUxNGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNSwxNSArMzUsMTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY3Jl
YXRlKEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBz
dGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
PiBjcmVhdGUoR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
JiYpOwogCiAgICAgdW5zaWduZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKICAgICB2b2lkIHNldFBp
eGVsRm9ybWF0KHVuc2lnbmVkKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbFJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3ImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYpOwogCi0gICAgR1BVUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRl
eCAwYzcxMjgwMWRlMjMzMjAwMTM5Y2M0ZGYxMGMxMWIwMmYyNWVjZDdlLi41NDFkNzExMmFmMzYw
ZWJhNDBhYmVjNWJjNzdjMjkxZmM3MGFiNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRl
ICJHUFVGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUZ1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiV2ViTWV0YWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYk1ldGFsUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCmluZGV4IDhhMDYyMDAwMDFjZmY1NDk4NTE3NzM5MjJmYzE4ZTgyOTVjNjcxMjYuLjlkNzAx
ODU3OWJhZGQ1ZjQ1ZTcyMzM2ZTVjZGI4MDQ5ZDc2YTY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5j
bHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBHUFVGdW5jdGlvbjsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKK2NsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uOworY2xhc3MgR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxGdW5jdGlvbjsKIGNsYXNzIFdl
Yk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOwogCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGNvbnN0IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRv
cjsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3Jp
cHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogCiBwcml2YXRlOgogICAgIFdlYk1ldGFs
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAK
ICAgICBWZWN0b3I8UmVmUHRyPFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnRzOwogCi0gICAgR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAKaW5kZXggMjEzOGJmZmRmMmQ4MTQyZDMwMzFiZTM4ZjYxMzNkY2RhYjIxOTRk
Zi4uZGQwZjA1NzZlMzY0OTZiZjBlZGY2YmViNzMxYzA0ZTJjODYxZDkxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5l
U3RhdGUuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3Rh
dGU6OmNyZWF0ZShHUFVSZW5kZXJQaXBlbGluZVN0YXRlJiYgc3RhdGUpCitSZWY8V2ViTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKFdURk1vdmUoc3RhdGUpKSk7CiB9
CiAKLVdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0
YXRlKEdQVVJlbmRlclBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkKK1dlYk1ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZTo6V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGUmJiBzdGF0ZSkKICAgICA6IG1fc3RhdGUgeyBXVEZNb3ZlKHN0YXRlKSB9CiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBp
cGVsaW5lU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVy
UGlwZWxpbmVTdGF0ZS5oCmluZGV4IDg4Zjc5OWRmNGUwYzViODlmYWE1ODM2YjQzNDI0OTAwNGQz
NzMwYzIuLmIxN2ZkM2IyMTFiZGU1YTI5ZGJiOTgwYTFmZDA3Zjc4ZDQyMGJhM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNp
bmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCkBAIC0zNSwxNyArMzUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
Yk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZT4gY3JlYXRlKEdQVVJlbmRlclBpcGVsaW5lU3RhdGUm
Jik7CisgICAgc3RhdGljIFJlZjxXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU+IGNyZWF0ZShH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiYpOwogCiAgICAgU3RyaW5nIGxhYmVsKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IEdQVVJl
bmRlclBpcGVsaW5lU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAg
IGNvbnN0IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyUGlw
ZWxpbmVTdGF0ZShHUFVSZW5kZXJQaXBlbGluZVN0YXRlJiYpOworICAgIGV4cGxpY2l0IFdlYk1l
dGFsUmVuZGVyUGlwZWxpbmVTdGF0ZShHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiYpOwog
Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSBtX3N0YXRlOworICAgIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lU3RhdGUgbV9zdGF0ZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCAxNjllYWJkNDdkZjYyYmQ1NmRhMTczYzZkNDI4NTIzNzBlMzZm
NjIwLi45MDQxM2VhMjQzNTNmNmYxZDc0YzdlZDEwMmVjZmE1MDY3NjkxM2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAiR1BVTGVn
YWN5RGV2aWNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViTWV0YWxCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbENvbW1hbmRRdWV1ZS5o
IgpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgY29uc3QgaW50IGtNYXhUZXh0dXJlU2l6ZSA9IDQw
OTY7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ+IFdlYk1ldGFs
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKIHsKLSAgICBHUFVE
ZXZpY2UgZGV2aWNlOworICAgIEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CiAKICAgICBpZiAoIWRl
dmljZSkgewogICAgICAgICAvLyBGSVhNRTogV2ViTWV0YWwgLSBkaXNwYXRjaCBhbiBldmVudCBo
ZXJlIGZvciB0aGUgZmFpbHVyZS4KQEAgLTg3LDcgKzg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
Yk1ldGFsUmVuZGVyaW5nQ29udGV4dD4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUo
Q2FudmEKICAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKIH0KIAotV2ViTWV0YWxSZW5kZXJp
bmdDb250ZXh0OjpXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBH
UFVEZXZpY2UmJiBkZXZpY2UpCitXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OldlYk1ldGFsUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIEdQVUxlZ2FjeURldmljZSYmIGRldmlj
ZSkKICAgICA6IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBt
X2RldmljZShXVEZNb3ZlKGRldmljZSkpCiB7CkBAIC0xNTMsNDIgKzE1Myw0MiBAQCB2b2lkIFdl
Yk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAK
IFJlZjxXZWJNZXRhbExpYnJhcnk+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlTGli
cmFyeShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsTGli
cmFyeTo6Y3JlYXRlKEdQVUxpYnJhcnkgeyBtX2RldmljZSwgc291cmNlQ29kZSB9LCBzb3VyY2VD
b2RlKTsKKyAgICByZXR1cm4gV2ViTWV0YWxMaWJyYXJ5OjpjcmVhdGUoR1BVTGVnYWN5TGlicmFy
eSB7IG1fZGV2aWNlLCBzb3VyY2VDb2RlIH0sIHNvdXJjZUNvZGUpOwogfQogCiBSZWY8V2ViTWV0
YWxSZW5kZXJQaXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJl
bmRlclBpcGVsaW5lU3RhdGUoV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRl
KEdQVVJlbmRlclBpcGVsaW5lU3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9y
KCkgfSk7CisgICAgcmV0dXJuIFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlw
dG9yKCkgfSk7CiB9CiAKIFJlZjxXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlPiBXZWJNZXRhbFJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYk1ldGFsRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gV2ViTWV0YWxEZXB0aFN0
ZW5jaWxTdGF0ZTo6Y3JlYXRlKEdQVURlcHRoU3RlbmNpbFN0YXRlIHsgbV9kZXZpY2UsIGRlc2Ny
aXB0b3IuZGVzY3JpcHRvcigpIH0pOworICAgIHJldHVybiBXZWJNZXRhbERlcHRoU3RlbmNpbFN0
YXRlOjpjcmVhdGUoR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUgeyBtX2RldmljZSwgZGVzY3Jp
cHRvci5kZXNjcmlwdG9yKCkgfSk7CiB9CiAKIFJlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0
YXRlPiBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZVN0YXRl
KFdlYk1ldGFsRnVuY3Rpb24mIGZ1bmN0aW9uKQogewotICAgIHJldHVybiBXZWJNZXRhbENvbXB1
dGVQaXBlbGluZVN0YXRlOjpjcmVhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUgeyBtX2Rldmlj
ZSwgZnVuY3Rpb24uZnVuY3Rpb24oKSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6Y3JlYXRlKEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlIHsgbV9kZXZp
Y2UsIGZ1bmN0aW9uLmZ1bmN0aW9uKCkgfSk7CiB9CiAKIFJlZjxXZWJNZXRhbENvbW1hbmRRdWV1
ZT4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVDb21tYW5kUXVldWUoKQogewotICAg
IHJldHVybiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUNvbW1hbmRRdWV1ZSB7IG1f
ZGV2aWNlIH0pOworICAgIHJldHVybiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUxl
Z2FjeUNvbW1hbmRRdWV1ZSB7IG1fZGV2aWNlIH0pOwogfQogCiBSZWY8V2ViTWV0YWxEcmF3YWJs
ZT4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpuZXh0RHJhd2FibGUoKQogewotICAgIHJldHVy
biBXZWJNZXRhbERyYXdhYmxlOjpjcmVhdGUoR1BVRHJhd2FibGUgeyBtX2RldmljZSB9KTsKKyAg
ICByZXR1cm4gV2ViTWV0YWxEcmF3YWJsZTo6Y3JlYXRlKEdQVUxlZ2FjeURyYXdhYmxlIHsgbV9k
ZXZpY2UgfSk7CiB9CiAKIFJlZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gV2ViTWV0YWxSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVCdWZmZXIoSlNDOjpBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCiB7Ci0gICAg
cmV0dXJuIFdlYk1ldGFsQnVmZmVyOjpjcmVhdGUoR1BVQnVmZmVyIHsgbV9kZXZpY2UsIGRhdGEg
fSk7CisgICAgcmV0dXJuIFdlYk1ldGFsQnVmZmVyOjpjcmVhdGUoR1BVTGVnYWN5QnVmZmVyIHsg
bV9kZXZpY2UsIGRhdGEgfSk7CiB9CiAKIFJlZjxXZWJNZXRhbFRleHR1cmU+IFdlYk1ldGFsUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlVGV4dHVyZShXZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewotICAgIHJldHVybiBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVUZXh0
dXJlIHsgbV9kZXZpY2UsIGRlc2NyaXB0b3IuZGVzY3JpcHRvcigpIH0pOworICAgIHJldHVybiBX
ZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVMZWdhY3lUZXh0dXJlIHsgbV9kZXZpY2UsIGRlc2Ny
aXB0b3IuZGVzY3JpcHRvcigpIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4
dC5oCmluZGV4IGNmYzcwYmQwOTZhZmQ5MTE4MWQzYzVmZGQ0YTE3NTJjMDU2MWNjMDMuLjUwY2Nk
NDY0MTc0ZTg1ZjhhY2E0ZTk2Yjc2ODI2Y2M3NmU5YTVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCiAjaW5jbHVkZSAiR1BVQmFzZWRDYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAi
R1BVTGVnYWN5RGV2aWNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlCdWZmZXJW
aWV3OwpAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViTWV0YWxCdWZm
ZXI+IGNyZWF0ZUJ1ZmZlcihKU0M6OkFycmF5QnVmZmVyVmlldyYpOwogICAgIFJlZjxXZWJNZXRh
bFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvciYpOwogCi0g
ICAgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZTsgfQor
ICAgIGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZp
Y2U7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFz
ZSYsIEdQVURldmljZSYmKTsKKyAgICBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFz
ZSYsIEdQVUxlZ2FjeURldmljZSYmKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CkBAIC04NSw3ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CiAgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogCi0gICAgR1BVRGV2aWNlIG1f
ZGV2aWNlOworICAgIEdQVUxlZ2FjeURldmljZSBtX2RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1
cmUuY3BwCmluZGV4IGNkYzNlMTZkM2U4ZjBlNjc4OTNkY2Y2N2I4ODBmNWU1YzMxMWFmM2IuLmU3
MDk5OTgzNWU3NWY4NjE0M2YyOGRlZGEwYmNkN2U3MzIwNmQ0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxUZXh0dXJlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsVGV4dHVyZT4gV2ViTWV0YWxU
ZXh0dXJlOjpjcmVhdGUoR1BVVGV4dHVyZSYmIHRleHR1cmUpCitSZWY8V2ViTWV0YWxUZXh0dXJl
PiBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVMZWdhY3lUZXh0dXJlJiYgdGV4dHVyZSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbFRleHR1cmUoV1RGTW92ZSh0ZXh0dXJl
KSkpOwogfQogCi1XZWJNZXRhbFRleHR1cmU6OldlYk1ldGFsVGV4dHVyZShHUFVUZXh0dXJlJiYg
dGV4dHVyZSkKK1dlYk1ldGFsVGV4dHVyZTo6V2ViTWV0YWxUZXh0dXJlKEdQVUxlZ2FjeVRleHR1
cmUmJiB0ZXh0dXJlKQogICAgIDogbV90ZXh0dXJlIHsgV1RGTW92ZSh0ZXh0dXJlKSB9CiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5oCmluZGV4IGJl
Y2I0YWEzZjFiMDk3ZjM0ZGQ5ZDZlMjQ3ZmExOGZmZmUwZTliZjcuLjMwYjdmNmNiNWRlMTA1MTg0
NmFiZDA3OTgyODM4MWYzYTI5N2U2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsVGV4dHVyZS5oCkBAIC0yNywyNyArMjcsMjcgQEAKIAogI2lmIEVOQUJMRShXRUJN
RVRBTCkKIAotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lUZXh0
dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7Citj
bGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViTWV0YWxUZXh0dXJl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxUZXh0dXJlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJNZXRhbFRleHR1cmU+IGNyZWF0ZShHUFVUZXh0dXJlJiYpOworICAgIHN0YXRp
YyBSZWY8V2ViTWV0YWxUZXh0dXJlPiBjcmVhdGUoR1BVTGVnYWN5VGV4dHVyZSYmKTsKIAogICAg
IHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlLndpZHRoKCk7IH0KICAg
ICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUuaGVpZ2h0KCk7IH0K
IAotICAgIGNvbnN0IEdQVVRleHR1cmUmIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmU7IH0KKyAgICBjb25zdCBHUFVMZWdhY3lUZXh0dXJlJiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0dXJlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxUZXh0dXJl
KEdQVVRleHR1cmUmJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxUZXh0dXJlKEdQVUxlZ2FjeVRl
eHR1cmUmJik7CiAKLSAgICBHUFVUZXh0dXJlIG1fdGV4dHVyZTsKKyAgICBHUFVMZWdhY3lUZXh0
dXJlIG1fdGV4dHVyZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9y
LmgKaW5kZXggYzQ1MDAyMjNlMWE1NGE2ZjZkNmVhNGNhNDEyMTZjYjgyNjY0YWI0Ny4uYzgzMjhk
YTMyODJjYTk3YmZiMmY3ZGFkYmI5MDA1MzgwYzkzMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZURlc2NyaXB0b3IuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01
NSwxMiArNTUsMTIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHVzYWdlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRVc2FnZSh1bnNpZ25lZCk7CiAKLSAgICBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIGNvbnN0IEdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9kZXNjcmlwdG9y
OyB9CiAKIHByaXZhdGU6CiAgICAgV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBw
aXhlbEZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBw
ZWQpOwogCi0gICAgR1BVVGV4dHVyZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAgIEdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYk1ldGFsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYk1ldGFsTGF5ZXIuaAppbmRleCA5MmMxNmZiNmYzNWI3MzM3ODNhYTk5NzkxMGY0ZTkx
MTdlYTY1OWQ0Li5hMDljNGEyMmZhMDkwYjEzOTI3MmYzOWZlNGViNGM4N2M4MmNkMThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTWV0
YWxMYXllci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR1BVRGV2aWNlOworY2xhc3MgR1BV
TGVnYWN5RGV2aWNlOwogfQogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpA
QCAtMzksMTMgKzM5LDEzIEBAIGNsYXNzIEdQVURldmljZTsKICNlbHNlCiBAaW50ZXJmYWNlIFdl
Yk1ldGFsTGF5ZXIgOiBDQUxheWVyIHsgLy8gRklYTUU6IFdlYk1ldGFsIC0gRGlzYWJsZSBXZWJN
ZXRhbCBvbiBpT1Mgc2ltdWxhdG9yPwogI2VuZGlmCi0gICAgV2ViQ29yZTo6R1BVRGV2aWNlKiBf
Y29udGV4dDsKKyAgICBXZWJDb3JlOjpHUFVMZWdhY3lEZXZpY2UqIF9jb250ZXh0OwogICAgIGZs
b2F0IF9kZXZpY2VQaXhlbFJhdGlvOwogfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYykgV2ViQ29y
ZTo6R1BVRGV2aWNlKiBjb250ZXh0OworQHByb3BlcnR5IChub25hdG9taWMpIFdlYkNvcmU6OkdQ
VUxlZ2FjeURldmljZSogY29udGV4dDsKIAotLSAoaWQpaW5pdFdpdGhHUFVEZXZpY2U6KFdlYkNv
cmU6OkdQVURldmljZSopY29udGV4dDsKKy0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3Jl
OjpHUFVMZWdhY3lEZXZpY2UqKWNvbnRleHQ7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25h
cHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExh
eWVyLm1tCmluZGV4IDkxYzAyMzM1NzM3Njg0MDEzMjFjZDM4ZGNhODk2Njc5N2UzZmFkYzQuLjNm
ZmRmMTlmNzdjM2Y5YmIzYTNkMTQyYTdhODJjNjgxNzEwNDlmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTWV0YWxMYXllci5tbQpA
QCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW1wb3J0ICJHUFVE
ZXZpY2UuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9GYXN0
TWFsbG9jLmg+CkBAIC0zOCw3ICszOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJNZXRhbExheWVy
CiAKIEBzeW50aGVzaXplIGNvbnRleHQ9X2NvbnRleHQ7CiAKLS0gKGlkKWluaXRXaXRoR1BVRGV2
aWNlOihXZWJDb3JlOjpHUFVEZXZpY2UqKWNvbnRleHQKKy0gKGlkKWluaXRXaXRoR1BVRGV2aWNl
OihXZWJDb3JlOjpHUFVMZWdhY3lEZXZpY2UqKWNvbnRleHQKIHsKICAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwogICAgIF9jb250ZXh0ID0gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY1ODEwYjY2MmY3ODQxZDdiYzU0MTUyZDA3YmUzZDdmZDFlZTljYjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxF
KFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQnVmZmVyOjp+
R1BVQnVmZmVyKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVCdWZmZXI6On5HUFVCdWZmZXIo
KSIpOwotfQotCi11bnNpZ25lZCBHUFVCdWZmZXI6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY29udGVudHMgPyBtX2NvbnRlbnRzLT5ieXRlTGVuZ3RoKCkgOiAwOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlODJlNjk0YTIxOTcyNjcyMjlhYjcyYTdmMGQ2M2M3MGVkMzhhZTFkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKLQot
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEFycmF5QnVmZmVyVmll
dzsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNz
IEdQVUJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgR1BVQnVmZmVyKGNvbnN0
IEdQVURldmljZSYsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3Jik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgfkdQVUJ1ZmZlcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Q7Ci0gICAgSlNDOjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRzLmdldCgpOyB9Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQnVmZmVyICpt
ZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi1wcml2YXRl
OgotI2lmIFVTRShNRVRBTCkKLSAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21ldGFsOwotI2Vu
ZGlmCi0gICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Ci19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIxZGZiMmM1YzY4M2FlZWRkNjIzYzkxMWJlY2QwYzM4
YzBhOGQ5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQ
VUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVDb21tYW5kQnVmZmVyOjp+R1BV
Q29tbWFuZEJ1ZmZlcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6
fkdQVUNvbW1hbmRCdWZmZXIoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21tYW5kQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZTY1OWZk
ZmJjYzcwNzQwOTY1MmVhNjJjY2NiOWQzNjBiZjkyMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUNvbW1hbmRCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29t
KQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVm
ZmVyKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21tYW5kUXVldWU7Ci1j
bGFzcyBHUFVEcmF3YWJsZTsKLQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlciB7Ci1wdWJsaWM6Ci0g
ICAgZXhwbGljaXQgR1BVQ29tbWFuZEJ1ZmZlcihjb25zdCBHUFVDb21tYW5kUXVldWUmLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGVkQ2FsbGJhY2spOwotICAgIH5HUFVDb21tYW5kQnVmZmVy
KCk7Ci0KLSAgICB2b2lkIGNvbW1pdCgpIGNvbnN0OwotICAgIHZvaWQgcHJlc2VudERyYXdhYmxl
KEdQVURyYXdhYmxlJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQ29tbWFuZEJ1
ZmZlciAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQot
I2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+
IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQ29tbWFuZFF1ZXVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlMTQ4
ZWViZjBjYjBlYTg2ZmY2ZDkwNWNiNDE4YmI4ZmQ1ZDYzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVQ29tbWFuZFF1ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVQ29tbWFuZFF1ZXVlOjp+R1BVQ29tbWFuZFF1ZXVlKCkKLXsKLSAgICBMT0coV2ViTWV0YWws
ICJHUFVDb21tYW5kUXVldWU6On5HUFVDb21tYW5kUXVldWUoKSIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZmQ5NmI2ODUwZWFiNzQ0YmE3ZjRjNDEzZGM5YWJiYjJkYzE3NTE5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kUXVldWUpOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotY2xhc3MgR1BVQ29tbWFuZFF1ZXVl
IHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHUFVDb21tYW5kUXVldWUo
Y29uc3QgR1BVRGV2aWNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUNvbW1hbmRRdWV1ZSgp
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotI2lmIFVTRShN
RVRBTCkKLSAgICBNVExDb21tYW5kUXVldWUgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
bC5nZXQoKTsgfQotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFp
blB0cjxNVExDb21tYW5kUXVldWU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUxNmVjNDcxNjM1ZGRmZmQ0NWRmMjcx
ZWE3NzU1Y2Y5ZmE0MTMxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIAotR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp+R1BVQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6On5H
UFVDb21wdXRlQ29tbWFuZEVuY29kZXIoKSIpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzEwN2UzMDhmM2Q5NTFkYTBlNjMxODhhZGFmNDg4MWJhNWY0YjEw
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExD
b21wdXRlQ29tbWFuZEVuY29kZXIpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFz
cyBHUFVCdWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BVQ29tcHV0ZVBp
cGVsaW5lU3RhdGU7Ci0KLXN0cnVjdCBHUFVTaXplOwotCi1jbGFzcyBHUFVDb21wdXRlQ29tbWFu
ZEVuY29kZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rl
cihjb25zdCBHUFVDb21tYW5kQnVmZmVyJik7Ci0gICAgfkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rl
cigpOwotCi0gICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVDb21wdXRl
UGlwZWxpbmVTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0QnVmZmVyKGNvbnN0IEdQVUJ1ZmZl
ciYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNwYXRjaChHUFVTaXpl
LCBHUFVTaXplKSBjb25zdDsKLSAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7Ci0KLSNpZiBV
U0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXI+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRiYjY2NzIzYjgzYjIyNmNjZWZkZWVkNmE3ODgyM2Q1YTIxYjA1ZDIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVp
Y2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVD
b21wdXRlUGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVk
ZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1HUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6fkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0
YWwsICJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZTo6fkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlKCki
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBl
bGluZVN0YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRjNTE4MjRiNDE0
N2E2ZDVhM2I1YTc4MjE3OTA0ZWM1ZjI3NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbXB1dGVQaXBlbGluZVN0YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwu
Y29tKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRnVuY3Rpb247Ci0KLWNs
YXNzIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZSgpID0gZGVmYXVsdDsKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25z
dCBHUFVEZXZpY2UmLCBjb25zdCBHUFVGdW5jdGlvbiYpOwotICAgIH5HUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZSgpOwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTENvbXB1dGVQaXBlbGluZVN0YXRl
ICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYg
VVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3Rh
dGU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYyOGIyMDQ1NWRhOTdiNmNhYjJmMDA2OGEwZTBlODU0YzQ3ZjBiNGMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvcjo6fkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRh
bCwgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
KCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmEwMTk5
ZTY0MTYxYzkzMzViODYwODgzNGNiOGE4MjliYTE1NGZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLU9CSkNfQ0xBU1MgTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUNvbXBhcmVGdW5jdGlvbjsKLQotY2xhc3Mg
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcigpOwotICAgIH5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7Ci0KLSAgICBi
b29sIGRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFdyaXRlRW5h
YmxlZChib29sKSBjb25zdDsKLQotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVQ29t
cGFyZUZ1bmN0aW9uKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNl
bmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmMwMGY5Nzg1NTlmMmI0OTU1NmFjZDQ0ZmYwZWUwNjJhODJj
NGUwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURlcHRoU3RlbmNpbFN0YXRl
Ojp+R1BVRGVwdGhTdGVuY2lsU3RhdGUoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVURlcHRo
U3RlbmNpbFN0YXRlOjp+R1BVRGVwdGhTdGVuY2lsU3RhdGUoKSIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDViZjNlMzIyYjcyMDE0YTMwNTgwMTg3MTc3ZjMzOGYyZDE3NDI1
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1P
QkpDX1BST1RPQ09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFzcyBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwot
Ci1jbGFzcyBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSB7Ci1wdWJsaWM6Ci0gICAgR1BVRGVwdGhTdGVu
Y2lsU3RhdGUoKSA9IGRlZmF1bHQ7Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BV
RGV2aWNlJiwgY29uc3QgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYpOwotICAgIH5HUFVEZXB0
aFN0ZW5jaWxTdGF0ZSgpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExE
ZXB0aFN0ZW5jaWxTdGF0ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9
Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTERl
cHRoU3RlbmNpbFN0YXRlPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdk
ZmI1NTE2YTQ2YmQ4MmQwMjk4NzcwNTA1Mjc3Y2MyMDU4NWQ0OTcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURldmlj
ZTo6fkdQVURldmljZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRGV2aWNlOjp+R1BVRGV2
aWNlKCkiKTsKLSAgICBkaXNjb25uZWN0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMmZlMWEzZTg3ZGIyN2M3
ZmYyOTFlMjgwZjM0MzFiZTk4MTU5NjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5
ZXI7Ci1PQkpDX0NMQVNTIFdlYk1ldGFsTGF5ZXI7Ci0KLU9CSkNfUFJPVE9DT0woTVRMRGV2aWNl
KTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2UgewotcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIEdQVURldmljZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVE
ZXZpY2UoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0K
LSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLQotI2lmIFVT
RShNRVRBTCkKLSAgICBXZWJNZXRhbExheWVyICpsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXIuZ2V0KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBDQUxheWVyICpwbGF0Zm9ybUxheWVyKCkg
Y29uc3Q7Ci0gICAgTVRMRGV2aWNlICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0
KCk7IH0KLSNlbmRpZgotCi0gICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgeyB9
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0g
ICAgUmV0YWluUHRyPFdlYk1ldGFsTGF5ZXI+IG1fbGF5ZXI7Ci0gICAgUmV0YWluUHRyPE1UTERl
dmljZT4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEcmF3YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RHJhd2FibGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmZhNzUwYWJmMTkz
MTBiZGFmNWViZTRlNGRmMjI2YTIzZTI2NmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEcmF3YWJsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkdQVURyYXdhYmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRHJhd2FibGU6On5H
UFVEcmF3YWJsZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6On5HUFVEcmF3
YWJsZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2FibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjc5OGNlZGJiNGE5MjI4YzM2YjM0ZmQ3MjBlYzc5
ODc3OTFjZWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERyYXdhYmxlKTsK
LU9CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVRGV2aWNlOwotCi1jbGFzcyBHUFVEcmF3YWJsZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGlj
aXQgR1BVRHJhd2FibGUoY29uc3QgR1BVRGV2aWNlJik7Ci0gICAgfkdQVURyYXdhYmxlKCk7Ci0K
LSAgICB2b2lkIHJlbGVhc2UoKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEcmF3YWJsZSAq
bWV0YWwoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIG5vdCBhbGwgZHJhd2Fi
bGVzIHNob3VsZCBoYXZlIHRoaXMuIE9ubHkgdGhlIGZyYW1lYnVmZmVyLgotICAgIE1UTFRleHR1
cmUgKnRleHR1cmUoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToK
LSAgICBSZXRhaW5QdHI8TVRMRHJhd2FibGU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUVudW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEyNGZmNDNkYTYzMjY5YTNhMjc1YmIzZjIwMTU1MmZlYzc0OTBiOWEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVudW1zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBj
bGFzcyBHUFVDb21wYXJlRnVuY3Rpb24gewotICAgIE5ldmVyID0gMCwKLSAgICBMZXNzID0gMSwK
LSAgICBFcXVhbCA9IDIsCi0gICAgTGVzc0VxdWFsID0gMywKLSAgICBHcmVhdGVyID0gNCwKLSAg
ICBOb3RFcXVhbCA9IDUsCi0gICAgR3JlYXRlckVxdWFsID0gNiwKLSAgICBBbHdheXMgPSA3Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVGdW5jdGlvbi5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDljODA3Nzc0MzMzM2ZjOGRiZTg2MDA1OGI0YzQyOGFkZDQ1MGY3
N2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIK
LQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVGdW5jdGlvbjo6fkdQVUZ1bmN0aW9uKCkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVGdW5jdGlvbjo6fkdQVUZ1bmN0aW9uKCkiKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ0NjA0MDIwYjc5ZDhhNzliYjk2MGU3NDEwNThlZTFkMzhhMzJjM2YuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0KLU9CSkNfUFJPVE9DT0woTVRMRnVuY3Rpb24pOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEdQVUxpYnJhcnk7Ci0KLWNsYXNzIEdQVUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBHUFVGdW5jdGlvbihjb25zdCBHUFVMaWJyYXJ5JiwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+R1BVRnVuY3Rpb24oKTsKLQotICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbmFtZSgpIGNv
bnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTEZ1bmN0aW9uICptZXRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0
ZToKLSAgICBSZXRhaW5QdHI8TVRMRnVuY3Rpb24+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYTQ1ZTM1MGFlZmI1ZmY1YTc2NzBkYTE4MmNhZjE1MjgxMmU4NTU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1
ZmZlci5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lC
dWZmZXIuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeUJ1ZmZlcjo6fkdQVUxlZ2FjeUJ1ZmZlcigpCit7CisgICAgTE9H
KFdlYk1ldGFsLCAiR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkiKTsKK30KKwordW5zaWduZWQgR1BV
TGVnYWN5QnVmZmVyOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzID8g
bV9jb250ZW50cy0+Ynl0ZUxlbmd0aCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mzg5MTgxN2JiOTRiN2RhOTc5MTMw
MzUwYzJlMGZjZDk3NTQ2NTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2Ns
YXNzIEdQVUxlZ2FjeUJ1ZmZlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVn
YWN5QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJW
aWV3Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2FjeUJ1ZmZlcigpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgSlNDOjpBcnJheUJ1ZmZl
ciogY29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgpOyB9CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgTVRMQnVmZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwu
Z2V0KCk7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lmIFVTRShNRVRBTCkKKyAgICBSZXRhaW5Q
dHI8TVRMQnVmZmVyPiBtX21ldGFsOworI2VuZGlmCisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IG1fY29udGVudHM7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTIxZDY1YjkwODNh
NTAyMTcyOTVmYmE4Y2U4MWI3ZmMwMmI3ZTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAo
eS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZEJ1
ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6On5HUFVMZWdh
Y3lDb21tYW5kQnVmZmVyKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kQnVmZmVy
Ojp+R1BVQ29tbWFuZEJ1ZmZlcigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2EzZTA4YzIzNTM2
ZWYwOWNkZDM5MzIxNWQ0ZTcxNjBlMDcyZTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHku
a2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9D
T0woTVRMQ29tbWFuZEJ1ZmZlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlOworY2xhc3MgR1BVTGVnYWN5RHJhd2FibGU7CisKK2NsYXNzIEdQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNv
bW1hbmRCdWZmZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRlZENhbGxiYWNrKTsKKyAgICB+R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcigpOwor
CisgICAgdm9pZCBjb21taXQoKSBjb25zdDsKKyAgICB2b2lkIHByZXNlbnREcmF3YWJsZShHUFVM
ZWdhY3lEcmF3YWJsZSYpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRC
dWZmZXIgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisK
KyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVy
PiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lDb21tYW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwNTI4MTgyYTBm
ZWVmOWZiMzcyMDVhYjYyYTc4Y2EwZjY5ZWI4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjp+R1BVTGVnYWN5Q29t
bWFuZFF1ZXVlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lDb21tYW5kUXVldWU6
On5HUFVMZWdhY3lDb21tYW5kUXVldWUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNmY4ZTJhODM0
MjBhNDcxMDQ4ZDNjYjcwNDk5OTE0MDY5YzUxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOworCitjbGFzcyBHUFVMZWdh
Y3lDb21tYW5kUXVldWUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNv
bnN0IFN0cmluZyYpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRRdWV1
ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lm
IFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4gbV9t
ZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZiN2M5ZTdlNWIzNDM4NjI5ZjM4Y2RiZjdhZGYyZmY5NzVjYWIyZjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUoV0VC
TUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2RlcigpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjp+R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhN2E5Njc3Y2ZkNmY1NTUwMDY5OWYzNmNl
YzE3MzlkOGFmY2EzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1
cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBHUFVMZWdhY3lCdWZmZXI7CitjbGFz
cyBHUFVMZWdhY3lDb21tYW5kQnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5l
U3RhdGU7CisKK3N0cnVjdCBHUFVMZWdhY3lTaXplOworCitjbGFzcyBHUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJik7CisgICAgfkdQVUxl
Z2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlcigpOworCisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAg
IHZvaWQgc2V0QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25l
ZCkgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaChHUFVMZWdhY3lTaXplLCBHUFVMZWdhY3lTaXpl
KSBjb25zdDsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwp
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0
YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI3
MDRmY2U1NWVkZWFjYzFjZmM0YTc4OWI4MzU1MWRiMjY2Y2RjNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0dQ
VUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRl
Ojp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKSIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMmI5MzAzNzAwOWZiODc1MDZhNjMzODUxNzJlZjUwNzc1ZmEzNmFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09C
SkNfUFJPVE9DT0woTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUpOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKK2NsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uOwor
CitjbGFzcyBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSB7CitwdWJsaWM6CisgICAgR1BV
TGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5Q29t
cHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5
RnVuY3Rpb24mKTsKKyAgICB+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKTsKKworI2lm
IFVTRShNRVRBTCkKKyAgICBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdCB7
IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBtX21ldGFsOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYzc5ZDZkZDYz
MTNjMmEzZDg3ZDI0NzkxZDc2YzgzODA1NDMxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQorewor
ICAgIExPRyhXZWJNZXRhbCwgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ5Y2JmMTgyNWQwOTA1NzM1ZTRlNDUwOWQxOTJiZTRhZTgyNjY3MDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3Mg
R1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
KCk7CisgICAgfkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKworICAgIGJvb2wg
ZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoV3JpdGVFbmFibGVk
KGJvb2wpIGNvbnN0OworCisgICAgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFy
ZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihHUFVM
ZWdhY3lDb21wYXJlRnVuY3Rpb24pIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTERl
cHRoU3RlbmNpbERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQo
KTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxN
VExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyN2Y1NGY3Y2JhODA2NGFhMjU5ZmU3NjJjOGRhZGRkMjUy
NDQ1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCIKKworI2lmIEVO
QUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRoU3RlbmNp
bFN0YXRlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZTo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjY0ZmY1NWE4NDY1OTk4MzZiZjg1ZDhmMzk5NDhlZTI2NmVmMzcxYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSB7
CitwdWJsaWM6CisgICAgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1bHQ7Cisg
ICAgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29u
c3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYpOworICAgIH5HUFVMZWdhY3lEZXB0
aFN0ZW5jaWxTdGF0ZSgpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExE
ZXB0aFN0ZW5jaWxTdGF0ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9
CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTERl
cHRoU3RlbmNpbFN0YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRlZmI2NzRm
ZDY0ZmIyYzQ5NWQzOWViODljOGNkZDZhOGZhYzRlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR1BVTGVnYWN5RGV2aWNlOjp+R1BVTGVnYWN5RGV2aWNlKCkKK3sKKyAgICBM
T0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UoKSIpOworICAg
IGRpc2Nvbm5lY3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lE
ZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lE
ZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NDZkMzViYTUxZjZjZTA2NWI2YjBjY2RiMTllZjE0ZjQ3OGU1
MWU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeURldmljZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQUxh
eWVyOworT0JKQ19DTEFTUyBXZWJNZXRhbExheWVyOworCitPQkpDX1BST1RPQ09MKE1UTERldmlj
ZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlIHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBHUFVMZWdhY3lEZXZpY2UoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB+R1BVTGVnYWN5RGV2aWNlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9w
ZXJhdG9yISgpIGNvbnN0OworCisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdo
dCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgV2ViTWV0YWxMYXllciAqbGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2xheWVyLmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgQ0FMYXll
ciAqcGxhdGZvcm1MYXllcigpIGNvbnN0OworICAgIE1UTERldmljZSAqbWV0YWwoKSBjb25zdCB7
IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworICAgIHZvaWQgbWFya0xheWVyQ29t
cG9zaXRlZCgpIGNvbnN0IHsgfQorCitwcml2YXRlOgorICAgIHZvaWQgZGlzY29ubmVjdCgpOwor
CisjaWYgVVNFKE1FVEFMKQorICAgIFJldGFpblB0cjxXZWJNZXRhbExheWVyPiBtX2xheWVyOwor
ICAgIFJldGFpblB0cjxNVExEZXZpY2U+IG1fbWV0YWw7CisjZW5kaWYKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDJmZGM1OWI0YTAwOTRkZmEwYWFkODI1YTY5ZGMwNjU3ZjFmMDlmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURyYXdhYmxl
LmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdh
YmxlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3
YWJsZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdh
Y3lEcmF3YWJsZSgpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lEcmF3YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmZmZTJlOWQ1OTkwZTZlMTgxNzk4YjAyYTNiMzFh
YWYxYjM5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJP
VE9DT0woTVRMRHJhd2FibGUpOworT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2NsYXNzIEdQVUxlZ2Fj
eURyYXdhYmxlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lEcmF3YWJsZShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmKTsKKyAgICB+R1BVTGVnYWN5RHJhd2FibGUoKTsKKworICAgIHZv
aWQgcmVsZWFzZSgpOworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTERyYXdhYmxlICptZXRhbCgp
IGNvbnN0OworCisgICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gbm90IGFsbCBkcmF3YWJsZXMgc2hv
dWxkIGhhdmUgdGhpcy4gT25seSB0aGUgZnJhbWVidWZmZXIuCisgICAgTVRMVGV4dHVyZSAqdGV4
dHVyZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxNVExEcmF3YWJsZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWUxOGQ0MjMwMzUw
YzhjZjU5MTg5YjQ0ZTAxMmZlOTIzMTM5OTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUVudW1zLmgKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIHsKKyAgICBOZXZlciA9IDAsCisg
ICAgTGVzcyA9IDEsCisgICAgRXF1YWwgPSAyLAorICAgIExlc3NFcXVhbCA9IDMsCisgICAgR3Jl
YXRlciA9IDQsCisgICAgTm90RXF1YWwgPSA1LAorICAgIEdyZWF0ZXJFcXVhbCA9IDYsCisgICAg
QWx3YXlzID0gNworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0ZDU0MjU4MGFjZDdkZTAwMTY3OGYwNzQ1YjE0YzQ4
NmVhMzIxZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdh
Y3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9uKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9uKCkiKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY5Njkw
YzU3OGFjNmExZWY2NzQ1MzgxOGE3NzRhZDhkN2I1NmQwMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5oCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExGdW5jdGlvbik7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5TGlicmFyeTsKKworY2xhc3MgR1BVTGVnYWN5
RnVuY3Rpb24geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdQVUxlZ2FjeUZ1bmN0aW9u
KGNvbnN0IEdQVUxlZ2FjeUxpYnJhcnkmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5HUFVMZWdhY3lGdW5jdGlvbigpOworCisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgTVRMRnVuY3Rpb24gKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
bC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFp
blB0cjxNVExGdW5jdGlvbj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5TGlicmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5TGlicmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMyYjM5
NjJkNzg1ZmUyNTAzOWVkZmM0MDQ1ZDUxNTA0NGZlMjdhMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcApA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJhcnkuaCIK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lMaWJyYXJ5Ojp+R1BVTGVnYWN5TGlicmFyeSgpCit7
CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5TGlicmFyeTo6fkdQVUxlZ2FjeUxpYnJhcnko
KSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTUwZGYzMTIyYmIyMDI1ZDEwOWU0NjRkYjEwMGYyZDdiOTY4YTZiMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lMaWJyYXJ5LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFM
KQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTExpYnJh
cnkpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKKwor
Y2xhc3MgR1BVTGVnYWN5TGlicmFyeSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BV
TGVnYWN5TGlicmFyeShjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lMaWJyYXJ5KCk7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPFN0cmluZz4gZnVuY3Rpb25OYW1lcygpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQor
ICAgIE1UTExpYnJhcnkgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQor
I2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExMaWJy
YXJ5PiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEzZTc0ODc1ZDdhOWJhMjlmMmIxMDE4OGVmMWU4ZTFmMDgxMTZjOTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNv
ZGVyKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6fkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmNlNjFlMDM3NWI1MjNjNjBhMDAxMDA3MGI1NTNiY2Y1ZDMwMDQ1Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19Q
Uk9UT0NPTChNVExSZW5kZXJDb21tYW5kRW5jb2Rlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR1BVTGVnYWN5QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjsK
K2NsYXNzIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOworY2xhc3MgR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3I7CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOworCitj
bGFzcyBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciB7CitwdWJsaWM6CisgICAgR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciYsIGNv
bnN0IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yJik7CisgICAgfkdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyKCk7CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29u
c3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0RGVw
dGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmKSBjb25zdDsK
KyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXImLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2b2lkIHNldEZyYWdtZW50QnVm
ZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5k
ZXgpIGNvbnN0OworICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgdHlwZSwgdW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCkg
Y29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYWY1ODEwN2MzZTNkYTAx
MjhjZmMwODM4ODkxODk5YTM1ZmNlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFM
KQorCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQorewor
ICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzYzc1MGQ0YjMx
MWE0ZWEyOTUyZDk3YzczZjg4MTA0MmQ0MDk3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQ
VUxlZ2FjeVRleHR1cmU7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvciB7CitwdWJsaWM6CisgICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcigpOworCisgICAgdW5zaWduZWQgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQg
c2V0TG9hZEFjdGlvbih1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBzdG9yZUFjdGlv
bigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmVBY3Rpb24odW5zaWduZWQpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRUZXh0dXJlKGNvbnN0IEdQVUxlZ2FjeVRleHR1cmUmKSBjb25zdDsKKworI2lm
IFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFs
KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yICopOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2E4MmU5NGQwODM2MjkzMjU1NTIxYWUwYzRlOTRmNThmZjVhZWQ1YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lN2U4NDFjOTFiZDI0NzNiMWM5N2ZkMjJlODUyNjY5MTBiZjk3
MzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1MgTVRMUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBw
dWJsaWMgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoK
KyNpZiBVU0UoTUVUQUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKik7CisjZW5k
aWYKKyAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsK
KworICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xl
YXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JikgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisg
ICAgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7
CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU5YThiNzNiM2U2OTg5YmM2NmIzZDM1NTZiMDcxMDMx
MDFiMmJlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmMxYWY3OTA1M2U2YzFmNjU2NzVlYzg4MWVjYjZj
Mjg5NTdjOGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAi
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1Mg
TVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IgOiBwdWJsaWMgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1
YmxpYzoKKyNpZiBVU0UoTUVUQUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKik7
CisjZW5kaWYKKyAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKKworICAgIGRvdWJsZSBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVh
ckRlcHRoKGRvdWJsZSkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIE1U
TFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2Vu
ZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MzZhN2I3MjNl
ZDQxMjdlZDUzNGUwM2NmNTE3OWE5ZTIyYTIxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0
b3IuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
IkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBh
c3NEZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIExP
RyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWU4MTY5MGJlZTFj
MjE3NjIwM2E1OTJhZDIyNjcxZmI0ZTRjOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9y
LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9y
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9y
IHsKK3B1YmxpYzoKKyAgICBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworICAgIH5H
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworCisgICAgVmVjdG9yPEdQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzKCkgY29u
c3Q7CisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZGVw
dGhBdHRhY2htZW50KCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3By
aXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtX21ldGFsOwor
I2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlNmUxMjJhMzVjMjg3MjEyNzRmOGJjZDVm
NDNiNDY3NTZhM2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBM
T0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQyYzYwMzQ2ODYzNzNkMTI5MDJkYjYyOTIwNzcwYmZiMDFjMWM1
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorI2lmIFVT
RShNRVRBTCkKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICopOworI2Vu
ZGlmCisgICAgfkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cigpOworCisgICAgdW5zaWduZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBp
eGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5k
aWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMWZkNjBjM2Y1YWI4
YmI4NjYwOWJjMjc1ZTAxOTJhNTI1YmE2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigp
Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+R1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYzA5MDdlODFmMGQxYzM0OTI0MmVkNWY4MjllM2VlMzNjODg5ZGYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JK
Q19DTEFTUyBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR1BVTGVnYWN5RnVuY3Rpb247CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKCk7CisgICAgfkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwor
CisgICAgdm9pZCBzZXRWZXJ0ZXhGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNv
bnN0OworICAgIHZvaWQgc2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlv
biYpIGNvbnN0OworCisgICAgdW5zaWduZWQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBj
b25zdDsKKyAgICB2b2lkIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBj
b25zdDsKKworICAgIFZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIHZvaWQgcmVzZXQo
KSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6Cisg
ICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRp
ZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTRmOWM2ZDgwOTU4M2E0NzI0
MzJhMWI2NjJkYjgzYzcwZmQxYTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6
On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0
ZSgpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTA5ZTZhNDhhMzQ4OGE0ZTli
YTI1ZmFmMjhlZTI3NzM4OGM1MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRl
KTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CitjbGFz
cyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUgeworcHVibGljOgorICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3ImKTsKKyAgICB+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpOworCisgICAgU3RyaW5n
IGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsK
KworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZVN0YXRlICptZXRhbCgpIGNv
bnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxN
VExSZW5kZXJQaXBlbGluZVN0YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5U2l6ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MGNlYTM1MWZi
OWQ2YTM4Y2FiMzY0Y2NjZTk3MWFkZTI4NDMyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5U2l6ZS5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3Vy
YUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgCitzdHJ1Y3QgR1BVTGVnYWN5U2l6ZSB7CisgICAgdW5zaWduZWQgd2lkdGg7Cisg
ICAgdW5zaWduZWQgaGVpZ2h0OworICAgIHVuc2lnbmVkIGRlcHRoOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDlj
YzJjODk0MWZhNzRhNmY3N2JkMjUxODc1ZTY5ZmU5OTA1MzQyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVRleHR1cmU6On5HUFVMZWdhY3lUZXh0dXJlKCkK
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVy
ZSgpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZWZlYzJlMjA3NmUxZmI3ODAzMmVlOWU3ODAyNWEyNzBhZjkwNDFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVRleHR1cmUuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVU
QUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMVGV4
dHVyZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOwor
Y2xhc3MgR1BVTGVnYWN5RHJhd2FibGU7CitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRv
cjsKKworY2xhc3MgR1BVTGVnYWN5VGV4dHVyZSB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4
dHVyZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvciYpOworICAgIGV4cGxpY2l0IEdQVUxlZ2FjeVRleHR1cmUoY29uc3QgR1BVTGVnYWN5RHJh
d2FibGUmKTsKKyAgICB+R1BVTGVnYWN5VGV4dHVyZSgpOworCisgICAgdW5zaWduZWQgd2lkdGgo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkK
KyAgICBNVExUZXh0dXJlICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwp
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiBtX21ldGFsOworI2VuZGlmCit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YmI1MDY5MjQxNWRlMzJjYTA2ZTQ1
YjI2OWJiOTQ4NjExOGZkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlRGVz
Y3JpcHRvcjo6fkdQVVRleHR1cmVEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODY0Nzk3M2U5MzJhNDhiNjIwNzUwODY3MWMzYTg1MTZhYTI2ZjIyMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lU
ZXh0dXJlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExUZXh0
dXJlRGVzY3JpcHRvcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lU
ZXh0dXJlRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IodW5zaWduZWQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IGJvb2wgbWlwbWFwcGVkKTsKKyAgICB+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IoKTsKKwor
ICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCkg
Y29uc3Q7CisKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkIHNldEhlaWdo
dCh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0U2FtcGxlQ291bnQodW5zaWduZWQpIGNvbnN0OworCisgICAgdW5zaWduZWQg
dGV4dHVyZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkKSBj
b25zdDsKKworICAgIHVuc2lnbmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRT
dG9yYWdlTW9kZSh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCB1c2FnZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0VXNhZ2UodW5zaWduZWQpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQor
ICAgIE1UTFRleHR1cmVEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBV
U0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxp
YnJhcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpYnJh
cnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGM2YzNjMzZmNDFkYzQ3ZTRj
NGE1OWIyMDY5MmYwNDRmYTc1NTM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaWJy
YXJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVTGlicmFyeS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxpYnJhcnk6On5HUFVMaWJyYXJ5
KCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMaWJyYXJ5Ojp+R1BVTGlicmFyeSgpIik7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGlicmFyeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpYnJhcnkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzRhYzQ0NjRlODQyYmM3ZjRkMDI3YjJiZjA0NTQ5NGUyZGFiNTdmMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGlicmFyeS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOwotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotY2xhc3MgR1BVTGlicmFyeSB7Ci1wdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgR1BVTGlicmFyeShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUNvZGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMaWJyYXJ5KCk7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFN0cmluZz4gZnVuY3Rpb25OYW1lcygpIGNvbnN0OwotCi0jaWYgVVNFKE1F
VEFMKQotICAgIE1UTExpYnJhcnkgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQo
KTsgfQotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxN
VExMaWJyYXJ5PiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NzQ2MWE4ZmVjNDRiOTM3OTZhZjI4NjAyNzEzMzQ3NWY0MTIw
ZDVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXI6On5HUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpCi17Ci0gICAgTE9HKFdlYk1ldGFs
LCAiR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5k
RW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWUyMDRhOGY5ZTMyNmE0
M2MxZWNiZTg5MTYzYmM4MzBhNzk0MTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1P
QkpDX1BST1RPQ09MKE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3Mg
R1BVRGVwdGhTdGVuY2lsU3RhdGU7Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLWNs
YXNzIEdQVVJlbmRlclBpcGVsaW5lU3RhdGU7Ci0KLWNsYXNzIEdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyIHsKLXB1YmxpYzoKLSAgICBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21t
YW5kQnVmZmVyJiwgY29uc3QgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKLSAgICB+R1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIoKTsKLQotICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShj
b25zdCBHUFVSZW5kZXJQaXBlbGluZVN0YXRlJikgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFN0
ZW5jaWxTdGF0ZShjb25zdCBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQg
c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OwotICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgR1BVQnVm
ZmVyJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBk
cmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291
bnQpIGNvbnN0OwotICAgIHZvaWQgZW5kRW5jb2RpbmcoKSBjb25zdDsKLQotI2lmIFVTRShNRVRB
TCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiBtX21l
dGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNjJmN2ZlNzczZjViMjA5OWVhNDZkOGJjOWQwMDll
YTk5NzdkZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYg
RU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAg
IExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDkyMzg1YTM4NjM1OWQzNTEy
MzZiOTg5ODc4YmVhNDgzYzBmMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi1PQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVUZXh0dXJlOwotCi1jbGFzcyBHUFVSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IgewotcHVibGljOgotICAgIH5HUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IoKTsKLQotICAgIHVuc2lnbmVkIGxvYWRBY3Rpb24oKSBjb25zdDsK
LSAgICB2b2lkIHNldExvYWRBY3Rpb24odW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQg
c3RvcmVBY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFN0b3JlQWN0aW9uKHVuc2lnbmVkKSBj
b25zdDsKLQotICAgIHZvaWQgc2V0VGV4dHVyZShjb25zdCBHUFVUZXh0dXJlJikgY29uc3Q7Ci0K
LSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICpt
ZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcm90ZWN0ZWQ6Ci0gICAg
ZXhwbGljaXQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvciAqKTsKLQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkZmIxNTU5YTZiYTdiY2Q4ODg2YmFhMmYyNjYwMDBhZDJkYzAxN2IyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFC
TEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjQ0NjEzZWY2YzBiODYwYjBl
N2Y3MDVlN2U3MzY3MzBkZGJmZDk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLU9CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSNpZiBVU0UoTUVUQUwpCi0gICAg
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgKik7Ci0jZW5kaWYKLSAgICB+R1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoKTsKLQotICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigp
IGNvbnN0OwotICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JikgY29u
c3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5
NDU3ZTcyMzRmY2E1Nzg3Yzk5MTM2MmQ1ZjcwMDAyNzU4YWViNWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyZmQ3OTIwMmQ3YzI2YmYyMDRmMDU2MmMwYWNhMzlh
OGIyYzkwZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKLQotT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBHUFVSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IgewotcHVibGljOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvciAqKTsKLSNlbmRpZgotICAgIH5HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcigpOwotCi0gICAgZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKLSAgICB2b2lkIHNl
dENsZWFyRGVwdGgoZG91YmxlKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0g
ICAgTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7
Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDczOTcxYmZmODc4YWRjZTYxYmJkYmRhY2JkNmEwNTVjNTQ4Mzc5NTQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOjp+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjlkNGUzZGQ5ODUwYWViOGNiNjk4YmNiMDEwMjQ3YWEyNGNkODI3
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAor
KysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNz
RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKLWNsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci1wdWJs
aWM6Ci0gICAgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLSAgICB+R1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IoKTsKLQotICAgIFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcj4gY29sb3JBdHRhY2htZW50cygpIGNvbnN0OwotICAgIEdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0OwotCi0jaWYgVVNF
KE1FVEFMKQotICAgIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2Vu
ZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExSZW5kZXJQ
YXNzRGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkODNiYTExMWQzNmQzYTA4MjM5NmMzOGMzY2ZiNDdkMmRlZTAzMWFhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVO
QUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJN
ZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE4MzZjZmYxNTU2MGY3ZGQ3Y2E2OWM1NjQzOTE2ZGRhYWYwNjYzMzAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTFJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ig
ewotcHVibGljOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yICopOwotI2VuZGlmCi0gICAgfkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcigpOwotCi0gICAgdW5zaWduZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKLSAgICB2b2lk
IHNldFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBN
VExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7
Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgot
fTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NGMxYzRjOWZiMTAxNDExOGFiZGJkYjEzZDdkOTc3YTliMTM2OWVmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
On5HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigp
Iik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YzVl
NjhhN2Y3MDIzNzg5MzM1ZmJkMmUwZTI1YzhkN2E4NmMxMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVGdW5jdGlvbjsKLWNsYXNzIEdQVVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSAgICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IoKTsKLSAgICB+R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICB2b2lkIHNl
dFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUZ1bmN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRG
cmFnbWVudEZ1bmN0aW9uKGNvbnN0IEdQVUZ1bmN0aW9uJikgY29uc3Q7Ci0KLSAgICB1bnNpZ25l
ZCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgVmVjdG9yPEdQVVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50cygp
IGNvbnN0OwotCi0gICAgdm9pZCByZXNldCgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAg
IE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0j
aWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yPiBtX21ldGFsOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhYWIyYjNlODIzNDJjZGI1OWM3ZDk3YmVlODM5MTNiOTlkNjk4ODIzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVy
UGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lU3RhdGU6
On5HUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlOjp+R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lU3RhdGUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY0YWZlZDE3MGRkY2M4ODFiYmE0MmVmZTI1MDY0
ZDgzYWU3YTcyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9D
T0woTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFz
cyBHUFVSZW5kZXJQaXBlbGluZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlKCkgPSBkZWZhdWx0OwotICAgIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BV
RGV2aWNlJiwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAgfkdQVVJl
bmRlclBpcGVsaW5lU3RhdGUoKTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAg
TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNF
KE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4g
bV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNpemUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY1OGYwODc4ZTVkN2E3YjJmMWFlODdjYzYx
ZjNmN2UzOGRlYzkyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2l6ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWlj
aGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0cnVjdCBHUFVTaXplIHsKLSAgICB1bnNp
Z25lZCB3aWR0aDsKLSAgICB1bnNpZ25lZCBoZWlnaHQ7Ci0gICAgdW5zaWduZWQgZGVwdGg7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZjExNDY5ZDRmMmExYTM4ODNlNGZhZWY2MTg0Y2U4MzRiMzQ5Mjk0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVVRleHR1cmU6On5HUFVUZXh0dXJlKCkKLXsKLSAgICBMT0coV2ViTWV0
YWwsICJHUFVUZXh0dXJlOjp+R1BVVGV4dHVyZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVRleHR1cmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3YTMxN2Iy
MmUyZmVhOTI2NmEzOGQwNDc1ODA3YzVmYmFmZDk5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BS
T1RPQ09MKE1UTFRleHR1cmUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURl
dmljZTsKLWNsYXNzIEdQVURyYXdhYmxlOwotY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0K
LWNsYXNzIEdQVVRleHR1cmUgewotcHVibGljOgotICAgIEdQVVRleHR1cmUoY29uc3QgR1BVRGV2
aWNlJiwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImKTsKLSAgICBleHBsaWNpdCBHUFVUZXh0
dXJlKGNvbnN0IEdQVURyYXdhYmxlJik7Ci0gICAgfkdQVVRleHR1cmUoKTsKLQotICAgIHVuc2ln
bmVkIHdpZHRoKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7Ci0KLSNpZiBV
U0UoTUVUQUwpCi0gICAgTVRMVGV4dHVyZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYg
VVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbV9tZXRhbDsK
LSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJjY2Y0
MjMxNjU2NDhlMDRlODY0YmViYzExYmQzNWM5OTU2MjdjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotCi0jaWYg
RU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUdQVVRleHR1cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURlc2NyaXB0b3IoKQot
ewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVRleHR1cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURl
c2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4
dHVyZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1ODcxZDY2
ZWQ5YTIxNjc3NWIyMjkwYmQ2OGUwZTMxYWIyZjUwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotT0JKQ19DTEFTUyBNVExUZXh0dXJlRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVUZXh0dXJlRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVVGV4dHVy
ZURlc2NyaXB0b3IodW5zaWduZWQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsKLSAgICB+R1BVVGV4dHVyZURlc2NyaXB0b3IoKTsK
LQotICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25l
ZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEhl
aWdodCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0
OwotICAgIHZvaWQgc2V0U2FtcGxlQ291bnQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWdu
ZWQgdGV4dHVyZVR5cGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVk
KSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRTdG9yYWdlTW9kZSh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCB1c2FnZSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0VXNhZ2UodW5zaWduZWQpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFM
KQotICAgIE1UTFRleHR1cmVEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNp
ZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRv
cj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzMGQ5
MzAzYjI2YTcwYWExMWYyNDk5NGMzMmJjZDdlMDI5ZGFhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVCdWZmZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4K
LSNpbXBvcnQgPHd0Zi9HaWdhY2FnZS5oPgotI2ltcG9ydCA8d3RmL1BhZ2VCbG9jay5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVmZmVyKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBjb25zdCBKU0M6OkFycmF5QnVmZmVyVmlldyYgZGF0YSkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVCdWZmZXI6OkdQVUJ1ZmZlcigpIik7Ci0KLSAgICBpZiAoIWRldmljZS5t
ZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHBhZ2VTaXplID0gV1RG
OjpwYWdlU2l6ZSgpOwotICAgIHNpemVfdCBwYWdlQWxpZ25lZFNpemUgPSByb3VuZFVwVG9NdWx0
aXBsZU9mKHBhZ2VTaXplLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci0gICAgdm9pZCogcGFnZUFsaWdu
ZWRDb3B5ID0gR2lnYWNhZ2U6OnRyeUFsaWduZWRNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
cGFnZVNpemUsIHBhZ2VBbGlnbmVkU2l6ZSk7Ci0gICAgaWYgKCFwYWdlQWxpZ25lZENvcHkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBtZW1jcHkocGFnZUFsaWduZWRDb3B5LCBkYXRhLmJhc2VBZGRy
ZXNzKCksIGRhdGEuYnl0ZUxlbmd0aCgpKTsKLSAgICBtX2NvbnRlbnRzID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRhdGEuYnl0ZUxlbmd0aCgpLCBbXSAo
dm9pZCogcHRyKSB7Ci0gICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJp
bWl0aXZlLCBwdHIpOwotICAgIH0pOwotICAgIG1fY29udGVudHMtPnJlZigpOwotICAgIEFycmF5
QnVmZmVyKiBjYXB0dXJlZENvbnRlbnRzID0gbV9jb250ZW50cy5nZXQoKTsKLSAgICBtX21ldGFs
ID0gYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5Om1fY29u
dGVudHMtPmRhdGEoKSBsZW5ndGg6cGFnZUFsaWduZWRTaXplIG9wdGlvbnM6TVRMUmVzb3VyY2VP
cHRpb25DUFVDYWNoZU1vZGVEZWZhdWx0IGRlYWxsb2NhdG9yOl4odm9pZCosIE5TVUludGVnZXIp
IHsKLSAgICAgICAgY2FwdHVyZWRDb250ZW50cy0+ZGVyZWYoKTsKLSAgICB9XSk7Ci0gICAgaWYg
KCFtX21ldGFsKSB7Ci0gICAgICAgIG1fY29udGVudHMtPmRlcmVmKCk7Ci0gICAgICAgIG1fY29u
dGVudHMgPSBudWxscHRyOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmNkM2RjMjM2ZTEyM2ZkNzhmZTU1NjE4ZDIwMzg4MDdjMTQ1ZTBmNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21tYW5kQnVmZmVy
LmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUNvbW1hbmRRdWV1ZS5o
IgotI2ltcG9ydCAiR1BVRHJhd2FibGUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQ29tbWFuZEJ1ZmZlcjo6
R1BVQ29tbWFuZEJ1ZmZlcihjb25zdCBHUFVDb21tYW5kUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGVkQ2FsbGJhY2spCi0gICAgOiBtX21ldGFsIHsgW3F1ZXVlLm1ldGFs
KCkgY29tbWFuZEJ1ZmZlcl0gfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbW1hbmRCdWZm
ZXI6OkdQVUNvbW1hbmRCdWZmZXIoKSIpOwotCi0gICAgW21fbWV0YWwgYWRkQ29tcGxldGVkSGFu
ZGxlcjpCbG9ja1B0cjx2b2lkIChpZDxNVExDb21tYW5kQnVmZmVyPik+Ojpmcm9tQ2FsbGFibGUo
W2NvbXBsZXRlZENhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFjayldIChpZDxNVExD
b21tYW5kQnVmZmVyPikgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92
ZShjb21wbGV0ZWRDYWxsYmFjaykpOwotICAgIH0pLmdldCgpXTsKLX0KLQotdm9pZCBHUFVDb21t
YW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoR1BVRHJhd2FibGUmIGRyYXdhYmxlKSBjb25zdAot
ewotICAgIGlmICghbV9tZXRhbCB8fCAhZHJhd2FibGUubWV0YWwoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgW21fbWV0YWwgcHJlc2VudERyYXdhYmxlOmRyYXdhYmxlLm1ldGFsKCldOwotICAg
IGRyYXdhYmxlLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb21taXQo
KSBjb25zdAotewotICAgIFttX21ldGFsIGNvbW1pdF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVDb21tYW5kUXVldWVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ZTJhMDBhN2ZmODcwYmQ4ZDNmOTI4OTYzMWEyNmVmZDhhMjU0ZmQy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tbWFu
ZFF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVURldmljZS5o
IgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldl
YktpdCI7Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9
IEAiY29tLmFwcGxlLldlYktpdC4iOwotCi1HUFVDb21tYW5kUXVldWU6OkdQVUNvbW1hbmRRdWV1
ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZp
Y2UubWV0YWwoKSBuZXdDb21tYW5kUXVldWVdKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
Q29tbWFuZFF1ZXVlOjpHUFVDb21tYW5kUXVldWUoKSIpOwotCi0gICAgW21fbWV0YWwgc2V0TGFi
ZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLX0KLQotU3RyaW5nIEdQVUNvbW1hbmRRdWV1
ZTo6bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0KLSAgICBOU1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxh
YmVsXTsKLQotICAgIGlmIChbcHJlZml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1
ZXVlRGVmYXVsdExhYmVsXSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBB
U1NFUlQocHJlZml4ZWRMYWJlbC5sZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5n
dGgpOwotICAgIHJldHVybiBbcHJlZml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFu
ZFF1ZXVlTGFiZWxQcmVmaXgubGVuZ3RoXTsKLX0KLQotdm9pZCBHUFVDb21tYW5kUXVldWU6OnNl
dExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1w
dHkoKSkKLSAgICAgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVs
XTsKLSAgICBlbHNlCi0gICAgICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJl
bFByZWZpeCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpsYWJlbF1dOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWV0YWwvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5NDRkN2Y4NGE1Yjk1
MTQxODgwYWM0MjJmNGI4NmE0Zjg2YjVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3Vy
YUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9y
dCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUu
aCIKLSNpbXBvcnQgIkdQVVNpemUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBNVExT
aXplIE1UTFNpemVNYWtlKEdQVVNpemUgc2l6ZSkKLXsKLSAgICByZXR1cm4geyBzaXplLndpZHRo
LCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCB9OwotfQotCi1HUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXI6OkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBidWZm
ZXIpCi0gICAgOiBtX21ldGFsIHsgW2J1ZmZlci5tZXRhbCgpIGNvbXB1dGVDb21tYW5kRW5jb2Rl
cl0gfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BV
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkiKTsKLX0KLQotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZVN0
YXRlJiBjb21wdXRlUGlwZWxpbmVTdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIWNvbXB1dGVQaXBl
bGluZVN0YXRlLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldENv
bXB1dGVQaXBlbGluZVN0YXRlOmNvbXB1dGVQaXBlbGluZVN0YXRlLm1ldGFsKCldOwotfQotICAg
IAotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBHUFVCdWZm
ZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAg
ICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBz
ZXRCdWZmZXI6YnVmZmVyLm1ldGFsKCkgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLX0K
LSAgICAKLXZvaWQgR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaChHUFVTaXplIHRo
cmVhZGdyb3Vwc1BlckdyaWQsIEdQVVNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKSBjb25zdAot
ewotICAgIFttX21ldGFsIGRpc3BhdGNoVGhyZWFkZ3JvdXBzOk1UTFNpemVNYWtlKHRocmVhZGdy
b3Vwc1BlckdyaWQpIHRocmVhZHNQZXJUaHJlYWRncm91cDpNVExTaXplTWFrZSh0aHJlYWRzUGVy
VGhyZWFkZ3JvdXApXTsKLX0KLQotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OmVuZEVu
Y29kaW5nKCkgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBlbmRFbmNvZGluZ107Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVQ29tcHV0ZVBpcGVsaW5l
U3RhdGVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3ODJlOTc3ZmRi
MGUxNGM3M2ZkNjFkMTgyZGE0ZGVjZGYwNWZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lr
dXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5o
IgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBv
cnQgIkdQVUZ1bmN0aW9uLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUNvbXB1dGVQaXBlbGluZVN0YXRl
OjpHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3Qg
R1BVRnVuY3Rpb24mIGZ1bmN0aW9uKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbXB1dGVQ
aXBlbGluZVN0YXRlOjpHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSgpIik7Ci0KLSAgICBpZiAoIWZ1
bmN0aW9uLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbWV0YWwgPSBhZG9wdE5T
KFtkZXZpY2UubWV0YWwoKSBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpmdW5j
dGlvbi5tZXRhbCgpIGVycm9yOm5pbF0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTg1YmM3MWM5N2E4NjUzMTM4NmVlMDQyZWVh
MzVhYjczY2Q5NDgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVRW51bXMuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCi0gICAgOiBtX21l
dGFsIHsgYWRvcHROUyhbTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Ci17Ci0gICAg
TE9HKFdlYk1ldGFsLCAiR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcigpIik7Ci19Ci0KLWJvb2wgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVw
dGhXcml0ZUVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3Jp
dGVFbmFibGVkXTsKLX0KLQotdm9pZCBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0
aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAotewotICAgIFtt
X21ldGFsIHNldERlcHRoV3JpdGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKLX0KLQot
R1BVQ29tcGFyZUZ1bmN0aW9uIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoQ29tcGFy
ZUZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQ29tcGFyZUZ1
bmN0aW9uPihbbV9tZXRhbCBkZXB0aENvbXBhcmVGdW5jdGlvbl0pOwotfQotCi12b2lkIEdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVG
dW5jdGlvbiBuZXdGdW5jdGlvbikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0
byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gdmFsdWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3Rpbmcg
dG8gTVRMQ29tcGFyZUZ1bmN0aW9uPwotICAgIFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0
aW9uOnN0YXRpY19jYXN0PE1UTENvbXBhcmVGdW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVEZXB0aFN0ZW5jaWxT
dGF0ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTgwYzc0Y2U1NDY3
ZGI5YjU5Mjc1OTlhMzcxMTQzN2FjZmM4NTM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgotCi0jaWYgRU5B
QkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCi0j
aW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HUFVEZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVRGVwdGhTdGVuY2lsU3RhdGUoY29u
c3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3RGVw
dGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKSB9Ci17Ci0g
ICAgTE9HKFdlYk1ldGFsLCAiR1BVRGVwdGhTdGVuY2lsU3RhdGU6OkdQVURlcHRoU3RlbmNpbFN0
YXRlKCkiKTsKLX0KLQotU3RyaW5nIEdQVURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQot
ICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVRGVwdGhTdGVuY2lsU3Rh
dGU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBN
VExEZXB0aFN0ZW5jaWxTdGF0ZSBwcm90b2NvbCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBs
YWJlbC4KLSAgICAvLyBUaGUgbGFiZWwgaGFzIHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3
aGVuIGNyZWF0aW5nIHRoZSBzdGF0ZSBvYmplY3QuCi0gICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVy
IGNoYW5naW5nIHRoZSBXZWJNZXRhbCBpbnRlcmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKLX0K
LSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVEZXZpY2VNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURldmljZU1ldGFsLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2VhM2Y3NzQ0NjRkZTM3ODU0N2NjNzU2Mjcz
MWJjZmNlNzYxMjFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURldmljZU1ldGFs
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BV
RGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIK
LSNpbXBvcnQgIldlYk1ldGFsTGF5ZXIuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+Ci0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVEZXZpY2U6OkdQVURl
dmljZSgpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2
aWNlKCkpIH0KLXsKLQotICAgIGlmICghbV9tZXRhbCkgewotICAgICAgICBMT0coV2ViTWV0YWws
ICJHUFVEZXZpY2U6OkdQVURldmljZSAtLSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkZXZpY2UuIFRo
aXMgdXN1YWxseSBtZWFucyBNZXRhbCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaGFyZHdhcmUu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMT0coV2ViTWV0YWwsICJHUFVEZXZp
Y2U6OkdQVURldmljZSBNZXRhbCBkZXZpY2UgaXMgJXAiLCBtX21ldGFsLmdldCgpKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbV9sYXllciA9IGFkb3B0TlMoW1tX
ZWJNZXRhbExheWVyIGFsbG9jXSBpbml0V2l0aEdQVURldmljZTp0aGlzXSk7Ci0gICAgW21fbGF5
ZXIgc2V0T3BhcXVlOjBdOwotICAgIFttX2xheWVyIHNldE5hbWU6QCJXZWJNZXRhbCBMYXllciJd
OwotCi0gICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gU2hvdWxkIHRoaXMgYmUgaW4gdGhlIFdlYk1l
dGFsTGF5ZXIgaW5pdGlhbGl6ZXI/Ci0gICAgW21fbGF5ZXIgc2V0RGV2aWNlOm1fbWV0YWwuZ2V0
KCldOwotICAgIFttX2xheWVyIHNldFBpeGVsRm9ybWF0Ok1UTFBpeGVsRm9ybWF0QkdSQThVbm9y
bV07Ci0gICAgW21fbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllFU107Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVRGV2aWNlOjpkaXNjb25uZWN0KCkKLXsK
LSAgICBtX2xheWVyLmdldCgpLmNvbnRleHQgPSBudWxscHRyOwotICAgIC8vIEZJWE1FOiBTaG91
bGQgd2UgYWxzbyBjbGVhciBvdXQgdGhlIGRldmljZSBwcm9wZXJ0eSwgd2hpY2ggaGFzIHRoZSBN
VExEZXZpY2U/Ci19Ci0KLXZvaWQgR1BVRGV2aWNlOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCkgY29uc3QKLXsKLSAgICBbbV9sYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3
aWR0aCwgaGVpZ2h0KV07Ci0gICAgW21fbGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uo
d2lkdGgsIGhlaWdodCldOwotCi0gICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gTG90cyBvZiByZXNo
YXBlIHN0dWZmIHNob3VsZCBnbyBoZXJlLiBTZWUgR0MzRC4KLX0KLQotQ0FMYXllciAqR1BVRGV2
aWNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsK
LX0KLQotYm9vbCBHUFVEZXZpY2U6Om9wZXJhdG9yISgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFt
X21ldGFsOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJhd2FibGVNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURyYXdhYmxl
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYWQ5OGFjYWMwMTRhMWRh
ZDYyNzYzMDliNDcyYmUxYTAxYzdiZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
RHJhd2FibGVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVURyYXdhYmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBv
cnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViTWV0YWxM
YXllci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURyYXdhYmxlOjpHUFVEcmF3YWJs
ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBbZGV2aWNlLmxheWVy
KCkgbmV4dERyYXdhYmxlXSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6OkdQ
VURyYXdhYmxlKCkiKTsKLX0KLQotdm9pZCBHUFVEcmF3YWJsZTo6cmVsZWFzZSgpCi17Ci0gICAg
TE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6OnJlbGVhc2UoKSIpOwotICAgIG1fbWV0YWwgPSBu
aWw7Ci19Ci0gICAgCi1NVExEcmF3YWJsZSAqR1BVRHJhd2FibGU6Om1ldGFsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKLX0KLQotTVRMVGV4dHVyZSAqR1BVRHJhd2FibGU6
OnRleHR1cmUoKSBjb25zdAotewotICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChDQU1ldGFsRHJhd2FibGUpXSkgewotICAgICAgICBBU1NFUlQoIW1fbWV0YWwp
OwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLSAgICByZXR1cm4gWyhpZDxDQU1ldGFsRHJh
d2FibGU+KW1fbWV0YWwuZ2V0KCkgdGV4dHVyZV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVGdW5jdGlvbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVRnVuY3Rpb25NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2E0YmUzYmYzYWE4MjRlNzBkNzZlNjc0YzhjZTYwOTE2OTBkMWJmYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVGdW5jdGlvbk1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVRnVuY3Rpb24uaCIKLQotI2lmIEVO
QUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGlicmFyeS5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUZ1bmN0aW9uOjpHUFVGdW5jdGlvbihj
b25zdCBHUFVMaWJyYXJ5JiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX21l
dGFsIHsgYWRvcHROUyhbbGlicmFyeS5tZXRhbCgpIG5ld0Z1bmN0aW9uV2l0aE5hbWU6bmFtZV0p
IH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVGdW5jdGlvbjo6R1BVRnVuY3Rpb24oKSIpOwot
fQotCi1TdHJpbmcgR1BVRnVuY3Rpb246Om5hbWUoKSBjb25zdAotewotICAgIGlmICghbV9tZXRh
bCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW21fbWV0YWwg
bmFtZV07Ci19Ci0KLWJvb2wgR1BVRnVuY3Rpb246Om9wZXJhdG9yISgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuICFtX21ldGFsOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5QnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lCdWZmZXJNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmMzZTM0YTQyNDgxOWIxOGNm
ZTA3YWEyMWMwNmE0NjIxZmIzNjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVyLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9n
Z2luZy5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0dpZ2FjYWdlLmg+CisjaW1wb3J0IDx3
dGYvUGFnZUJsb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5QnVmZmVy
OjpHUFVMZWdhY3lCdWZmZXIoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEpT
Qzo6QXJyYXlCdWZmZXJWaWV3JiBkYXRhKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUJ1ZmZl
cjo6R1BVQnVmZmVyKCkiKTsKKworICAgIGlmICghZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBzaXplX3QgcGFnZVNpemUgPSBXVEY6OnBhZ2VTaXplKCk7CisgICAg
c2l6ZV90IHBhZ2VBbGlnbmVkU2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2YocGFnZVNpemUsIGRh
dGEuYnl0ZUxlbmd0aCgpKTsKKyAgICB2b2lkKiBwYWdlQWxpZ25lZENvcHkgPSBHaWdhY2FnZTo6
dHJ5QWxpZ25lZE1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBwYWdlU2l6ZSwgcGFnZUFsaWdu
ZWRTaXplKTsKKyAgICBpZiAoIXBhZ2VBbGlnbmVkQ29weSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1lbWNweShwYWdlQWxpZ25lZENvcHksIGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVu
Z3RoKCkpOworICAgIG1fY29udGVudHMgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBh
Z2VBbGlnbmVkQ29weSwgZGF0YS5ieXRlTGVuZ3RoKCksIFtdICh2b2lkKiBwdHIpIHsKKyAgICAg
ICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CisgICAg
fSk7CisgICAgbV9jb250ZW50cy0+cmVmKCk7CisgICAgQXJyYXlCdWZmZXIqIGNhcHR1cmVkQ29u
dGVudHMgPSBtX2NvbnRlbnRzLmdldCgpOworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2Uu
bWV0YWwoKSBuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6bV9jb250ZW50cy0+ZGF0YSgpIGxlbmd0
aDpwYWdlQWxpZ25lZFNpemUgb3B0aW9uczpNVExSZXNvdXJjZU9wdGlvbkNQVUNhY2hlTW9kZURl
ZmF1bHQgZGVhbGxvY2F0b3I6Xih2b2lkKiwgTlNVSW50ZWdlcikgeworICAgICAgICBjYXB0dXJl
ZENvbnRlbnRzLT5kZXJlZigpOworICAgIH1dKTsKKyAgICBpZiAoIW1fbWV0YWwpIHsKKyAgICAg
ICAgbV9jb250ZW50cy0+ZGVyZWYoKTsKKyAgICAgICAgbV9jb250ZW50cyA9IG51bGxwdHI7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1
ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMmM2MDE1MjMyMDAxNTY1
MzY3ZjdhYmQzODdjMWJlMWY0ZTFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0K
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
ci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5k
UXVldWUuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisjaW1wb3J0ICJMb2dnaW5n
LmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxl
Z2FjeUNvbW1hbmRCdWZmZXI6OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3QgR1BVTGVnYWN5
Q29tbWFuZFF1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxiYWNr
KQorICAgIDogbV9tZXRhbCB7IFtxdWV1ZS5tZXRhbCgpIGNvbW1hbmRCdWZmZXJdIH0KK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKCkiKTsK
KworICAgIFttX21ldGFsIGFkZENvbXBsZXRlZEhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoaWQ8TVRM
Q29tbWFuZEJ1ZmZlcj4pPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0ZWRDYWxsYmFjayA9IFdURk1v
dmUoY29tcGxldGVkQ2FsbGJhY2spXSAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pIG11dGFibGUgewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGVkQ2FsbGJhY2spKTsKKyAg
ICB9KS5nZXQoKV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERy
YXdhYmxlKEdQVUxlZ2FjeURyYXdhYmxlJiBkcmF3YWJsZSkgY29uc3QKK3sKKyAgICBpZiAoIW1f
bWV0YWwgfHwgIWRyYXdhYmxlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFttX21l
dGFsIHByZXNlbnREcmF3YWJsZTpkcmF3YWJsZS5tZXRhbCgpXTsKKyAgICBkcmF3YWJsZS5yZWxl
YXNlKCk7Cit9CisKK3ZvaWQgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6Y29tbWl0KCkgY29uc3QK
K3sKKyAgICBbbV9tZXRhbCBjb21taXRdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMjMzZmY4MGY4ZDY3YjE1Njk0ODNlZTlmNDk1ZTk5ZjYwN2RjYzJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29t
bWFuZFF1ZXVlTWV0YWwubW0KQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQg
IkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZURlZmF1bHRMYWJl
bCA9IEAiY29tLmFwcGxlLldlYktpdCI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjb21tYW5k
UXVldWVMYWJlbFByZWZpeCA9IEAiY29tLmFwcGxlLldlYktpdC4iOworCitHUFVMZWdhY3lDb21t
YW5kUXVldWU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRl
dmljZSkKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdDb21tYW5k
UXVldWVdKSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjpH
UFVMZWdhY3lDb21tYW5kUXVldWUoKSIpOworCisgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFu
ZFF1ZXVlRGVmYXVsdExhYmVsXTsKK30KKworU3RyaW5nIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6
bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICBOU1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxhYmVs
XTsKKworICAgIGlmIChbcHJlZml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVl
RGVmYXVsdExhYmVsXSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBBU1NF
UlQocHJlZml4ZWRMYWJlbC5sZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgp
OworICAgIHJldHVybiBbcHJlZml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1
ZXVlTGFiZWxQcmVmaXgubGVuZ3RoXTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21tYW5kUXVldWU6
OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgaWYgKGxhYmVsLmlz
RW1wdHkoKSkKKyAgICAgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExh
YmVsXTsKKyAgICBlbHNlCisgICAgICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVM
YWJlbFByZWZpeCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpsYWJlbF1dOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTAyNmYyNTBiMjYzYmMwZmQw
NDI0OGJlZmFiN2Q3N2U3NjgzOWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0
YWwubW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGly
byBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXIuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9y
dCAiR1BVTGVnYWN5QnVmZmVyLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5U2l6ZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIE1UTFNpemUgTVRMU2l6
ZU1ha2UoR1BVTGVnYWN5U2l6ZSBzaXplKQoreworICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNp
emUuaGVpZ2h0LCBzaXplLmRlcHRoIH07Cit9CisKK0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5j
b2Rlcjo6R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1h
bmRCdWZmZXImIGJ1ZmZlcikKKyAgICA6IG1fbWV0YWwgeyBbYnVmZmVyLm1ldGFsKCkgY29tcHV0
ZUNvbW1hbmRFbmNvZGVyXSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIoKSIpOworfQor
Cit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5l
U3RhdGUoY29uc3QgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmIGNvbXB1dGVQaXBlbGlu
ZVN0YXRlKSBjb25zdAoreworICAgIGlmICghY29tcHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgW21fbWV0YWwgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6
Y29tcHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKV07Cit9CisgICAgCit2b2lkIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVm
ZmVyLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICgh
YnVmZmVyLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldEJ1ZmZl
cjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorICAgIAor
dm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoKEdQVUxlZ2FjeVNp
emUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgR1BVTGVnYWN5U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3Jv
dXApIGNvbnN0Cit7CisgICAgW21fbWV0YWwgZGlzcGF0Y2hUaHJlYWRncm91cHM6TVRMU2l6ZU1h
a2UodGhyZWFkZ3JvdXBzUGVyR3JpZCkgdGhyZWFkc1BlclRocmVhZGdyb3VwOk1UTFNpemVNYWtl
KHRocmVhZHNQZXJUaHJlYWRncm91cCldOworfQorCit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAoreworICAgIFttX21ldGFsIGVuZEVuY29k
aW5nXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5
MDUzMWVmNmRjZDBlMjU5NTE3NDBhYTdjMjIwNzUzMTliNDI1ZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lG
dW5jdGlvbi5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6
R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZp
Y2UsIGNvbnN0IEdQVUxlZ2FjeUZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBMT0coV2ViTWV0
YWwsICJHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUoKSIpOworCisgICAgaWYgKCFmdW5jdGlvbi5tZXRhbCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX21ldGFsID0gYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3Q29tcHV0ZVBp
cGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246ZnVuY3Rpb24ubWV0YWwoKSBlcnJvcjpuaWxdKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2Ny
aXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzkwMmIz
ZWMyODExZjkzM2ZkY2E2YmFiMGU1ZDM5YzllNWQwZDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2ls
RGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2ltcG9ydCAiR1BVTGVnYWN5RW51bXMuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVw
dGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCisg
ICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9
Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVw
dGhTdGVuY2lsRGVzY3JpcHRvcigpIik7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjo6ZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9t
ZXRhbCBpc0RlcHRoV3JpdGVFbmFibGVkXTsKK30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFi
bGVkKSBjb25zdAoreworICAgIFttX21ldGFsIHNldERlcHRoV3JpdGVFbmFibGVkOm5ld0RlcHRo
V3JpdGVFbmFibGVkXTsKK30KKworR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIEdQVUxlZ2FjeURl
cHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBk
ZXB0aENvbXBhcmVGdW5jdGlvbl0pOworfQorCit2b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlv
biBuZXdGdW5jdGlvbikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVj
ayBpZiB0aGUgZnVuY3Rpb24gdmFsdWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRM
Q29tcGFyZUZ1bmN0aW9uPworICAgIFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0
YXRpY19jYXN0PE1UTENvbXBhcmVGdW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0
ZW5jaWxTdGF0ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlZGI0MjA0MWNhOWEyNTVmM2VhMTZjNDFh
YjVhNzlmNTQ2MGZhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURlcHRoU3RlbmNp
bFN0YXRlOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2Um
IGRldmljZSwgY29uc3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdEZXB0aFN0ZW5j
aWxTdGF0ZVdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0YWwoKV0pIH0KK3sKKyAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVTGVnYWN5RGVwdGhTdGVu
Y2lsU3RhdGUoKSIpOworfQorCitTdHJpbmcgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworCisgICAgcmV0dXJuIFttX21ldGFsIGxhYmVsXTsKK30KKwordm9pZCBHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogVGhlIE1UTERlcHRoU3RlbmNpbFN0YXRlIHByb3RvY29sIGRvZXMgbm90IGFs
bG93IHNldHRpbmcgdGhlIGxhYmVsLgorICAgIC8vIFRoZSBsYWJlbCBoYXMgdG8gYmUgc2V0IG9u
IHRoZSBkZXNjcmlwdG9yIHdoZW4gY3JlYXRpbmcgdGhlIHN0YXRlIG9iamVjdC4KKyAgICAvLyBX
ZSBzaG91bGQgY29uc2lkZXIgY2hhbmdpbmcgdGhlIFdlYk1ldGFsIGludGVyZmFjZSB0byBub3Qg
cmVxdWlyZSB0aGlzIQorfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeURldmljZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5RGV2aWNlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE3NmZjOTdhNzE4OGZiNWZi
YzYwNjAzNjQ2MTFhMzAyMTE3MDZiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1tCkBAIC0wLDAg
KzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorCisjaWYgRU5B
QkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJNZXRhbExh
eWVyLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGV2aWNlOjpHUFVMZWdhY3lEZXZpY2UoKQor
ICAgIDogbV9tZXRhbCB7IGFkb3B0TlMoTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpKSB9
Cit7CisKKyAgICBpZiAoIW1fbWV0YWwpIHsKKyAgICAgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVn
YWN5RGV2aWNlOjpHUFVMZWdhY3lEZXZpY2UgLS0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGV2aWNl
LiBUaGlzIHVzdWFsbHkgbWVhbnMgTWV0YWwgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGhhcmR3
YXJlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTE9HKFdlYk1ldGFsLCAiR1BV
TGVnYWN5RGV2aWNlOjpHUFVMZWdhY3lEZXZpY2UgTWV0YWwgZGV2aWNlIGlzICVwIiwgbV9tZXRh
bC5nZXQoKSk7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIG1fbGF5
ZXIgPSBhZG9wdE5TKFtbV2ViTWV0YWxMYXllciBhbGxvY10gaW5pdFdpdGhHUFVEZXZpY2U6dGhp
c10pOworICAgIFttX2xheWVyIHNldE9wYXF1ZTowXTsKKyAgICBbbV9sYXllciBzZXROYW1lOkAi
V2ViTWV0YWwgTGF5ZXIiXTsKKworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIFNob3VsZCB0aGlz
IGJlIGluIHRoZSBXZWJNZXRhbExheWVyIGluaXRpYWxpemVyPworICAgIFttX2xheWVyIHNldERl
dmljZTptX21ldGFsLmdldCgpXTsKKyAgICBbbV9sYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhl
bEZvcm1hdEJHUkE4VW5vcm1dOworICAgIFttX2xheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNd
OworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEdQVUxlZ2FjeURl
dmljZTo6ZGlzY29ubmVjdCgpCit7CisgICAgbV9sYXllci5nZXQoKS5jb250ZXh0ID0gbnVsbHB0
cjsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFsc28gY2xlYXIgb3V0IHRoZSBkZXZpY2UgcHJv
cGVydHksIHdoaWNoIGhhcyB0aGUgTVRMRGV2aWNlPworfQorCit2b2lkIEdQVUxlZ2FjeURldmlj
ZTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Cit7CisgICAgW21fbGF5ZXIg
c2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFttX2xheWVy
IHNldERyYXdhYmxlU2l6ZTpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKKworICAgIC8vIEZJ
WE1FOiBXZWJNZXRhbCAtIExvdHMgb2YgcmVzaGFwZSBzdHVmZiBzaG91bGQgZ28gaGVyZS4gU2Vl
IEdDM0QuCit9CisKK0NBTGF5ZXIgKkdQVUxlZ2FjeURldmljZTo6cGxhdGZvcm1MYXllcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGV2
aWNlOjpvcGVyYXRvciEoKSBjb25zdAoreworICAgIHJldHVybiAhbV9tZXRhbDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFs
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiYWUxMzllNjNjMGIzNTIxOGE5NzQxMGNlMzQ4MjYyM2RkNzk0MmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNp
bXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAi
V2ViTWV0YWxMYXllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURyYXdh
YmxlOjpHUFVMZWdhY3lEcmF3YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKKyAg
ICA6IG1fbWV0YWwgeyBbZGV2aWNlLmxheWVyKCkgbmV4dERyYXdhYmxlXSB9Cit7CisgICAgTE9H
KFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdhYmxlKCkiKTsKK30K
Kwordm9pZCBHUFVMZWdhY3lEcmF3YWJsZTo6cmVsZWFzZSgpCit7CisgICAgTE9HKFdlYk1ldGFs
LCAiR1BVTGVnYWN5RHJhd2FibGU6OnJlbGVhc2UoKSIpOworICAgIG1fbWV0YWwgPSBuaWw7Cit9
CisgICAgCitNVExEcmF3YWJsZSAqR1BVTGVnYWN5RHJhd2FibGU6Om1ldGFsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworTVRMVGV4dHVyZSAqR1BVTGVnYWN5RHJh
d2FibGU6OnRleHR1cmUoKSBjb25zdAoreworICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChDQU1ldGFsRHJhd2FibGUpXSkgeworICAgICAgICBBU1NFUlQoIW1f
bWV0YWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gWyhpZDxDQU1l
dGFsRHJhd2FibGU+KW1fbWV0YWwuZ2V0KCkgdGV4dHVyZV07Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOTk5YzA2YmMzNGMxNzg5NGFjYjYxY2M3ZjM3NDk1NWVkYzE0YzU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
RnVuY3Rpb25NZXRhbC5tbQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVM
ZWdhY3lGdW5jdGlvbi5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVM
ZWdhY3lMaWJyYXJ5LmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRh
bC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5RnVuY3Rpb246OkdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2Fj
eUxpYnJhcnkmIGxpYnJhcnksIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IG1fbWV0YWwgeyBh
ZG9wdE5TKFtsaWJyYXJ5Lm1ldGFsKCkgbmV3RnVuY3Rpb25XaXRoTmFtZTpuYW1lXSkgfQorewor
ICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUZ1bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbigp
Iik7Cit9CisKK1N0cmluZyBHUFVMZWdhY3lGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX21ldGFsKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVy
biBbbV9tZXRhbCBuYW1lXTsKK30KKworYm9vbCBHUFVMZWdhY3lGdW5jdGlvbjo6b3BlcmF0b3Ih
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fbWV0YWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDg3MjYyODI1M2IyNjhhZjAwMGVhNzYzNjdiY2FlODZlYWYwOWU1YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJh
cnlNZXRhbC5tbQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lM
aWJyYXJ5LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURl
dmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeUxpYnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnko
Y29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkK
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lMaWJyYXJ5OjpHUFVMZWdhY3lMaWJyYXJ5
KCkiKTsKKworICAgIGlmICghZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldl
YktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxdOworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtk
ZXZpY2UubWV0YWwoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpzb3VyY2VDb2RlIG9wdGlvbnM6bmls
IGVycm9yOiZlcnJvcl0pOworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgTE9HKFdlYk1ldGFs
LCAiQ29tcGlsYXRpb24gZXJyb3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0g
VVRGOFN0cmluZ10pOworfQorCitTdHJpbmcgR1BVTGVnYWN5TGlicmFyeTo6bGFiZWwoKSBjb25z
dAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICByZXR1cm4gW21fbWV0YWwgbGFiZWxdOworfQorCit2b2lkIEdQVUxlZ2FjeUxpYnJhcnk6
OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbWV0
YWwpOworICAgIFttX21ldGFsIHNldExhYmVsOmxhYmVsXTsKK30KKworVmVjdG9yPFN0cmluZz4g
R1BVTGVnYWN5TGlicmFyeTo6ZnVuY3Rpb25OYW1lcygpIGNvbnN0Cit7CisgICAgYXV0byBhcnJh
eSA9IFttX21ldGFsIGZ1bmN0aW9uTmFtZXNdOworICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsK
KyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcnJheS5jb3VudCk7CisgICAgZm9y
IChOU1N0cmluZyAqc3RyaW5nIGluIGFycmF5KQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBw
ZW5kKHN0cmluZyk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5j
b2Rlck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZTVkNGZhZDQxMmNmMmYzYzc4MGIwYWRkZmRlZTFh
N2ZjMmZmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCkBAIC0wLDAg
KzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5o
IgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVnYWN5
RGVwdGhTdGVuY2lsU3RhdGUuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlw
dG9yLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIExPRyhXZWJN
ZXRhbCwgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2RlcigpIik7CisKKyAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9tZXRhbCA9IFtidWZmZXIubWV0YWwoKSByZW5kZXJDb21tYW5kRW5j
b2RlcldpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0YWwoKV07Cit9CisKK3ZvaWQgR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0ZSkgY29uc3QKK3sK
KyAgICBpZiAoIXJlbmRlclBpcGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW21fbWV0YWwgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQaXBlbGluZVN0YXRl
Lm1ldGFsKCldOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhT
dGVuY2lsU3RhdGUpIGNvbnN0Cit7CisgICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpk
ZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVy
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghYnVm
ZmVyLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldFZlcnRleEJ1
ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorCit2
b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25z
dCBHUFVMZWdhY3lCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK3sKKyAgICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBbbV9tZXRhbCBzZXRGcmFnbWVudEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zm
c2V0IGF0SW5kZXg6aW5kZXhdOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgY291bnQpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lh
bGx5IG9wdGltaXplZCBwYXRoIGZvciBjb3VudCBvZiAwPworICAgIGlmICghY291bnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFttX21ldGFsIGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1U
TFByaW1pdGl2ZVR5cGU+KHR5cGUpIHZlcnRleFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50
XTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2Rpbmco
KSBjb25zdAoreworICAgIFttX21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMyNWM5
ZjI5NzBlMmNmZDJhNjZkNjZhNGY0MTIzMmJhMWI2YTY2OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlLmgiCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yICptZXRhbCkKKyAgICA6IG1fbWV0YWwgeyBtZXRhbCB9Cit7CisgICAgTE9HKFdl
Yk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQorCit1bnNpZ25lZCBHUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBbbV9tZXRhbCBsb2FkQWN0aW9uXTsKK30KKwordm9pZCBHUFVMZWdhY3lS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24odW5zaWduZWQgbmV3
TG9hZEFjdGlvbikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmFuZ2UgY2hl
Y2sgZm9yIGxlZ2l0aW1hdGUgdmFsdWVzPworICAgIFttX21ldGFsIHNldExvYWRBY3Rpb246c3Rh
dGljX2Nhc3Q8TVRMTG9hZEFjdGlvbj4obmV3TG9hZEFjdGlvbildOworfQorCit1bnNpZ25lZCBH
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgc3RvcmVBY3Rpb25dOworfQorCit2b2lkIEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24odW5zaWdu
ZWQgbmV3U3RvcmVBY3Rpb24pIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJh
bmdlIGNoZWNrIGZvciBsZWdpdGltYXRlIHZhbHVlcz8KKyAgICBbbV9tZXRhbCBzZXRTdG9yZUFj
dGlvbjpzdGF0aWNfY2FzdDxNVExTdG9yZUFjdGlvbj4obmV3U3RvcmVBY3Rpb24pXTsKK30KKwor
dm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUo
Y29uc3QgR1BVTGVnYWN5VGV4dHVyZSYgdGV4dHVyZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBz
ZXRUZXh0dXJlOnRleHR1cmUubWV0YWwoKV07Cit9CisKK01UTFJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRh
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNWViZTE2NDU0OWVhOTg2M2FhMzcxZGI2MDRiNDViMzdlZDVlZjQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJGbG9hdENv
bnZlcnNpb24uaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yICptZXRhbCkKKyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvciB7IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IoKSIpOworfQorCitWZWN0b3I8ZmxvYXQ+IEdQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAg
ICBhdXRvKiBtZXRhbCA9IHRoaXMtPm1ldGFsKCk7CisgICAgaWYgKCFtZXRhbCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGF1dG8gY29sb3IgPSBbbWV0YWwgY2xlYXJDb2xvcl07CisgICAg
cmV0dXJuIHsgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5yZWQpLCBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KGNvbG9yLmdyZWVuKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5ibHVl
KSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5hbHBoYSkgfTsKK30KKwordm9pZCBHUFVM
ZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBuZXdDbGVhckNvbG9yKSBjb25zdAoreworICAgIGlmIChuZXdD
bGVhckNvbG9yLnNpemUoKSAhPSA0KQorICAgICAgICByZXR1cm47CisKKyAgICBbbWV0YWwoKSBz
ZXRDbGVhckNvbG9yOk1UTENsZWFyQ29sb3JNYWtlKG5ld0NsZWFyQ29sb3JbMF0sIG5ld0NsZWFy
Q29sb3JbMV0sIG5ld0NsZWFyQ29sb3JbMl0sIG5ld0NsZWFyQ29sb3JbM10pXTsKK30KKworTVRM
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YzNkYTNlYmNjMWYyNWFkZDc0NWYyZWQ0MWU5NWVkNmZlNDhmZGE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJH
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dp
bmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yICptZXRhbCkKKyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciB7IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IoKSIpOworfQorCitkb3VibGUgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIGF1dG8qIG1ldGFs
ID0gdGhpcy0+bWV0YWwoKTsKKyAgICBpZiAoIW1ldGFsKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBbbWV0YWwgY2xlYXJEZXB0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0Ns
ZWFyRGVwdGgpIGNvbnN0Cit7CisgICAgW21ldGFsKCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRl
cHRoXTsKK30KKworTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVUxl
Z2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yICo+KEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzQ1
ZWQ2Y2M5ZTIyY2U5OGZiOWQwNmRiZmI2NDdkZGJkNDgzYjJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQor
CisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
IgorI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
aCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yKCkKKyAgICA6IG1f
bWV0YWwgeyBhZG9wdE5TKFtNVExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAg
TE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yKCkiKTsKK30KKworVmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yPiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2ht
ZW50cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX21ldGFsKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBjb3JyZWN0IHRvIHJldHVybiBvbmUgY29sb3IgaGVy
ZT8KKyAgICByZXR1cm4geyB7IFtbbV9tZXRhbCBjb2xvckF0dGFjaG1lbnRzXSBvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHQ6MF0gfSB9OworfQorCitHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRh
Y2htZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgZGVwdGhBdHRhY2htZW50XTsK
K30KKworTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlw
dG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0M2M5NWJkMTk0YzY5MzVlMjNkMWRiZGEzYTRjOTE4YzYw
YjUzZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JN
ZXRhbC5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcihNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFs
KQorICAgIDogbV9tZXRhbCB7IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3Jt
YXQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBwaXhlbEZvcm1hdF07Cit9CisKK3Zv
aWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQ
aXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIGNoZWNrIGZvciBlbnVtZXJhdGlvbiB2YWx1ZXMgb3V0IG9mIHJhbmdlIGJl
Zm9yZSBjYWxsaW5nIHRoZSBtZXRob2Q/CisgICAgW21fbWV0YWwgc2V0UGl4ZWxGb3JtYXQ6c3Rh
dGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KG5ld1BpeGVsRm9ybWF0KV07Cit9CisKK01UTFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFs
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUwNWU4YWYyZWZkZTAzM2YwZTUxMzA3MjllZjRlMzY4YjIyMTViMTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24u
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cigpCisgICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IG5ld10pIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQo
KSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0
aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKK3sK
KyAgICBbbV9tZXRhbCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxN
VExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUZ1
bmN0aW9uJiBuZXdGdW5jdGlvbikgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5j
dGlvbjpuZXdGdW5jdGlvbi5tZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5RnVuY3Rp
b24mIG5ld0Z1bmN0aW9uKSBjb25zdAoreworICAgIFttX21ldGFsIHNldEZyYWdtZW50RnVuY3Rp
b246bmV3RnVuY3Rpb24ubWV0YWwoKV07Cit9CisKK1ZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoeSBp
cyBpdCBhbHdheXMgT0sgdG8gcmV0dXJuIGV4YWN0bHkgb25lIGF0dGFjaG1lbnQ/CisgICAgcmV0
dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OjBdIH0gfTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnJlc2V0KCkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCByZXNldF07Cit9CisKK01UTFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptZXRh
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQyMGZiODhhYmIyZGIwYjI2MjBjZDExOGRi
NzdhNTViMTllMDI0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0
YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmlj
ZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW1w
b3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdh
Y3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQorICAgIDogbV9tZXRhbCB7IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCkgZXJy
b3I6bmlsXSkgfQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKSIpOworfQorCitTdHJpbmcgR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9t
ZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIFttX21ldGFs
IGxhYmVsXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjpzZXRMYWJl
bChjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGUgTVRMUmVuZGVyUGlw
ZWxpbmVTdGF0ZSBwcm90b2NvbCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJlbC4KKyAg
ICAvLyBUaGUgbGFiZWwgaGFzIHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3aGVuIGNyZWF0
aW5nIHRoZSBzdGF0ZSBvYmplY3QuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5n
IHRoZSBXZWJNZXRhbCBpbnRlcmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKK30KKyAgICAKK01U
TFJlbmRlclBpcGVsaW5lU3RhdGUgKkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6Om1ldGFs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YWQzODg1ZjkyY2FhY2NiMzRkOGI3MzVhYTZhNzg5
OGJhMjZkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEs
MTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIgor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxN
ZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBwaXhlbEZvcm1h
dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpCisgICAg
OiBtX21ldGFsIHsgW01UTFRleHR1cmVEZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRo
UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBpeGVsRm9ybWF0KSB3aWR0
aDp3aWR0aCBoZWlnaHQ6aGVpZ2h0IG1pcG1hcHBlZDptaXBtYXBwZWRdIH0KK3sKKyAgICBMT0co
V2ViTWV0YWwsICJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6R1BVVGV4dHVyZURlc2NyaXB0b3IoKSIp
OworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBjb25z
dAoreworICAgIHJldHVybiBbbV9tZXRhbCB3aWR0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3I6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKSBjb25zdAoreworICAg
IEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRhbCBzZXRXaWR0aDpuZXdXaWR0aF07Cit9CisK
K3Vuc2lnbmVkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAorewor
ICAgIHJldHVybiBbbV9tZXRhbCBoZWlnaHRdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yOjpzZXRIZWlnaHQodW5zaWduZWQgbmV3SGVpZ2h0KSBjb25zdAoreworICAgIEFT
U0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRhbCBzZXRIZWlnaHQ6bmV3SGVpZ2h0XTsKK30KKwor
dW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gW21fbWV0YWwgc2FtcGxlQ291bnRdOworfQorCit2b2lkIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudCh1bnNpZ25lZCBuZXdTYW1wbGVDb3Vu
dCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tZXRhbCk7CisgICAgW21fbWV0YWwgc2V0U2FtcGxl
Q291bnQ6bmV3U2FtcGxlQ291bnRdOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVz
Y3JpcHRvcjo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCB0ZXh0
dXJlVHlwZV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1
cmVUeXBlKHVuc2lnbmVkIG5ld1RleHR1cmVUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChtX21l
dGFsKTsKKyAgICBbbV9tZXRhbCBzZXRUZXh0dXJlVHlwZTpzdGF0aWNfY2FzdDxNVExUZXh0dXJl
VHlwZT4obmV3VGV4dHVyZVR5cGUpXTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgc3Rv
cmFnZU1vZGVdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9y
YWdlTW9kZSh1bnNpZ25lZCBuZXdTdG9yYWdlTW9kZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBz
ZXRTdG9yYWdlTW9kZTpzdGF0aWNfY2FzdDxNVExTdG9yYWdlTW9kZT4obmV3U3RvcmFnZU1vZGUp
XTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgdXNhZ2VdOworfQorCit2b2lkIEdQVUxlZ2FjeVRl
eHR1cmVEZXNjcmlwdG9yOjpzZXRVc2FnZSh1bnNpZ25lZCBuZXdVc2FnZSkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9tZXRhbCk7CisgICAgW21fbWV0YWwgc2V0VXNhZ2U6bmV3VXNhZ2VdOworfQor
CitNVExUZXh0dXJlRGVzY3JpcHRvciAqR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6Om1ldGFs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MTExZWZlNmNkZDdjOWRlNzcyNjQ2MzViMDlkZWM3MGYxYTVmY2Q2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
VGV4dHVyZU1ldGFsLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxl
Z2FjeVRleHR1cmUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVn
YWN5RGV2aWNlLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lEcmF3YWJsZS5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5VGV4dHVy
ZTo6R1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3Qg
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVVGV4dHVyZTo6R1BVVGV4dHVyZSgpIik7CisKKyAgICBpZiAoIWRlc2NyaXB0b3Iu
bWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZXRhbCA9IGFkb3B0TlMoW2Rldmlj
ZS5tZXRhbCgpIG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsK
K30KKworR1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lE
cmF3YWJsZSYgb3RoZXIpCisgICAgOiBtX21ldGFsIHsgb3RoZXIudGV4dHVyZSgpIH0KK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlOjpHUFVUZXh0dXJlKCkiKTsKK30KKwordW5zaWdu
ZWQgR1BVTGVnYWN5VGV4dHVyZTo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFs
LmdldCgpLndpZHRoOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlOjpoZWlnaHQoKSBj
b25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgpLmhlaWdodDsKK30KKworTVRMVGV4dHVy
ZSAqR1BVTGVnYWN5VGV4dHVyZTo6bWV0YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFs
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFs
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1l
dGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmFkYjFhYTQ1ZWFhY2FkOTA3
MzZkODk5NDQ5NmI3MzJmZDNhNGU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxp
YnJhcnlNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkdQVUxpYnJhcnkuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGlicmFyeTo6R1BVTGlicmFyeShjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUxpYnJhcnk6OkdQVUxpYnJhcnkoKSIpOwotCi0gICAgaWYgKCFkZXZpY2Uu
bWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZv
Om5pbF07Ci0gICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0xpYnJhcnlX
aXRoU291cmNlOnNvdXJjZUNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYg
KCFtX21ldGFsKQotICAgICAgICBMT0coV2ViTWV0YWwsICJDb21waWxhdGlvbiBlcnJvcjogJXMi
LCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0KLVN0cmlu
ZyBHUFVMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19
Ci0KLXZvaWQgR1BVTGlicmFyeTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QK
LXsKLSAgICBBU1NFUlQobV9tZXRhbCk7Ci0gICAgW21fbWV0YWwgc2V0TGFiZWw6bGFiZWxdOwot
fQotCi1WZWN0b3I8U3RyaW5nPiBHUFVMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKLXsK
LSAgICBhdXRvIGFycmF5ID0gW21fbWV0YWwgZnVuY3Rpb25OYW1lc107Ci0gICAgVmVjdG9yPFN0
cmluZz4gdmVjdG9yOwotICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LmNv
dW50KTsKLSAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgaW4gYXJyYXkpCi0gICAgICAgIHZlY3Rv
ci51bmNoZWNrZWRBcHBlbmQoc3RyaW5nKTsKLSAgICByZXR1cm4gdmVjdG9yOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlckNvbW1hbmRF
bmNvZGVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NzU4M2IyNTY3
OWZhYTg0MmMxMGIwNzI1YWJkNTJlZDQxNTY2MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDk5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCi0K
LSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAi
R1BVQ29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCIKLSNp
bXBvcnQgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBl
bGluZVN0YXRlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVS
ZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIExPRyhXZWJNZXRh
bCwgIkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7
Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9tZXRhbCA9IFtidWZmZXIubWV0YWwoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlw
dG9yOmRlc2NyaXB0b3IubWV0YWwoKV07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSYg
cmVuZGVyUGlwZWxpbmVTdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIXJlbmRlclBpcGVsaW5lU3Rh
dGUubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwgc2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZTpyZW5kZXJQaXBlbGluZVN0YXRlLm1ldGFsKCldOwotfQotCi12b2lkIEdQVVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2lsU3RhdGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXB0aFN0
ZW5jaWxTdGF0ZS5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXRE
ZXB0aFN0ZW5jaWxTdGF0ZTpkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpXTsKLX0KLQotdm9pZCBH
UFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlciYg
YnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlm
ICghYnVmZmVyLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldFZl
cnRleEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwot
fQotCi12b2lkIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25z
dCBHUFVCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29u
c3QKLXsKLSAgICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBb
bV9tZXRhbCBzZXRGcmFnbWVudEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0
SW5kZXg6aW5kZXhdOwotfQotCi12b2lkIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJp
bWl0aXZlcyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNv
bnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lhbGx5IG9wdGltaXpl
ZCBwYXRoIGZvciBjb3VudCBvZiAwPwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFttX21ldGFsIGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFByaW1pdGl2ZVR5
cGU+KHR5cGUpIHZlcnRleFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsKLX0KLQotdm9p
ZCBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAotewotICAgIFtt
X21ldGFsIGVuZEVuY29kaW5nXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDkzOWE4YmMyODNjMTI0
ZDgyNTFlMzRkNTI1YTc5ZDZkMDk4Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAt
MSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVVGV4dHVy
ZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21f
bWV0YWwgbG9hZEFjdGlvbl07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yOjpzZXRMb2FkQWN0aW9uKHVuc2lnbmVkIG5ld0xvYWRBY3Rpb24pIGNvbnN0Ci17Ci0g
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdpdGltYXRlIHZhbHVl
cz8KLSAgICBbbV9tZXRhbCBzZXRMb2FkQWN0aW9uOnN0YXRpY19jYXN0PE1UTExvYWRBY3Rpb24+
KG5ld0xvYWRBY3Rpb24pXTsKLX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzdG9yZUFjdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHN0
b3JlQWN0aW9uXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFN0b3JlQWN0aW9uKHVuc2lnbmVkIG5ld1N0b3JlQWN0aW9uKSBjb25zdAotewotICAgIC8v
IEZJWE1FOiBTaG91bGQgdGhpcyByYW5nZSBjaGVjayBmb3IgbGVnaXRpbWF0ZSB2YWx1ZXM/Ci0g
ICAgW21fbWV0YWwgc2V0U3RvcmVBY3Rpb246c3RhdGljX2Nhc3Q8TVRMU3RvcmVBY3Rpb24+KG5l
d1N0b3JlQWN0aW9uKV07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmUmIHRleHR1cmUpIGNvbnN0Ci17Ci0gICAg
W21fbWV0YWwgc2V0VGV4dHVyZTp0ZXh0dXJlLm1ldGFsKCldOwotfQotCi1NVExSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IgKkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNjZDBmNDkwOTVjNDc0YjYyYWM3ZTk5OGJjNmVmYWExZmIzZWZiZTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0K
LSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgotI2lt
cG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
TVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQotICAgIDogR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJN
ZXRhbCwgIkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxmbG9hdD4gR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25zdAot
ewotICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsKLSAgICBpZiAoIW1ldGFsKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBjb2xvciA9IFttZXRhbCBjbGVhckNvbG9yXTsK
LSAgICByZXR1cm4geyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLnJlZCksIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoY29sb3IuZ3JlZW4pLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9y
LmJsdWUpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmFscGhhKSB9OwotfQotCi12b2lk
IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9yKGNv
bnN0IFZlY3RvcjxmbG9hdD4mIG5ld0NsZWFyQ29sb3IpIGNvbnN0Ci17Ci0gICAgaWYgKG5ld0Ns
ZWFyQ29sb3Iuc2l6ZSgpICE9IDQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttZXRhbCgpIHNl
dENsZWFyQ29sb3I6TVRMQ2xlYXJDb2xvck1ha2UobmV3Q2xlYXJDb2xvclswXSwgbmV3Q2xlYXJD
b2xvclsxXSwgbmV3Q2xlYXJDb2xvclsyXSwgbmV3Q2xlYXJDb2xvclszXSldOwotfQotCi1NVExS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKj4oR1BVUmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NjQ3MmU5M2U0YjNiZmQ3OGUzZDRmODdhMGI4YzM3ODI3ZWMyNDg5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
TWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxF
KFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkKLSAgICA6IEdQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciB7IG1ldGFsIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IoKSIpOwotfQotCi1kb3VibGUgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAotewotICAgIGF1dG8qIG1ldGFsID0gdGhp
cy0+bWV0YWwoKTsKLSAgICBpZiAoIW1ldGFsKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJl
dHVybiBbbWV0YWwgY2xlYXJEZXB0aF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpIGNv
bnN0Ci17Ci0gICAgW21ldGFsKCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRlcHRoXTsKLX0KLQot
TVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRh
bC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE4ZGQ3MTU3NzMzNTZmNGM3OGRl
NjRjNGI1ZmUzY2Q0NDVmNTJkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRv
cHROUyhbTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgbmV3XSkgfQotewotICAgIExPRyhXZWJNZXRh
bCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIik7
Ci19Ci0KLVZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAotewotICAgIGlm
ICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIC8vIEZJWE1FOiBXaHkgaXMg
aXQgY29ycmVjdCB0byByZXR1cm4gb25lIGNvbG9yIGhlcmU/Ci0gICAgcmV0dXJuIHsgeyBbW21f
bWV0YWwgY29sb3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsK
LX0KLQotR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OmRlcHRoQXR0YWNobWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21l
dGFsIGRlcHRoQXR0YWNobWVudF07Ci19Ci0KLU1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICpHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFs
LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljYWYxNTUzZDAx
ZDE5NzRmMzU5MmY1N2JjNzhkMTFkYTkxYzg3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFM
KQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBtX21ldGFs
IHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFs
IHBpeGVsRm9ybWF0XTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KHVuc2lnbmVkIG5ld1BpeGVsRm9ybWF0KSBjb25z
dAotewotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hlY2sgZm9yIGVudW1lcmF0aW9uIHZhbHVl
cyBvdXQgb2YgcmFuZ2UgYmVmb3JlIGNhbGxpbmcgdGhlIG1ldGhvZD8KLSAgICBbbV9tZXRhbCBz
ZXRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQp
XTsKLX0KLQotTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICpHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZDAwMjk5NzJmZmQwMDU0ZmRkZWY0
YzA5MmRiZTcwMWFiZGQyMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVRnVuY3Rpb24uaCIKLSNpbXBvcnQgIkdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9n
Z2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRM
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigp
Iik7Ci19Ci0KLXVuc2lnbmVkIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRh
Y2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBkZXB0aEF0
dGFjaG1lbnRQaXhlbEZvcm1hdF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1h
dCkgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpz
dGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKLX0KLQotdm9pZCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUZ1
bmN0aW9uJiBuZXdGdW5jdGlvbikgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5j
dGlvbjpuZXdGdW5jdGlvbi5tZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgR1BVRnVuY3Rpb24mIG5ld0Z1bmN0
aW9uKSBjb25zdAotewotICAgIFttX21ldGFsIHNldEZyYWdtZW50RnVuY3Rpb246bmV3RnVuY3Rp
b24ubWV0YWwoKV07Ci19Ci0KLVZlY3RvcjxHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50
cygpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBhbHdheXMgT0sgdG8gcmV0dXJu
IGV4YWN0bHkgb25lIGF0dGFjaG1lbnQ/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JB
dHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotdm9pZCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkgY29uc3QKLXsKLSAgICBbbV9tZXRh
bCByZXNldF07Ci19Ci0KLU1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0
YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVS
ZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNlMmRmNmEwMWJkMGQzZDc3NzIzMTRjN2Q5ODhlYTRjYzJjN2NhNTMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmVT
dGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIK
LSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQ
VVJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLSAgICA6IG1fbWV0YWwgeyBhZG9w
dE5TKFtkZXZpY2UubWV0YWwoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6
ZGVzY3JpcHRvci5tZXRhbCgpIGVycm9yOm5pbF0pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJH
UFVSZW5kZXJQaXBlbGluZVN0YXRlOjpHUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkiKTsKLX0KLQot
U3RyaW5nIEdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OmxhYmVsKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fbWV0YWwpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBbbV9t
ZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwo
Y29uc3QgU3RyaW5nJikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhlIE1UTFJlbmRlclBpcGVs
aW5lU3RhdGUgcHJvdG9jb2wgZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgbGFiZWwuCi0gICAg
Ly8gVGhlIGxhYmVsIGhhcyB0byBiZSBzZXQgb24gdGhlIGRlc2NyaXB0b3Igd2hlbiBjcmVhdGlu
ZyB0aGUgc3RhdGUgb2JqZWN0LgotICAgIC8vIFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2luZyB0
aGUgV2ViTWV0YWwgaW50ZXJmYWNlIHRvIG5vdCByZXF1aXJlIHRoaXMhCi19Ci0gICAgCi1NVExS
ZW5kZXJQaXBlbGluZVN0YXRlICpHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjptZXRhbCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVVGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3MzA1M2VkYTg3ZmY2ODZhY2QwN2JlMDhkZGI5MWJk
NTllMmI2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVUZXh0dXJlRGVzY3JpcHRv
ck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNp
bXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotR1BVVGV4dHVyZURlc2NyaXB0b3I6OkdQVVRleHR1cmVEZXNjcmlwdG9yKHVu
c2lnbmVkIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBib29s
IG1pcG1hcHBlZCkKLSAgICA6IG1fbWV0YWwgeyBbTVRMVGV4dHVyZURlc2NyaXB0b3IgdGV4dHVy
ZTJERGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4o
cGl4ZWxGb3JtYXQpIHdpZHRoOndpZHRoIGhlaWdodDpoZWlnaHQgbWlwbWFwcGVkOm1pcG1hcHBl
ZF0gfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVRleHR1cmVEZXNjcmlwdG9yOjpHUFVUZXh0
dXJlRGVzY3JpcHRvcigpIik7Ci19Ci0KLXVuc2lnbmVkIEdQVVRleHR1cmVEZXNjcmlwdG9yOjp3
aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHdpZHRoXTsKLX0KLQotdm9pZCBH
UFVUZXh0dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgodW5zaWduZWQgbmV3V2lkdGgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFttX21ldGFsIHNldFdpZHRoOm5ld1dpZHRoXTsK
LX0KLQotdW5zaWduZWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OmhlaWdodCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFttX21ldGFsIGhlaWdodF07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0
b3I6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWlnaHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1f
bWV0YWwpOwotICAgIFttX21ldGFsIHNldEhlaWdodDpuZXdIZWlnaHRdOwotfQotCi11bnNpZ25l
ZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAotewotICAgIHJldHVy
biBbbV9tZXRhbCBzYW1wbGVDb3VudF07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6
OnNldFNhbXBsZUNvdW50KHVuc2lnbmVkIG5ld1NhbXBsZUNvdW50KSBjb25zdAotewotICAgIEFT
U0VSVChtX21ldGFsKTsKLSAgICBbbV9tZXRhbCBzZXRTYW1wbGVDb3VudDpuZXdTYW1wbGVDb3Vu
dF07Ci19Ci0KLXVuc2lnbmVkIEdQVVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHRleHR1cmVUeXBlXTsKLX0KLQotdm9pZCBHUFVU
ZXh0dXJlRGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUodW5zaWduZWQgbmV3VGV4dHVyZVR5cGUp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFttX21ldGFsIHNldFRleHR1cmVU
eXBlOnN0YXRpY19jYXN0PE1UTFRleHR1cmVUeXBlPihuZXdUZXh0dXJlVHlwZSldOwotfQotCi11
bnNpZ25lZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAotewotICAg
IHJldHVybiBbbV9tZXRhbCBzdG9yYWdlTW9kZV07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2Ny
aXB0b3I6OnNldFN0b3JhZ2VNb2RlKHVuc2lnbmVkIG5ld1N0b3JhZ2VNb2RlKSBjb25zdAotewot
ICAgIFttX21ldGFsIHNldFN0b3JhZ2VNb2RlOnN0YXRpY19jYXN0PE1UTFN0b3JhZ2VNb2RlPihu
ZXdTdG9yYWdlTW9kZSldOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6dXNh
Z2UoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCB1c2FnZV07Ci19Ci0KLXZvaWQgR1BV
VGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdlKHVuc2lnbmVkIG5ld1VzYWdlKSBjb25zdAotewot
ICAgIEFTU0VSVChtX21ldGFsKTsKLSAgICBbbV9tZXRhbCBzZXRVc2FnZTpuZXdVc2FnZV07Ci19
Ci0KLU1UTFRleHR1cmVEZXNjcmlwdG9yICpHUFVUZXh0dXJlRGVzY3JpcHRvcjo6bWV0YWwoKSBj
b25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVVGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVVGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiY2VmY2ZkMWMwNjRkZjVkZDhjYjZlYmNiNTg5ZWM1OGQxMzg5ZDJhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVRleHR1cmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKLQotI2lmIEVO
QUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVEcmF3
YWJsZS5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dp
bmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVVGV4dHVyZTo6R1BVVGV4dHVyZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BV
VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
VGV4dHVyZTo6R1BVVGV4dHVyZSgpIik7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgp
IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsKLX0KLQotR1BV
VGV4dHVyZTo6R1BVVGV4dHVyZShjb25zdCBHUFVEcmF3YWJsZSYgb3RoZXIpCi0gICAgOiBtX21l
dGFsIHsgb3RoZXIudGV4dHVyZSgpIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJl
OjpHUFVUZXh0dXJlKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVVGV4dHVyZTo6d2lkdGgoKSBjb25z
dAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpLndpZHRoOwotfQotCi11bnNpZ25lZCBHUFVU
ZXh0dXJlOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpLmhlaWdo
dDsKLX0KLQotTVRMVGV4dHVyZSAqR1BVVGV4dHVyZTo6bWV0YWwoKSBjb25zdAotewotICAgIHJl
dHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJi
ODFlYzdkYWRjZDA5NjQ5N2IzNTFiOTI0MmNkOTAzOWI1MzJiMjUuLjNhYjU2YTc1NjU0NjIyMDVh
OTQ2M2RkNTFkNTNmYzMxM2VkMDdjMWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0xMC0yMiAgSnVzdGluIEZh
biAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFJlbmFtZSBvbGQg
R1BVKiBpbXBsZW1lbnRhdGlvbiBmaWxlcyB0byBHUFVMZWdhY3kqIGZvciBXZWJNZXRhbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbTogUmVuYW1l
ZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1t
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5tbTogQ29waWVkIGZy
b20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVGdW5jdGlvbi5tbS4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lEZXZpY2UubW06IFJlbmFtZWQgZnJvbSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVURldmljZS5tbS4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL21hYy9HUFVMZWdhY3lGdW5jdGlvbi5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24ubW0uCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9tYWMvR1BVTGVnYWN5TGlicmFyeS5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGlicmFyeS5tbS4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9H
UFVMZWdhY3lUZXN0Lmg6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvbWFjL0dQVVRlc3QuaC4KKwogMjAxOC0xMC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBbRGF0YWxpc3RdIGZhc3QvZm9ybXMv
ZGF0YWxpc3QvZGF0YWxpc3Qtc2hvdy1oaWRlLmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNDk4MmY0ZmM5YjEzODY5MDVlZDY5ZTBlYzczMGRjZDg1NzM0NjY4Zi4uZDVmOWI3
NzIwODE2ZGJkZGQ2YzEyNWFiNGM1N2JlOGQzYjlkMzE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNCwxMSArMTI0LDExIEBACiAJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBU
ZXN0V0tXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkVGRjA2RDMxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi87IH07
CiAJCTJFRkYwNkQ3MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkQ2
MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLzsgfTsKIAkJ
MzE1MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1MTE4MEYxREIxQURENTAwMTc2
MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovOyB9OwotCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJB
MTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE1MjMxQzkxRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1
ZS5tbSAqLzsgfTsKLQkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjJBRTlCMUU2
RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gKi87IH07Ci0JCTMxNkJEQkExMUU3MEQ3MUIw
MERFMEQ1QSAvKiBHUFVMaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2QkRCQTAxRTcwRDZEODAwREUwRDVBIC8qIEdQVUxpYnJhcnkubW0g
Ki87IH07Ci0JCTMxNkJEQkE0MUU3MEVGNjgwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkEzMUU3MEVG
NUQwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5tbSAqLzsgfTsKLQkJMzE2QkRCQUMxRTcyMDdGMTAw
REUwRDVBIC8qIEdQVUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxNkJEQkFCMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVCdWZmZXIubW0gKi87
IH07CisJCTMxNTIzMUNBMUVCM0IzQzcwMEEyMkExNiAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUyMzFD
OTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovOyB9OworCQkz
MTYyQUU5QzFFNkYyRkY1MDAwRTREQkMgLyogR1BVTGVnYWN5RGV2aWNlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2MkFFOUIxRTZGMkZDRTAwMEU0
REJDIC8qIEdQVUxlZ2FjeURldmljZS5tbSAqLzsgfTsKKwkJMzE2QkRCQTExRTcwRDcxQjAwREUw
RDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJBMDFFNzBENkQ4MDBERTBENUEgLyogR1BVTGVnYWN5TGli
cmFyeS5tbSAqLzsgfTsKKwkJMzE2QkRCQTQxRTcwRUY2ODAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1
bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE2QkRCQTMxRTcwRUY1RDAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tICovOyB9Owor
CQkzMTZCREJBQzFFNzIwN0YxMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQUIxRTcyMDdGMTAw
REUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlci5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAw
NzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAv
KiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgKi87IH07CiAJCTMzREM4OTEyMTQxOTU1
RkUwMDc0N0VGNyAvKiBzaW1wbGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MEUxNDE5NTM5MzAwNzQ3RUY3IC8q
IHNpbXBsZS1pZnJhbWUuaHRtbCAqLzsgfTsKIAkJMzNEQzg5MTQxNDE5NTc5RjAwNzQ3RUY3IC8q
IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MTMxNDE5NTc5RjAw
NzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3Bw
ICovOyB9OwpAQCAtMTM4MSwxMiArMTM4MSwxMiBAQAogCQkyRUZGMDZEMzFEOEFFREJCMDAwNEJC
MzAgLyogVGVzdFdLV2ViVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFRlc3RXS1dlYlZpZXcubW07IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUZGMDZENjFEOEFGMzRBMDAwNEJCMzAgLyog
V0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNTIzMUM5MUVCM0IzQzcwMEEyMkExNiAv
KiBHUFVDb21tYW5kUXVldWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVDb21tYW5kUXVldWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
NjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNkJEQkEwMUU3MEQ2RDgwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGlicmFyeS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQTIxRTcwREVFNTAwREUwRDVBIC8qIEdQVVRl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJBMzFFNzBFRjVEMDBERTBENUEgLyogR1BVRnVu
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVGdW5j
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQUIxRTcyMDdGMTAw
REUwRDVBIC8qIEdQVUJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBw
YXRoID0gR1BVQnVmZmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTUyMzFD
OTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTYyQUU5QjFFNkYyRkNFMDAwRTREQkMgLyog
R1BVTGVnYWN5RGV2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5RGV2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZC
REJBMDFFNzBENkQ4MDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnkubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTMxRTcwRUY1RDAwREUwRDVB
IC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVTGVnYWN5RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxNkJEQkFCMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFBy
ZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzM0JFNUFGNDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1vdmVBZnRlckNyYXNo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1
ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDUsMTIgKzI1MDUsMTIgQEAKIAkJMzE2MkFFOUEx
RTZGMkY4RjAwMEU0REJDIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZlci5tbSAq
LywKLQkJCQkzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tICov
LAotCQkJCTMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gKi8sCi0JCQkJ
MzE2QkRCQTMxRTcwRUY1RDAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uLm1tICovLAotCQkJCTMxNkJE
QkEwMUU3MEQ2RDgwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5Lm1tICovLAotCQkJCTMxNkJEQkEyMUU3
MERFRTUwMERFMEQ1QSAvKiBHUFVUZXN0LmggKi8sCisJCQkJMzE2QkRCQUIxRTcyMDdGMTAwREUw
RDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlci5tbSAqLywKKwkJCQkzMTUyMzFDOTFFQjNCM0M3MDBBMjJB
MTYgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovLAorCQkJCTMxNjJBRTlCMUU2RjJGQ0Uw
MDBFNERCQyAvKiBHUFVMZWdhY3lEZXZpY2UubW0gKi8sCisJCQkJMzE2QkRCQTMxRTcwRUY1RDAw
REUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tICovLAorCQkJCTMxNkJEQkEwMUU3MEQ2RDgw
MERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5Lm1tICovLAorCQkJCTMxNkJEQkEyMUU3MERFRTUw
MERFMEQ1QSAvKiBHUFVMZWdhY3lUZXN0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zODQ5LDExICszODQ5LDExIEBACiAJCQkJN0ND
RTdFRTIxQTQxMUE5QTAwNDQ3QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2gu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdDRTFDRjMxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVz
ZXJNZWRpYU5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0U0OTk5MTFGOUU1NkRG
MDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKLQkJCQkz
MTZCREJBQzFFNzIwN0YxMDBERTBENUEgLyogR1BVQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJMzE1MjMxQ0ExRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTMxNjJBRTlDMUU2RjJGRjUwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gaW4g
U291cmNlcyAqLywKLQkJCQkzMTZCREJBNDFFNzBFRjY4MDBERTBENUEgLyogR1BVRnVuY3Rpb24u
bW0gaW4gU291cmNlcyAqLywKLQkJCQkzMTZCREJBMTFFNzBENzFCMDBERTBENUEgLyogR1BVTGli
cmFyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkJEQkFDMUU3MjA3RjEwMERFMEQ1QSAvKiBH
UFVMZWdhY3lCdWZmZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkzMTUyMzFDQTFFQjNCM0M3MDBB
MjJBMTYgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzE2
MkFFOUMxRTZGMkZGNTAwMEU0REJDIC8qIEdQVUxlZ2FjeURldmljZS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTMxNkJEQkE0MUU3MEVGNjgwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5tbSBp
biBTb3VyY2VzICovLAorCQkJCTMxNkJEQkExMUU3MEQ3MUIwMERFMEQ1QSAvKiBHUFVMZWdhY3lM
aWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOEU0QTg1MzcxRTFEMUFCMjAwRjUzQjBGIC8q
IEdyaWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGQTFBNDExQUU2MDA0
NDdDNEMgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFQzExQTQxMUE3RTAwNDQ3QzRDIC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvbWFjL0dQVUJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVQnVmZmVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2QyYWFhNzQ0
OTI4YWMzOTNjYzIzMzI2MzkzM2Y2OWVmMDIzMDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVQnVmZmVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0
ICJHUFVUZXN0LmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+Ci0jaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlzLmg+Ci0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVCdWZm
ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR1BVRGV2aWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1RfRihHUFUsIEJ1ZmZl
ckNyZWF0ZSkKLXsKLSAgICBHUFVEZXZpY2UgZGV2aWNlOwotCi0gICAgLy8gTm90IGFsbCBoYXJk
d2FyZSBzdXBwb3J0cyBNZXRhbCwgc28gaXQgaXMgcG9zc2libGUKLSAgICAvLyB0aGF0IHdlIHdl
cmUgdW5hYmxlIHRvIGNyZWF0ZSB0aGUgTVRMRGV2aWNlIG9iamVjdC4KLSAgICAvLyBJbiB0aGF0
IGNhc2UsIHRoZSBkZXZpY2Ugc2hvdWxkIGJlIG51bGwuCi0gICAgaWYgKCFkZXZpY2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEVYUEVDVF9OT1RfTlVMTChkZXZpY2UubWV0YWwoKSk7Ci0KLSAg
ICBhdXRvIGJ1ZmZlclZpZXcgPSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZSgxMDI0KTsKLQotICAg
IGF1dG8gZGF0YSA9IGJ1ZmZlclZpZXctPmRhdGEoKTsKLSAgICBtZW1zZXQoZGF0YSwgMSwgYnVm
ZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKLQotICAgIEdQVUJ1ZmZlciBidWZmZXIgeyBkZXZpY2Us
IGJ1ZmZlclZpZXcuZ2V0KCkgfTsKLSAgICBFWFBFQ1RfRVEoMTAyNFUsIGJ1ZmZlci5sZW5ndGgo
KSk7Ci0KLSAgICBhdXRvIGNvbnRlbnRzID0gYnVmZmVyLmNvbnRlbnRzKCk7Ci0gICAgRVhQRUNU
X05PVF9OVUxMKGNvbnRlbnRzKTsKLSAgICBFWFBFQ1RfRVEoMTAyNFUsIGNvbnRlbnRzLT5ieXRl
TGVuZ3RoKCkpOwotCi0gICAgYXV0byBjb250ZW50c0RhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oY29udGVudHMtPmRhdGEoKSk7Ci0gICAgRVhQRUNUX05FKGRhdGEsIGNvbnRlbnRzRGF0YSk7
Ci0gICAgRVhQRUNUX0VRKDFVLCBjb250ZW50c0RhdGFbMF0pOwotICAgIEVYUEVDVF9FUSgxVSwg
Y29udGVudHNEYXRhWzUxMl0pOwotICAgIEVYUEVDVF9FUSgxVSwgY29udGVudHNEYXRhWzEwMjNd
KTsKLQotICAgIEVYUEVDVF9OT1RfTlVMTChidWZmZXIubWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVURldmljZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRGV2aWNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhMDQ0OTRiZmZlMTYzMDgyYzA0ZGQxMmZlNTZiYTAwZmY2OGYzMWNmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRGV2aWNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW1wb3J0ICJHUFVUZXN0LmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgot
I2ltcG9ydCA8V2ViQ29yZS9HUFVEZXZpY2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotVEVTVF9GKEdQVSwgRGV2aWNlQ3JlYXRl
KQotewotICAgIEdQVURldmljZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1
cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFi
bGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwg
dGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5sYXllcigpKTsKLSAgICBFWFBFQ1Rf
Tk9UX05VTEwoZGV2aWNlLnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgRVhQRUNUX05PVF9OVUxMKGRl
dmljZS5tZXRhbCgpKTsKLSAgICBFWFBFQ1RfTFQoMFUsIGRldmljZS5tZXRhbCgpLm5hbWUubGVu
Z3RoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUZ1bmN0aW9uLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzAyNzRhNjBmMjk5OGMxODU2ZmExYzU0
NjNjZDFhNDc4MTMwYzhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24u
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotCi0jaW1wb3J0
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVVGVzdC5o
IgotI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0dQVURldmljZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVGdW5j
dGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVMaWJyYXJ5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1RfRihHUFUsIEZ1
bmN0aW9uQWNjZXNzQnlOYW1lKQotewotICAgIEdQVURldmljZSBkZXZpY2U7Ci0KLSAgICAvLyBO
b3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQotICAgIC8v
IHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgotICAg
IC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KLSAgICBpZiAoIWRl
dmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRh
bCgpKTsKLQotICAgIEdQVUxpYnJhcnkgbGlicmFyeSB7IGRldmljZSwgbGlicmFyeVNvdXJjZUNv
ZGUoKSB9OwotCi0gICAgR1BVRnVuY3Rpb24gdmVydGV4RnVuY3Rpb24geyBsaWJyYXJ5LCAidmVy
dGV4X21haW4iX3MgfTsKLSAgICBFWFBFQ1RfTk9UX05VTEwodmVydGV4RnVuY3Rpb24ubWV0YWwo
KSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJ2ZXJ0ZXhfbWFpbiIsIHZlcnRleEZ1bmN0aW9uLm5h
bWUoKSk7Ci0KLSAgICBHUFVGdW5jdGlvbiBmcmFnbWVudEZ1bmN0aW9uIHsgbGlicmFyeSwgImZy
YWdtZW50X21haW4iX3MgfTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZnJhZ21lbnRGdW5jdGlvbi5t
ZXRhbCgpKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoImZyYWdtZW50X21haW4iLCBmcmFnbWVudEZ1
bmN0aW9uLm5hbWUoKSk7Ci0KLSAgICBHUFVGdW5jdGlvbiBub25leGlzdGVudEZ1bmN0aW9uIHsg
bGlicmFyeSwgIm5hbWVfdGhhdF9pc19ub3RfaW5fbGlicmFyeSJfcyB9OwotICAgIEVYUEVDVF9O
VUxMKG5vbmV4aXN0ZW50RnVuY3Rpb24ubWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5QnVmZmVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NGRhYzdh
NjJmNDgxZWQ0MmZmNWNlNTExMmE2ZWUyNzMyNzBlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbQpAQCAt
MCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeVRlc3QuaCIKKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1
ZmZlclZpZXcuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbXBvcnQgPE1ldGFsL01ldGFs
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeUJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9HUFVMZWdhY3lEZXZpY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgQnVmZmVyQ3JlYXRlKQor
eworICAgIEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJl
IHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1
bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2Fz
ZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKKworICAgIGF1
dG8gYnVmZmVyVmlldyA9IEpTQzo6VWludDhBcnJheTo6Y3JlYXRlKDEwMjQpOworCisgICAgYXV0
byBkYXRhID0gYnVmZmVyVmlldy0+ZGF0YSgpOworICAgIG1lbXNldChkYXRhLCAxLCBidWZmZXJW
aWV3LT5ieXRlTGVuZ3RoKCkpOworCisgICAgR1BVTGVnYWN5QnVmZmVyIGJ1ZmZlciB7IGRldmlj
ZSwgYnVmZmVyVmlldy5nZXQoKSB9OworICAgIEVYUEVDVF9FUSgxMDI0VSwgYnVmZmVyLmxlbmd0
aCgpKTsKKworICAgIGF1dG8gY29udGVudHMgPSBidWZmZXIuY29udGVudHMoKTsKKyAgICBFWFBF
Q1RfTk9UX05VTEwoY29udGVudHMpOworICAgIEVYUEVDVF9FUSgxMDI0VSwgY29udGVudHMtPmJ5
dGVMZW5ndGgoKSk7CisKKyAgICBhdXRvIGNvbnRlbnRzRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihjb250ZW50cy0+ZGF0YSgpKTsKKyAgICBFWFBFQ1RfTkUoZGF0YSwgY29udGVudHNEYXRh
KTsKKyAgICBFWFBFQ1RfRVEoMVUsIGNvbnRlbnRzRGF0YVswXSk7CisgICAgRVhQRUNUX0VRKDFV
LCBjb250ZW50c0RhdGFbNTEyXSk7CisgICAgRVhQRUNUX0VRKDFVLCBjb250ZW50c0RhdGFbMTAy
M10pOworCisgICAgRVhQRUNUX05PVF9OVUxMKGJ1ZmZlci5tZXRhbCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lDb21tYW5kUXVldWUu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmY1YjE2NWI3ZDhkNTM1ODVhNGQzYmU2ZDRhZGE5YzU5MzQ5ZDY4Mgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMv
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BV
VGVzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPE1ldGFsL01l
dGFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQVUNvbW1hbmRRdWV1ZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9HUFVEZXZpY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVSwgQ29tbWFuZFF1ZXVlQ3JlYXRlKQorewor
ICAgIEdQVURldmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRz
IE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8g
Y3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRl
dmljZSBzaG91bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR1BVQ29tbWFuZFF1ZXVlIGNvbW1hbmRRdWV1ZSB7IGRldmljZSB9OworICAgIEVYUEVD
VF9XS19TVFJFUSgiIiwgY29tbWFuZFF1ZXVlLmxhYmVsKCkpOworCisgICAgRVhQRUNUX05PVF9O
VUxMKGNvbW1hbmRRdWV1ZS5tZXRhbCgpKTsKKworICAgIC8vIElmIHlvdSBoYXZlbid0IHNldCBh
IGxhYmVsLCB3ZSBqdXN0IHVzZSB0aGUgcHJlZml4LgorICAgIEVYUEVDVF9TVFJFUSgiY29tLmFw
cGxlLldlYktpdCIsIGNvbW1hbmRRdWV1ZS5tZXRhbCgpLmxhYmVsLlVURjhTdHJpbmcpOworCisg
ICAgY29tbWFuZFF1ZXVlLnNldExhYmVsKCJ0aGlzLmlzLmEudGVzdCJfcyk7CisKKyAgICAvLyBU
aGUgV2ViS2l0IEFQSSBkb2Vzbid0IHByZWZpeC4KKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRoaXMu
aXMuYS50ZXN0IiwgY29tbWFuZFF1ZXVlLmxhYmVsKCkpOworCisgICAgLy8gQnV0IHRoZSB1bmRl
cmx5aW5nIE1ldGFsIG9iamVjdCBsYWJlbCB3aWxsIGhhdmUgb25lLgorICAgIEVYUEVDVF9TVFJF
USgiY29tLmFwcGxlLldlYktpdC50aGlzLmlzLmEudGVzdCIsIGNvbW1hbmRRdWV1ZS5tZXRhbCgp
LmxhYmVsLlVURjhTdHJpbmcpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21h
Yy9HUFVMZWdhY3lEZXZpY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
bWFjL0dQVUxlZ2FjeURldmljZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjZhODNkMDdlMGY2MGE3OTFlOTM0
MzFlYTMyYjFhNzhkOWIyOWI1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lEZXZpY2UubW0KQEAgLTAsMCArMSw1NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQor
CisjaW1wb3J0ICJHUFVMZWdhY3lUZXN0LmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9HUFVMZWdhY3lEZXZpY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgRGV2
aWNlQ3JlYXRlKQoreworICAgIEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3Qg
YWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRo
YXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8v
IEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmlj
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5sYXllcigp
KTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgRVhQ
RUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKKyAgICBFWFBFQ1RfTFQoMFUsIGRldmljZS5t
ZXRhbCgpLm5hbWUubGVuZ3RoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVTGVnYWN5RnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvbWFjL0dQVUxlZ2FjeUZ1bmN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDllMTAzZjllNTRlMWY5
M2ViMDBhMTNlNzljODFiZTA0YTFjODUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUZ1bmN0aW9uLm1tCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdF
Qk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lUZXN0LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR1BV
TGVnYWN5RGV2aWNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeUZ1bmN0aW9uLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeUxpYnJhcnkuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVUxlZ2FjeSwg
RnVuY3Rpb25BY2Nlc3NCeU5hbWUpCit7CisgICAgR1BVTGVnYWN5RGV2aWNlIGRldmljZTsKKwor
ICAgIC8vIE5vdCBhbGwgaGFyZHdhcmUgc3VwcG9ydHMgTWV0YWwsIHNvIGl0IGlzIHBvc3NpYmxl
CisgICAgLy8gdGhhdCB3ZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUgdGhlIE1UTERldmljZSBvYmpl
Y3QuCisgICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZGV2aWNlIHNob3VsZCBiZSBudWxsLgorICAg
IGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGV2
aWNlLm1ldGFsKCkpOworCisgICAgR1BVTGVnYWN5TGlicmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBs
aWJyYXJ5U291cmNlQ29kZSgpIH07CisKKyAgICBHUFVMZWdhY3lGdW5jdGlvbiB2ZXJ0ZXhGdW5j
dGlvbiB7IGxpYnJhcnksICJ2ZXJ0ZXhfbWFpbiJfcyB9OworICAgIEVYUEVDVF9OT1RfTlVMTCh2
ZXJ0ZXhGdW5jdGlvbi5tZXRhbCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInZlcnRleF9tYWlu
IiwgdmVydGV4RnVuY3Rpb24ubmFtZSgpKTsKKworICAgIEdQVUxlZ2FjeUZ1bmN0aW9uIGZyYWdt
ZW50RnVuY3Rpb24geyBsaWJyYXJ5LCAiZnJhZ21lbnRfbWFpbiJfcyB9OworICAgIEVYUEVDVF9O
T1RfTlVMTChmcmFnbWVudEZ1bmN0aW9uLm1ldGFsKCkpOworICAgIEVYUEVDVF9XS19TVFJFUSgi
ZnJhZ21lbnRfbWFpbiIsIGZyYWdtZW50RnVuY3Rpb24ubmFtZSgpKTsKKworICAgIEdQVUxlZ2Fj
eUZ1bmN0aW9uIG5vbmV4aXN0ZW50RnVuY3Rpb24geyBsaWJyYXJ5LCAibmFtZV90aGF0X2lzX25v
dF9pbl9saWJyYXJ5Il9zIH07CisgICAgRVhQRUNUX05VTEwobm9uZXhpc3RlbnRGdW5jdGlvbi5t
ZXRhbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5
TGlicmFyeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVn
YWN5TGlicmFyeS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmEzYTA0NjM4ZTljNTZjY2E3ZTRjNmY5OGY1Yzlj
MTc1YmM0MjE3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL21hYy9HUFVMZWdhY3lMaWJyYXJ5Lm1tCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9y
dCAiR1BVTGVnYWN5VGVzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeURldmljZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9HUFVMZWdhY3lMaWJyYXJ5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1RfRihHUFVMZWdhY3ks
IExpYnJhcnlDcmVhdGUpCit7CisgICAgR1BVTGVnYWN5RGV2aWNlIGRldmljZTsKKworICAgIC8v
IE5vdCBhbGwgaGFyZHdhcmUgc3VwcG9ydHMgTWV0YWwsIHNvIGl0IGlzIHBvc3NpYmxlCisgICAg
Ly8gdGhhdCB3ZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUgdGhlIE1UTERldmljZSBvYmplY3QuCisg
ICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZGV2aWNlIHNob3VsZCBiZSBudWxsLgorICAgIGlmICgh
ZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLm1l
dGFsKCkpOworCisgICAgR1BVTGVnYWN5TGlicmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5
U291cmNlQ29kZSgpIH07CisgICAgRVhQRUNUX05PVF9OVUxMKGxpYnJhcnkubWV0YWwoKSk7Cit9
CisKK1RFU1RfRihHUFVMZWdhY3ksIExpYnJhcnlTZXRMYWJlbCkKK3sKKyAgICBHUFVMZWdhY3lE
ZXZpY2UgZGV2aWNlOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBH
UFVMZWdhY3lMaWJyYXJ5IGxpYnJhcnkgeyBkZXZpY2UsIGxpYnJhcnlTb3VyY2VDb2RlKCkgfTsK
KyAgICBFWFBFQ1RfTk9UX05VTEwobGlicmFyeS5tZXRhbCgpKTsKKworICAgIGxpYnJhcnkuc2V0
TGFiZWwoIlRlc3RMYWJlbCJfcyk7CisgICAgRVhQRUNUX0VRKCJUZXN0TGFiZWwiLCBsaWJyYXJ5
LmxhYmVsKCkpOworfQorCitURVNUX0YoR1BVTGVnYWN5LCBMaWJyYXJ5RnVuY3Rpb25OYW1lcykK
K3sKKyAgICBHUFVMZWdhY3lEZXZpY2UgZGV2aWNlOworICAgIGlmICghZGV2aWNlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHUFVMZWdhY3lMaWJyYXJ5IGxpYnJhcnkgeyBkZXZpY2UsIGxpYnJh
cnlTb3VyY2VDb2RlKCkgfTsKKyAgICBFWFBFQ1RfTk9UX05VTEwobGlicmFyeS5tZXRhbCgpKTsK
KworICAgIGF1dG8gZnVuY3Rpb25OYW1lcyA9IGxpYnJhcnkuZnVuY3Rpb25OYW1lcygpOworICAg
IEVYUEVDVF9FUSgyVSwgZnVuY3Rpb25OYW1lcy5zaXplKCkpOworICAgIEVYUEVDVF9XS19TVFJF
USgidmVydGV4X21haW4iLCBmdW5jdGlvbk5hbWVzWzBdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ImZyYWdtZW50X21haW4iLCBmdW5jdGlvbk5hbWVzWzFdKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lUZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiYmZhYWVhYTNj
ZTk4NDM3NDI0NjMzNzk4ZDJjNjcwYjVhODEwZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5VGVzdC5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIEdQVUxlZ2FjeSA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgICAgICBtX2xpYnJhcnlT
b3VyY2VDb2RlID0gInVzaW5nIG5hbWVzcGFjZSBtZXRhbDtcblwKKyAgICAgICAgICAgIHN0cnVj
dCBWZXJ0ZXhcblwKKyAgICAgICAgICAgIHtcblwKKyAgICAgICAgICAgIGZsb2F0NCBwb3NpdGlv
biBbW3Bvc2l0aW9uXV07XG5cCisgICAgICAgICAgICBmbG9hdDQgY29sb3I7XG5cCisgICAgICAg
ICAgICB9O1xuXAorICAgICAgICAgICAgdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbihkZXZpY2Ug
VmVydGV4ICp2ZXJ0aWNlcyBbW2J1ZmZlcigwKV1dLFxuXAorICAgICAgICAgICAgdWludCB2aWQg
W1t2ZXJ0ZXhfaWRdXSlcblwKKyAgICAgICAgICAgIHtcblwKKyAgICAgICAgICAgIHJldHVybiB2
ZXJ0aWNlc1t2aWRdO1xuXAorICAgICAgICAgICAgfVxuXAorICAgICAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZyYWdtZW50X21haW4oVmVydGV4IGluVmVydGV4IFtbc3RhZ2VfaW5dXSlcblwKKyAg
ICAgICAgICAgIHtcblwKKyAgICAgICAgICAgIHJldHVybiBpblZlcnRleC5jb2xvcjtcblwKKyAg
ICAgICAgICAgIH0iX3M7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBsaWJyYXJ5U291cmNl
Q29kZSgpIHsgcmV0dXJuIG1fbGlicmFyeVNvdXJjZUNvZGU7IH0KKworcHJpdmF0ZToKKyAgICBT
dHJpbmcgbV9saWJyYXJ5U291cmNlQ29kZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGlicmFyeS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGlicmFyeS5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzkwNjUwYTE3ZGNjOWFkZjY2NTExMTIzNDBhYzBjMTA5MDk0NTQzMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxpYnJhcnkubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVVRlc3QuaCIKLSNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9H
UFVEZXZpY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR1BVTGlicmFyeS5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUX0YoR1BV
LCBMaWJyYXJ5Q3JlYXRlKQotewotICAgIEdQVURldmljZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3Qg
YWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQotICAgIC8vIHRo
YXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgotICAgIC8v
IEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KLSAgICBpZiAoIWRldmlj
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgp
KTsKLQotICAgIEdQVUxpYnJhcnkgbGlicmFyeSB7IGRldmljZSwgbGlicmFyeVNvdXJjZUNvZGUo
KSB9OwotICAgIEVYUEVDVF9OT1RfTlVMTChsaWJyYXJ5Lm1ldGFsKCkpOwotfQotCi1URVNUX0Yo
R1BVLCBMaWJyYXJ5U2V0TGFiZWwpCi17Ci0gICAgR1BVRGV2aWNlIGRldmljZTsKLSAgICBpZiAo
IWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1BVTGlicmFyeSBsaWJyYXJ5IHsgZGV2
aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07Ci0gICAgRVhQRUNUX05PVF9OVUxMKGxpYnJhcnku
bWV0YWwoKSk7Ci0KLSAgICBsaWJyYXJ5LnNldExhYmVsKCJUZXN0TGFiZWwiX3MpOwotICAgIEVY
UEVDVF9FUSgiVGVzdExhYmVsIiwgbGlicmFyeS5sYWJlbCgpKTsKLX0KLQotVEVTVF9GKEdQVSwg
TGlicmFyeUZ1bmN0aW9uTmFtZXMpCi17Ci0gICAgR1BVRGV2aWNlIGRldmljZTsKLSAgICBpZiAo
IWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1BVTGlicmFyeSBsaWJyYXJ5IHsgZGV2
aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07Ci0gICAgRVhQRUNUX05PVF9OVUxMKGxpYnJhcnku
bWV0YWwoKSk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9uTmFtZXMgPSBsaWJyYXJ5LmZ1bmN0aW9uTmFt
ZXMoKTsKLSAgICBFWFBFQ1RfRVEoMlUsIGZ1bmN0aW9uTmFtZXMuc2l6ZSgpKTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoInZlcnRleF9tYWluIiwgZnVuY3Rpb25OYW1lc1swXSk7Ci0gICAgRVhQRUNU
X1dLX1NUUkVRKCJmcmFnbWVudF9tYWluIiwgZnVuY3Rpb25OYW1lc1sxXSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVVRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVVGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4NDE3MTQ1NDEyMDc4MjBhNTFhNDdjOWJkMjFhMzhiNjU0YmNjYjA5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9tYWMvR1BVVGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW1wb3J0ICJUZXN0LmgiCi0jaW1wb3J0
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgR1BVIDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBmaW5hbAotICAgIHsKLSAgICAgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOwotCi0gICAgICAgIG1fbGlicmFyeVNvdXJjZUNvZGUg
PSAidXNpbmcgbmFtZXNwYWNlIG1ldGFsO1xuXAotICAgICAgICAgICAgc3RydWN0IFZlcnRleFxu
XAotICAgICAgICAgICAge1xuXAotICAgICAgICAgICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRp
b25dXTtcblwKLSAgICAgICAgICAgIGZsb2F0NCBjb2xvcjtcblwKLSAgICAgICAgICAgIH07XG5c
Ci0gICAgICAgICAgICB2ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKGRldmljZSBWZXJ0ZXggKnZl
cnRpY2VzIFtbYnVmZmVyKDApXV0sXG5cCi0gICAgICAgICAgICB1aW50IHZpZCBbW3ZlcnRleF9p
ZF1dKVxuXAotICAgICAgICAgICAge1xuXAotICAgICAgICAgICAgcmV0dXJuIHZlcnRpY2VzW3Zp
ZF07XG5cCi0gICAgICAgICAgICB9XG5cCi0gICAgICAgICAgICBmcmFnbWVudCBmbG9hdDQgZnJh
Z21lbnRfbWFpbihWZXJ0ZXggaW5WZXJ0ZXggW1tzdGFnZV9pbl1dKVxuXAotICAgICAgICAgICAg
e1xuXAotICAgICAgICAgICAgcmV0dXJuIGluVmVydGV4LmNvbG9yO1xuXAotICAgICAgICAgICAg
fSJfczsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGxpYnJhcnlTb3VyY2VDb2RlKCkgeyBy
ZXR1cm4gbV9saWJyYXJ5U291cmNlQ29kZTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2xp
YnJhcnlTb3VyY2VDb2RlOwotfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352947</attachid>
            <date>2018-10-22 19:24:18 -0700</date>
            <delta_ts>2018-10-22 21:25:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190817-20181022192417.patch</filename>
            <type>text/plain</type>
            <size>480575</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE4ODdlNWRiNjljYjc5
N2RhYzUyYWMxNWUxYWU5MjIxYjAwNjZlOC4uYzE2M2M2MmJjMjcyZWE2NmJjZjJiNGJhMWRjOGI1
MDBhZjFlZGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTIyICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gUmVuYW1l
IG9sZCBHUFUqIGltcGxlbWVudGF0aW9uIGZpbGVzIHRvIEdQVUxlZ2FjeSogZm9yIFdlYk1ldGFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFtMYXJnZSBsaXN0IG9m
IHJlZmFjdG9yZWQgY2xhc3NlcyBhbmQgcmVuYW1lZCBmaWxlc106IEdQVSogaXMgbm93IEdQVUxl
Z2FjeSoKKwogMjAxOC0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ1NTIFBhaW50IEFQSSBzaG91bGQgZ2l2ZSBhIDJkIHJlbmRlcmlu
ZyBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDc5OTRlYjY5NjY0NjYwZGVmODlmMjEwNDU3MWIx
ZGZhNTE3YjhlMGUuLmFlYjY2MmViMmYwMGUwYzJiZGNlYjVjN2FhMWZlNTQwYjBjMWJiN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xNzE4LDI3ICsxNzE4LDI3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAK
IAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1h
bmRRdWV1ZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3Bw
Ci1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKLXBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2Fi
bGUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRnVuY3Rpb24uY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGlicmFyeS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lEcmF3YWJsZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcAorcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcAorcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCitwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJv
eC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg0NTU1YTZhNzlhYTA0MWUyYWJiNWE5
YjA0ODk0ODlkODYyMDMwODAuLjk0ZmYxNTYyNWIzNDhjNDUyYjFiYTcwMzViN2VkODAyMDUyNzk0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzQ1LDI3ICszNDUsMjcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0ltYWdl
RXh0cmFzLm1tCiAKLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUJ1ZmZlck1ldGFsLm1tCi1w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVEZXZpY2VNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJh
d2FibGVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRnVuY3Rpb25NZXRhbC5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFsLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQot
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0KLXBsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lMaWJyYXJ5TWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4
dHVyZU1ldGFsLm1tCiAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9u
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGE0MTEwNmY2OWY2Y2Y1Y2JhY2JlYTQ2ODc5ZGFhYjFlMDQzODQzZWYuLjZjMmQ3
MWVmYzc3MTU3ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwOSwyNyArOTA5LDI3
IEBACiAJCTMxNDg3N0U2MUZBQUIwMjUwMEMwNTc1OSAvKiBKU09mZnNjcmVlbkNhbnZhcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0ODc3RTQxRkFB
QjAyMjAwQzA1NzU5IC8qIEpTT2Zmc2NyZWVuQ2FudmFzLmggKi87IH07CiAJCTMxNEJFM0ExMUIz
MEY2QjcwMDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNEJFM0EwMUIzMEY2QjcwMDE0MTk4MiAvKiBD
U1NOYW1lZEltYWdlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgg
Ki87IH07Ci0JCTMxNkJEQjg2MUU2RTBBMjcwMERFMEQ1QSAvKiBHUFVEZXZpY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQjg1MUU2RTBBMjEw
MERFMEQ1QSAvKiBHUFVEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkzMTZCREI4NjFFNkUwQTI3MDBERTBENUEgLyogR1BVTGVnYWN5RGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE2QkRCOEMxRTZFMTUzMDAwREUw
RDVBIC8qIFdlYk1ldGFsTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxNkJEQjhBMUU2RTE1MzAwMERFMEQ1QSAvKiBXZWJNZXRhbExheWVyLmgg
Ki87IH07Ci0JCTMxNkJEQjk1MUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCOTMxRTcwQzg5
NzAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE2QkRCOUIxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxpYnJh
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJE
Qjk5MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE2QkRCQUExRTcxRkE5MzAwREUwRDVBIC8q
IEdQVUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2QkRCQTgxRTcxRkE5MzAwREUwRDVBIC8qIEdQVUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxNkJEQkIyMUU3MzU0QkIwMERF
MEQ1QSAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTZCREJCMDFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5oICovOyB9
OwotCQkzMTZCREJCODFFNzM1N0NCMDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkI2MUU3
MzU3Q0IwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovOyB9OwotCQkzMTZCREJC
QzFFNzM4ODA2MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyog
R1BVQ29tbWFuZFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMzE2QkRCQ0QxRTc1RjE4NDAwREUwRDVBIC8qIEdQVURyYXdhYmxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJDQjFFNzVG
MTc2MDBERTBENUEgLyogR1BVRHJhd2FibGUuaCAqLzsgfTsKLQkJMzE2QkRCQ0UxRTc1RjE4QTAw
REUwRDVBIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVDb21tYW5k
QnVmZmVyLmggKi87IH07Ci0JCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmggKi87IH07Ci0JCTMxNkJEQkRCMUU3NjEyRTIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2QkRCRDkxRTc2MTJEQjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxNkJEQkRGMUU3NjEzNzUwMERF
MEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkREMUU3NjEzNkMwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRC
RTQxRTc2MUYwNTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRCRUIxRTc2MjQ0RDAwREUwRDVBIC8qIEdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTZCREJFOTFFNzYyNDQ0MDBERTBENUEgLyogR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
aCAqLzsgfTsKLQkJMzE2QkRCRjAxRTc2MjkyMDAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REJFRjFFNzYyOTFCMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLzsgfTsKLQkJ
MzE2QkRCRjcxRTc2MkFENTAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkY1MUU3
NjJBQ0QwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMx
NkJEQkZCMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQ
VUVudW1zLmggKi87IH07Ci0JCTMxNkJEQzAyMUU3NjJGNjQwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNkJEQkZEMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRDMDMxRTc2MkY2OTAwREUwRDVBIC8qIEdQVVJlbmRl
clBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRl
LmggKi87IH07Ci0JCTMxNkJEQzBEMUU3NjM0RDIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCOTUxRTcw
Qzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BV
TGVnYWN5RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkzMTZCREI5QjFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCOTkx
RTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMTZCREJBQTFFNzFGQTkzMDBERTBENUEg
LyogR1BVTGVnYWN5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTZCREJBODFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzE2QkRC
QjIxRTczNTRCQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAv
KiBHUFVMZWdhY3lUZXh0dXJlLmggKi87IH07CisJCTMxNkJEQkI4MUU3MzU3Q0IwMERFMEQ1QSAv
KiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQjYxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yLmggKi87IH07CisJCTMxNkJEQkJDMUU3Mzg4MDYwMERFMEQ1QSAv
KiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxNkJEQkJBMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21t
YW5kUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkzMTZCREJDRDFFNzVGMTg0MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkNCMUU3NUYx
NzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5oICovOyB9OworCQkzMTZCREJDRTFFNzVG
MThBMDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8q
IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLzsgfTsKKwkJMzE2QkRCRDMxRTc1RjdCNjAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJEMTFFNzVGN0FFMDBERTBENUEgLyog
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCREIxRTc2MTJF
MjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJE
OTFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCREYxRTc2MTM3NTAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCREQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMTZCREJFNDFF
NzYxRjA1MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
NkJEQkUzMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMTZCREJFQjFFNzYyNDREMDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkU5MUU3NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oICovOyB9OworCQkzMTZCREJGMDFFNzYyOTIwMDBERTBENUEg
LyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkVGMUU3NjI5MUIwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovOyB9OworCQkzMTZCREJGNzFFNzYyQUQ1MDBERTBENUEg
LyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCRkIxRTc2MkQw
NDAwREUwRDVBIC8qIEdQVUxlZ2FjeUVudW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5
RW51bXMuaCAqLzsgfTsKKwkJMzE2QkRDMDIxRTc2MkY2NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2QkRCRkQxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OworCQkzMTZCREMwMzFFNzYyRjY5MDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRkYxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKKwkJMzE2QkRDMEQxRTc2MzREMjAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRDMDkx
RTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oICovOyB9OwogCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNkRDQjFBMUU3OENBNTUwMDFCNUY4NyAvKiBKU1JUQ09mZmVyQW5zd2VyT3B0
aW9ucy5oICovOyB9OwogCQkzMTZEQ0IyMjFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE2RENCMUMxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDUnRwVHJhbnNjZWl2ZXJE
aXJlY3Rpb24uaCAqLzsgfTsKIAkJMzE2RENCNEMxRTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNl
Q29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTZEQ0I0NjFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VDb25uZWN0aW9uU3Rh
dGUuaCAqLzsgfTsKQEAgLTI2MzIsOSArMjYzMiw5IEBACiAJCTkzQTgwNjE3MUUwM0I1MUMwMDhB
MUYyNiAvKiBMb25nUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQTgwNjEzMUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0E4MDYxRTFFMDNC
NTg1MDA4QTFGMjYgLyogSlNEb3VibGVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUExRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91Ymxl
UmFuZ2UuaCAqLzsgfTsKIAkJOTNBODA2MjAxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1Jhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYx
QzFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25nUmFuZ2UuaCAqLzsgfTsKLQkJOTNBOTUzQjAyMEVC
RDNDOTAwQTYxOUY2IC8qIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODFFMzVFQzFFOEUyM0U0MDA0M0U4NTAg
LyogR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKLQkJOTNBOTUzQjQyMEVCRDQzMjAw
QTYxOUY2IC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQ
VUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovOyB9OwotCQk5M0E5NTNCNTIwRUM5QzNGMDBBNjE5
RjYgLyogR1BVU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzgxRTM1RjYxRThFNEQwRTAwNDNFODUwIC8qIEdQVVNpemUuaCAqLzsgfTsKKwkJOTNB
OTUzQjAyMEVCRDNDOTAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODFFMzVFQzFF
OEUyM0U0MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLzsgfTsK
KwkJOTNBOTUzQjQyMEVCRDQzMjAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5j
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgx
RTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5o
ICovOyB9OworCQk5M0E5NTNCNTIwRUM5QzNGMDBBNjE5RjYgLyogR1BVTGVnYWN5U2l6ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgxRTM1RjYxRThF
NEQwRTAwNDNFODUwIC8qIEdQVUxlZ2FjeVNpemUuaCAqLzsgfTsKIAkJOTNCMkQ4MTYwRjk5MjBE
MjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVu
VGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjZBMEU1MEIwQkNBNUMw
MEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcw
RDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjg1OCw2NSArNjg1OCw2NCBAQAogCQkz
MTRCRTNBMjFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU05hbWVkSW1hZ2VWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAvKiBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCODQxRTZF
MEEyMTAwREUwRDVBIC8qIEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCODQxRTZFMEEyMTAwREUwRDVBIC8qIEdQVUxl
Z2FjeURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVM
ZWdhY3lEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREI4NTFF
NkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lEZXZpY2VN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRCOEExRTZFMTUzMDAw
REUwRDVBIC8qIFdlYk1ldGFsTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViTWV0YWxMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI5
MjFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR1BVRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMzE2QkRCOTYxRTcwQ0EyNDAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uTWV0
YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVGdW5jdGlv
bk1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI5ODFFNzBDQkJG
MDBERTBENUEgLyogR1BVTGlicmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVMaWJyYXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCOTkxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREI5QzFFNzBDRDkwMDBERTBENUEgLyogR1BVTGlicmFyeU1ldGFsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGlicmFyeU1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJBNTFFNzFGQTZGMDBERTBENUEgLyogR1BV
QnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQTcx
RTcxRkE5MzAwREUwRDVBIC8qIEdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJBODFFNzFGQTkzMDBERTBENUEgLyogR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREJBRDFFNzM1NDlDMDBERTBENUEgLyogR1BVVGV4dHVyZU1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVVGV4dHVyZU1ldGFsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJBRjFFNzM1NEJCMDBERTBENUEgLyog
R1BVVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVU
ZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQjAxRTczNTRC
QjAwREUwRDVBIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCMzFF
NzM1N0IwMDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVRleHR1cmVEZXNjcmlwdG9yTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkI1MUU3MzU3Q0IwMERFMEQ1
QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNkJEQkI2MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0dXJlRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCOTFFNzM4ODA2MDBERTBE
NUEgLyogR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUNvbW1hbmRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkJBMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVDb21tYW5kUXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tbWFuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxNkJEQkJEMUU3Mzg4MTMwMERFMEQ1QSAvKiBHUFVDb21tYW5kUXVl
dWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNv
bW1hbmRRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJD
NDFFNzVFRTI0MDBERTBENUEgLyogR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUNvbW1hbmRC
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJDNjFFNzVFRTNEMDBERTBE
NUEgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJDOTFFNzVGMTYyMDBERTBENUEgLyogR1BVRHJhd2FibGVNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVURyYXdhYmxl
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkNBMUU3NUYxNzYw
MERFMEQ1QSAvKiBHUFVEcmF3YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVEcmF3YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
NkJEQkNCMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVEcmF3YWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREJEMDFFNzVGN0FFMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJEMTFFNzVG
N0FFMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRDQxRTc1RjdDQTAwREUwRDVBIC8qIEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMTZCREJENjFFNzYxMkM0MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQ4MUU3NjEyREIwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQ5MUU3
NjEyREIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJE
QzFFNzYxMzZDMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJE
QkREMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkUwMUU3
NjFDQjUwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJFMjFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRTYxRTc2MUYyNzAwREUwRDVBIC8qIEdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFODFFNzYyNDQz
MDBERTBENUEgLyogR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFOTFFNzYyNDQ0MDBERTBENUEgLyogR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCRUMxRTc2MjQ2QjAwREUwRDVBIC8qIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFRTFF
NzYyOTFCMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFRjFFNzYyOTFCMDBERTBENUEgLyogR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRjIx
RTc2MjkzNzAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJGNDFFNzYyQUNEMDBERTBE
NUEgLyogR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREJGODFFNzYyQkVGMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZC
REJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVRW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVRW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCRkMxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJGRDFFNzYy
RjU3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJGRTFFNzYyRjU3MDBERTBENUEgLyogR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCRkYxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREMwNDFFNzYyRjdFMDBERTBE
NUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMDUxRTc2MkY3RTAwREUw
RDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMDgxRTc2MzQyNzAwREUwRDVBIC8qIEdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREMwOTFF
NzYzNDI3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREMwQTFFNzYzNDM2MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCOTIxRTcwQzg5NzAwREUwRDVB
IC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRCOTMxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeUZ1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjk2MUU3MENBMjQwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lGdW5jdGlvbk1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRCOTgxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5TGlicmFyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjk5MUU3MENCQkYwMERFMEQ1QSAvKiBH
UFVMZWdhY3lMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCOUMxRTcw
Q0Q5MDAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTUxRTcxRkE2RjAwREUwRDVBIC8qIEdQVUxl
Z2FjeUJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5QnVmZmVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxNkJEQkE3MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5QnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTgxRTcxRkE5MzAwREUwRDVBIC8qIEdQVUxl
Z2FjeUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQUYxRTczNTRCQjAw
REUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQjMxRTczNTdCMDAwREUwRDVBIC8qIEdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJCNTFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVn
YWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTZCREJCNjFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQjkx
RTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZC
REJCRDFFNzM4ODEzMDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kUXVl
dWVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQzQxRTc1RUUy
NDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRC
QzYxRTc1RUUzRDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbW1hbmRCdWZm
ZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQzkxRTc1RjE2
MjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJDQTFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVn
YWN5RHJhd2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
TGVnYWN5RHJhd2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJD
QjFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5RHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE2QkRCRDAxRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBh
c3NEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkQ0
MUU3NUY3Q0EwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2
QkRCRDYxRTc2MTJDNDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJEODFFNzYxMkRCMDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MTZCREJEOTFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJERDFFNzYxMzZDMDBERTBENUEgLyog
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJFMDFFNzYxQ0I1MDBERTBE
NUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRCRTIxRTc2MUVGRjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTMxRTc2MUVGRjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkU2MUU3NjFG
MjcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTgxRTc2MjQ0MzAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxNkJEQkVDMUU3NjI0NkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2QkRCRUUxRTc2MjkxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeURl
cHRoU3RlbmNpbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRC
RUYxRTc2MjkxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkYyMUU3NjI5MzcwMERFMEQ1QSAv
KiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8q
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkY1MUU3NjJBQ0QwMERFMEQ1QSAvKiBH
UFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRjgxRTc2MkJFRjAwREUwRDVBIC8qIEdQVUxlZ2FjeURl
cHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeUVudW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2Fj
eUVudW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkZDMUU3NjJGNTcw
MERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRkQxRTc2MkY1
NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRkUxRTc2MkY1NzAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE2QkRDMDQxRTc2MkY3RTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQzA1MUU3NjJGN0UwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQzA4MUU3NjM0MjcwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRDMDkxRTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRDMEExRTc2MzQzNjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxNkRDQjEyMUU3OEJFNDMwMDFCNUY4NyAvKiBSVENPZmZlckFuc3dlck9w
dGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkRDQjE3MUU3OEMzMzAwMDFCNUY4
NyAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZEQ0IxOTFF
NzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENPZmZlckFuc3dlck9wdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE5OCwxNSArNzE5NywxNSBAQAogCQkzODFF
MzVFNjFFOEUxREI5MDA0M0U4NTAgLyogV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODFFMzVFNzFFOEUxRTBBMDA0M0U4NTAgLyog
V2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzODFFMzVFODFFOEUxRTE2MDA0M0U4NTAgLyogV2ViR1BVQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTM4MUUzNUU5MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVD
b21tYW5kRW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFF
MzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFQjFFOEUyMTk5MDA0M0U4NTAgLyog
R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFRDFFOEUy
NDdBMDA0M0U4NTAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFRTFFOEUyNENCMDA0M0U4NTAgLyogR1BV
Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTM4MUUzNUU5MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFFMzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BV
TGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzODFFMzVFQjFFOEUyMTk5MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFF
MzVFRDFFOEUyNDdBMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFFMzVFRTFF
OEUyNENCMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4MUUz
NUVGMUU4RTNEN0YwMDQzRTg1MCAvKiBXZWJHUFVTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVTaXplLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzgxRTM1
RjUxRThFNEM0MjAwNDNFODUwIC8qIFdlYkdQVVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
ODFFMzVGNjFFOEU0RDBFMDA0M0U4NTAgLyogR1BVU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4
MUUzNUY2MUU4RTREMEUwMDQzRTg1MCAvKiBHUFVMZWdhY3lTaXplLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzg3QUU5NTgxRThFOTJFRjAwMDBERTk2IC8qIEpTV2ViR1BVU2l6ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVVNpemUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODdBRTk1OTFFOEU5MkVGMDAwMERFOTYgLyogSlNX
ZWJHUFVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVU2l6
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzOEYyM0FBRTFFOEU4M0M0MDBDRTQ2
RjUgLyogSlNXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NTIsNiArMTM3NTEsNyBAQAogCQlEMDQ1
QUQyMTIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTWV0YWxCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDQ1QUQyMjIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDQ1QUQyMzIxNjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BVTGVn
YWN5VGV4dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzgg
LyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2
QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTc5MTAsNTAgKzE3OTEwLDUwIEBACiAJCTQ5ODc3MEMxMTI0
MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTMxNkJEQkE3MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVCdWZmZXIuY3BwICov
LAotCQkJCTMxNkJEQkE4MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVCdWZmZXIuaCAqLywKLQkJCQkz
MTZCREJDNDFFNzVFRTI0MDBERTBENUEgLyogR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCi0JCQkJ
MzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQkz
MTZCREJCOTFFNzM4ODA2MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLywKLQkJCQkz
MTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmggKi8sCi0JCQkJMzgx
RTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgKi8s
Ci0JCQkJMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rl
ci5oICovLAotCQkJCTM4MUUzNUVEMUU4RTI0N0EwMDQzRTg1MCAvKiBHUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZS5jcHAgKi8sCi0JCQkJMzgxRTM1RUMxRThFMjNFNDAwNDNFODUwIC8qIEdQVUNvbXB1
dGVQaXBlbGluZVN0YXRlLmggKi8sCi0JCQkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8qIEdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkY1MUU3NjJBQ0QwMERF
MEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRCRUUxRTc2
MjkxQjAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKLQkJCQkzMTZCREJF
RjFFNzYyOTFCMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKLQkJCQkzMTZC
REI4NDFFNkUwQTIxMDBERTBENUEgLyogR1BVRGV2aWNlLmNwcCAqLywKLQkJCQkzMTZCREI4NTFF
NkUwQTIxMDBERTBENUEgLyogR1BVRGV2aWNlLmggKi8sCi0JCQkJMzE2QkRCQ0ExRTc1RjE3NjAw
REUwRDVBIC8qIEdQVURyYXdhYmxlLmNwcCAqLywKLQkJCQkzMTZCREJDQjFFNzVGMTc2MDBERTBE
NUEgLyogR1BVRHJhd2FibGUuaCAqLywKLQkJCQkzMTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyog
R1BVRW51bXMuaCAqLywKLQkJCQkzMTZCREI5MjFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rp
b24uY3BwICovLAotCQkJCTMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5o
ICovLAotCQkJCTMxNkJEQjk4MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5LmNwcCAqLywK
LQkJCQkzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGlicmFyeS5oICovLAotCQkJCTMx
NkJEQkU4MUU3NjI0NDMwMERFMEQ1QSAvKiBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8s
Ci0JCQkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
LmggKi8sCi0JCQkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCREQxRTc2MTM2QzAwREUwRDVBIC8q
IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkQ4MUU3
NjEyREIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgKi8sCi0JCQkJMzE2QkRCRDkxRTc2MTJEQjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRCRTIxRTc2MUVGRjAwREUwRDVB
IC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkz
MTZCREJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJEMDFFNzVGN0FFMDBERTBENUEgLyogR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkQxMUU3NUY3QUUwMERFMEQ1QSAvKiBH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQzA4MUU3NjM0MjcwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAot
CQkJCTMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJGQzFFNzYyRjU3MDBERTBENUEgLyog
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJGRDFFNzYyRjU3
MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRC
RkUxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovLAotCQkJ
CTMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8s
Ci0JCQkJMzgxRTM1RjYxRThFNEQwRTAwNDNFODUwIC8qIEdQVVNpemUuaCAqLywKLQkJCQkzMTZC
REJBRjFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5jcHAgKi8sCi0JCQkJMzE2QkRCQjAx
RTczNTRCQjAwREUwRDVBIC8qIEdQVVRleHR1cmUuaCAqLywKLQkJCQkzMTZCREJCNTFFNzM1N0NC
MDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkI2MUU3
MzU3Q0IwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovLAorCQkJCTMxNkJEQkE3
MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuY3BwICovLAorCQkJCTMxNkJEQkE4
MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLywKKwkJCQkzMTZCREJDNDFF
NzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzE2
QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJ
CQkzMTZCREJCOTFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcCAq
LywKKwkJCQkzMTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
LmggKi8sCisJCQkJMzgxRTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlci5jcHAgKi8sCisJCQkJMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQ
VUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCTM4MUUzNUVEMUU4RTI0N0Ew
MDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJMzgx
RTM1RUMxRThFMjNFNDAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgg
Ki8sCisJCQkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxNkJEQkY1MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8sCisJCQkJMzE2QkRCRUUxRTc2MjkxQjAw
REUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMTZCREJF
RjFFNzYyOTFCMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKKwkJ
CQkzMTZCREI4NDFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmNwcCAqLywKKwkJ
CQkzMTZCREI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi8sCisJCQkJ
MzE2QkRCQ0ExRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmNwcCAqLywKKwkJ
CQkzMTZCREJDQjFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCAqLywKKwkJ
CQkzMTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5RW51bXMuaCAqLywKKwkJCQkz
MTZCREI5MjFFNzBDODk3MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uY3BwICovLAorCQkJ
CTMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovLAorCQkJ
CTMxNkJEQjk4MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmNwcCAqLywKKwkJ
CQkzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5oICovLAorCQkJ
CTMxNkJEQkU4MUU3NjI0NDMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ci5jcHAgKi8sCisJCQkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggKi8sCisJCQkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzE2QkRC
REQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovLAorCQkJCTMxNkJEQkQ4MUU3NjEyREIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzE2QkRCRDkxRTc2
MTJEQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8sCisJCQkJMzE2QkRCRTIxRTc2MUVGRjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMTZCREJFMzFFNzYx
RUZGMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuaCAqLywKKwkJCQkzMTZCREJEMDFFNzVGN0FFMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxNkJEQkQxMUU3NUY3QUUwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAorCQkJCTMxNkJEQzA4MUU3NjM0Mjcw
MERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwICovLAorCQkJCTMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTZCREJGQzFF
NzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAq
LywKKwkJCQkzMTZCREJGRDFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzE2QkRCRkUxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovLAorCQkJCTMxNkJEQkZGMUU3NjJGNTcwMERF
MEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8sCisJCQkJMzgxRTM1RjYx
RThFNEQwRTAwNDNFODUwIC8qIEdQVUxlZ2FjeVNpemUuaCAqLywKKwkJCQkzMTZCREJBRjFFNzM1
NEJCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZS5jcHAgKi8sCisJCQkJMzE2QkRCQjAxRTcz
NTRCQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCAqLywKKwkJCQkzMTZCREJCNTFFNzM1
N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwICovLAorCQkJCTMx
NkJEQkI2MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oICov
LAogCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmNwcCAqLywKIAkJCQk0
OTg3NzBEODEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oICovLAogCQkJCTQ5ODc3MEQ5MTI0
MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLywKQEAgLTIwNjk5LDI3ICsyMDY5OSwy
NyBAQAogCQk5MzY4QzQ5MTIwRjlCNTcyMDA0MzRENjEgLyogbWV0YWwgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTMxNkJEQkE1MUU3MUZBNkYwMERFMEQ1
QSAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJDNjFFNzVFRTNEMDBERTBENUEg
LyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCTMxNkJEQkJEMUU3Mzg4MTMwMERF
MEQ1QSAvKiBHUFVDb21tYW5kUXVldWVNZXRhbC5tbSAqLywKLQkJCQkzODFFMzVFOTFFOEUyMEFD
MDA0M0U4NTAgLyogR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gKi8sCi0JCQkJMzgx
RTM1RUUxRThFMjRDQjAwNDNFODUwIC8qIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0g
Ki8sCi0JCQkJMzE2QkRCRjgxRTc2MkJFRjAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3JNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJGMjFFNzYyOTM3MDBERTBENUEgLyogR1BVRGVw
dGhTdGVuY2lsU3RhdGVNZXRhbC5tbSAqLywKLQkJCQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEg
LyogR1BVRGV2aWNlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCQzkxRTc1RjE2MjAwREUwRDVBIC8q
IEdQVURyYXdhYmxlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCOTYxRTcwQ0EyNDAwREUwRDVBIC8q
IEdQVUZ1bmN0aW9uTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCOUMxRTcwQ0Q5MDAwREUwRDVBIC8q
IEdQVUxpYnJhcnlNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJFQzFFNzYyNDZCMDBERTBENUEgLyog
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJFMDFFNzYxQ0I1
MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8s
Ci0JCQkJMzE2QkRCRDYxRTc2MTJDNDAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCRTYxRTc2MUYyNzAwREUwRDVB
IC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCi0J
CQkJMzE2QkRCRDQxRTc1RjdDQTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0
YWwubW0gKi8sCi0JCQkJMzE2QkRDMEExRTc2MzQzNjAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovLAotCQkJCTMxNkJEQzA0MUU3
NjJGN0UwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbSAqLywK
LQkJCQkzMTZCREMwNTFFNzYyRjdFMDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZU1l
dGFsLm1tICovLAotCQkJCTMxNkJEQkIzMUU3MzU3QjAwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVz
Y3JpcHRvck1ldGFsLm1tICovLAotCQkJCTMxNkJEQkFEMUU3MzU0OUMwMERFMEQ1QSAvKiBHUFVU
ZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJMzE2QkRCQTUxRTcxRkE2RjAwREUwRDVBIC8qIEdQVUxl
Z2FjeUJ1ZmZlck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkM2MUU3NUVFM0QwMERFMEQ1QSAvKiBH
UFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCisJCQkJMzE2QkRCQkQxRTczODgxMzAw
REUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tICovLAorCQkJCTM4MUUzNUU5
MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5t
bSAqLywKKwkJCQkzODFFMzVFRTFFOEUyNENCMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGVNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJGODFFNzYyQkVGMDBERTBENUEgLyog
R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkYy
MUU3NjI5MzcwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tICov
LAorCQkJCTMxNkJEQjg4MUU2RTE0MUMwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2VNZXRhbC5t
bSAqLywKKwkJCQkzMTZCREJDOTFFNzVGMTYyMDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGVN
ZXRhbC5tbSAqLywKKwkJCQkzMTZCREI5NjFFNzBDQTI0MDBERTBENUEgLyogR1BVTGVnYWN5RnVu
Y3Rpb25NZXRhbC5tbSAqLywKKwkJCQkzMTZCREI5QzFFNzBDRDkwMDBERTBENUEgLyogR1BVTGVn
YWN5TGlicmFyeU1ldGFsLm1tICovLAorCQkJCTMxNkJEQkVDMUU3NjI0NkIwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkUwMUU3
NjFDQjUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JN
ZXRhbC5tbSAqLywKKwkJCQkzMTZCREJENjFFNzYxMkM0MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJF
NjFFNzYxRjI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJENDFFNzVGN0NBMDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREMwQTFFNzYz
NDM2MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzE2QkRDMDQxRTc2MkY3RTAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxNkJEQzA1MUU3
NjJGN0UwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gKi8s
CisJCQkJMzE2QkRCQjMxRTczNTdCMDAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yTWV0YWwubW0gKi8sCisJCQkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2Fj
eVRleHR1cmVNZXRhbC5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWV0YWw7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjg1NDMsMjkgKzI4NTQzLDI5IEBACiAJCQkJQzVENEFBN0Ex
MTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQUExRTcxRkE5MzAwREUwRDVBIC8qIEdQ
VUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQ0UxRTc1RjE4QTAwREUwRDVBIC8q
IEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkJDMUU3Mzg4MDYw
MERFMEQ1QSAvKiBHUFVDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQTk1M0I0
MjBFQkQ0MzIwMEE2MTlGNiAvKiBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTkzQTk1M0IwMjBFQkQzQzkwMEE2MTlGNiAvKiBHUFVDb21wdXRlUGlwZWxpbmVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCRjcxRTc2MkFENTAwREUwRDVBIC8qIEdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkYwMUU3
NjI5MjAwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMzE2QkRCODYxRTZFMEEyNzAwREUwRDVBIC8qIEdQVURldmljZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMzE2QkRCQ0QxRTc1RjE4NDAwREUwRDVBIC8qIEdQVURyYXdhYmxlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkzMTZCREJGQjFFNzYyRDA0MDBERTBENUEgLyogR1BVRW51bXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxNkJEQjk1MUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCOUIxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxpYnJhcnku
aCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkVCMUU3NjI0NEQwMERFMEQ1QSAvKiBHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCREYxRTc2MTM3NTAw
REUwRDVBIC8qIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzE2QkRCREIxRTc2MTJFMjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJFNDFFNzYxRjA1
MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMEQxRTc2MzREMjAwREUwRDVB
IC8qIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzE2QkRDMDIxRTc2MkY2NDAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMDMxRTc2MkY2OTAwREUwRDVB
IC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQTk1M0I1
MjBFQzlDM0YwMEE2MTlGNiAvKiBHUFVTaXplLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJC
MjFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2
QkRCQjgxRTczNTdDQjAwREUwRDVBIC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTZCREJBQTFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJDRTFFNzVGMThBMDBERTBENUEgLyogR1BVTGVnYWN5
Q29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCQkMxRTczODgwNjAwREUw
RDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNBOTUz
QjQyMEVCRDQzMjAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNBOTUzQjAyMEVCRDNDOTAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNv
bXB1dGVQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJGNzFFNzYyQUQ1
MDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzE2QkRCRjAxRTc2MjkyMDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNp
bFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREI4NjFFNkUwQTI3MDBERTBENUEgLyog
R1BVTGVnYWN5RGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJDRDFFNzVGMTg0MDBE
RTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkJEQkZC
MUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzE2QkRCOTUxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTZCREI5QjFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCRUIxRTc2MjQ0RDAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJERjFFNzYx
Mzc1MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJEQjFFNzYxMkUyMDBERTBENUEgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTMxNkJEQkU0MUU3NjFGMDUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCRDMxRTc1RjdCNjAw
REUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTZCREMwRDFFNzYzNEQyMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREMwMjFF
NzYyRjY0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTZCREMwMzFFNzYyRjY5MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNBOTUzQjUyMEVDOUMzRjAw
QTYxOUY2IC8qIEdQVUxlZ2FjeVNpemUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkJEQkIyMUU3
MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MTZCREJCODFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2QjAwQUE3ODM0
IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwCmluZGV4IGJkMzAxZWU5ODU1M2E2MTc5YjRkYjNm
YTRkY2IzNGFkZGVkMmZlZGMuLmY2NTkwNGI4NmY3NmIwNTYyNmFkOGRjMmViYzY1NGZjMWFjNmIw
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEJ1ZmZlci5jcHAK
QEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJN
ZXRhbEJ1ZmZlcj4gV2ViTWV0YWxCdWZmZXI6OmNyZWF0ZShHUFVCdWZmZXImJiBidWZmZXIpCitS
ZWZQdHI8V2ViTWV0YWxCdWZmZXI+IFdlYk1ldGFsQnVmZmVyOjpjcmVhdGUoR1BVTGVnYWN5QnVm
ZmVyJiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciByZXR1cm5pbmcgbnVsbCBy
YXRoZXIgdGhhbiBhIGJ1ZmZlciB3aXRoIGxlbmd0aCAwIGFuZCBjb250ZW50cyBudWxsIHdoZW4g
Y3JlYXRpb24gZmFpbHMuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVdlYk1ldGFsQnVmZmVyOjpXZWJNZXRhbEJ1ZmZlcihH
UFVCdWZmZXImJiBidWZmZXIpCitXZWJNZXRhbEJ1ZmZlcjo6V2ViTWV0YWxCdWZmZXIoR1BVTGVn
YWN5QnVmZmVyJiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIgeyBXVEZNb3ZlKGJ1ZmZlcikgfQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVyLmgKaW5kZXgg
MmUzNDFhNzJhZWE5MDdkODJiYmJiOTczYTM1ZWFjNjlkZjA1NDhjYi4uZTg0NGExNzA2N2M1ODZm
NjE3ODRlMDI0YTYzMGJmMjNmYWI2ZTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbEJ1ZmZlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVU
QUwpCiAKLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IApAQCAtMzUsMTcgKzM1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViTWV0
YWxCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbEJ1ZmZlcj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8V2ViTWV0YWxCdWZmZXI+IGNyZWF0ZShHUFVCdWZmZXImJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gY3JlYXRlKEdQVUxlZ2FjeUJ1ZmZlciYm
KTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmxlbmd0
aCgpOyB9CiAgICAgSlNDOjpBcnJheUJ1ZmZlciYgY29udGVudHMoKSBjb25zdCB7IHJldHVybiAq
bV9idWZmZXIuY29udGVudHMoKTsgfQogCi0gICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBXZWJNZXRhbEJ1ZmZlcihHUFVCdWZmZXImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxCdWZm
ZXIoR1BVTGVnYWN5QnVmZmVyJiYpOwogCi0gICAgR1BVQnVmZmVyIG1fYnVmZmVyOworICAgIEdQ
VUxlZ2FjeUJ1ZmZlciBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRCdWZmZXIu
Y3BwCmluZGV4IGQxYmJlMWE2NDhjMTQ1M2M4MzAwYjQ4MzE1NzY2NzQ2MjQwZGVlOTAuLjAzYWZj
MzZiNjIyMDRjYjI1NWM5N2Q3OGQwMzAxYWMxYjlhMmIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcApAQCAtMjksOCAr
MjksOCBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21tYW5kUXVldWUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbERyYXdhYmxlLmgiCkBAIC0zOSwxMiArMzksMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViTWV0YWxDb21tYW5kQnVmZmVyPiBXZWJN
ZXRhbENvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVDb21tYW5kUXVldWUmIHF1ZXVlKQor
UmVmPFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcj4gV2ViTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVhdGUo
Y29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiBxdWV1ZSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJNZXRhbENvbW1hbmRCdWZmZXIocXVldWUpKTsKIH0KIAotV2ViTWV0YWxDb21t
YW5kQnVmZmVyOjpXZWJNZXRhbENvbW1hbmRCdWZmZXIoY29uc3QgR1BVQ29tbWFuZFF1ZXVlJiBx
dWV1ZSkKK1dlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6V2ViTWV0YWxDb21tYW5kQnVmZmVyKGNvbnN0
IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYgcXVldWUpCiAgICAgOiBtX2J1ZmZlciB7IHF1ZXVlLCBb
dGhpc10gKCkgeyBtX2NvbXBsZXRlZC5yZXNvbHZlKCk7IH0gfQogewogICAgIExPRyhXZWJNZXRh
bCwgIldlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6V2ViTWV0YWxDb21tYW5kQnVmZmVyKCkiKTsKQEAg
LTY5LDEyICs2OSwxMiBAQCB2b2lkIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdh
YmxlKFdlYk1ldGFsRHJhd2FibGUmIGRyYXdhYmxlKQogCiBSZWY8V2ViTWV0YWxSZW5kZXJDb21t
YW5kRW5jb2Rlcj4gV2ViTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVhdGVSZW5kZXJDb21tYW5kRW5j
b2RlcldpdGhEZXNjcmlwdG9yKFdlYk1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShH
UFVSZW5kZXJDb21tYW5kRW5jb2RlciB7IG1fYnVmZmVyLCBkZXNjcmlwdG9yLmRlc2NyaXB0b3Io
KSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKEdQ
VUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyIHsgbV9idWZmZXIsIGRlc2NyaXB0b3IuZGVzY3Jp
cHRvcigpIH0pOwogfQogCiBSZWY8V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI+IFdlYk1l
dGFsQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkKIHsKLSAgICBy
ZXR1cm4gV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShHUFVDb21wdXRlQ29t
bWFuZEVuY29kZXIgeyBtX2J1ZmZlciB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxDb21wdXRlQ29t
bWFuZEVuY29kZXI6OmNyZWF0ZShHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIgeyBtX2J1
ZmZlciB9KTsKIH0KIAogRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+JiBXZWJNZXRhbENvbW1hbmRC
dWZmZXI6OmNvbXBsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbENvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGIzODRmMmQxMjg3MWY5MWI1ZmIyZmIyNWUwNjAw
NzEwYWFmNjc4N2UuLjI2MWZkZDY0ODIzMzQ0NTNjZWRlNTM0ZTcxNzBhODM5NGMzZmQ5YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCiAjaW5jbHVkZSAi
RE9NUHJvbWlzZVByb3h5LmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1
ZGUgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJNZXRh
bFJlbmRlclBhc3NEZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxDb21tYW5kQnVmZmVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21tYW5kQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgfldl
Yk1ldGFsQ29tbWFuZEJ1ZmZlcigpOwotICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21tYW5kQnVm
ZmVyPiBjcmVhdGUoY29uc3QgR1BVQ29tbWFuZFF1ZXVlJik7CisgICAgc3RhdGljIFJlZjxXZWJN
ZXRhbENvbW1hbmRCdWZmZXI+IGNyZWF0ZShjb25zdCBHUFVMZWdhY3lDb21tYW5kUXVldWUmKTsK
IAogICAgIHZvaWQgY29tbWl0KCk7CiAgICAgdm9pZCBwcmVzZW50RHJhd2FibGUoV2ViTWV0YWxE
cmF3YWJsZSYpOwpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoKIAogICAgIERPTVByb21pc2VQ
cm94eTxJRExWb2lkPiYgY29tcGxldGVkKCk7CiAKLSAgICBjb25zdCBHUFVDb21tYW5kQnVmZmVy
JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IEdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxDb21tYW5kQnVmZmVyKGNvbnN0IEdQVUNvbW1h
bmRRdWV1ZSYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcihjb25zdCBHUFVM
ZWdhY3lDb21tYW5kUXVldWUmKTsKIAotICAgIEdQVUNvbW1hbmRCdWZmZXIgbV9idWZmZXI7Cisg
ICAgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciBtX2J1ZmZlcjsKICAgICBET01Qcm9taXNlUHJveHk8
SURMVm9pZD4gbV9jb21wbGV0ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAKaW5kZXggYTQ5YjIzYjVlMmQ0Y2Y0Mjg1
OGFmNmNhNjgwMmI0MmM4OWI3Mjk2My4uZGE0ZDJjMmQxY2E4MjNjMGFiM2ZmYzRjMTIxMzUzOTEy
ZTdlZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxD
b21tYW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFs
Q29tbWFuZFF1ZXVlLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3Jl
YXRlKEdQVUNvbW1hbmRRdWV1ZSYmIHF1ZXVlKQorUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBX
ZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYmIHF1ZXVl
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFsQ29tbWFuZFF1ZXVlKFdURk1v
dmUocXVldWUpKSk7CiB9CiAKLVdlYk1ldGFsQ29tbWFuZFF1ZXVlOjpXZWJNZXRhbENvbW1hbmRR
dWV1ZShHUFVDb21tYW5kUXVldWUmJiBxdWV1ZSkKK1dlYk1ldGFsQ29tbWFuZFF1ZXVlOjpXZWJN
ZXRhbENvbW1hbmRRdWV1ZShHUFVMZWdhY3lDb21tYW5kUXVldWUmJiBxdWV1ZSkKICAgICA6IG1f
cXVldWUgeyBXVEZNb3ZlKHF1ZXVlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxDb21tYW5kUXVldWUuaAppbmRleCBmNTA3YjIzNjEwNmVlYTJkNTg2
NzA3NWM2OTNiNjQ4Y2M4ZDg0NGI2Li41Y2JiODcyMmVlYThlMDE1NTc5N2E1ODIwN2Y4MGIzZThk
MTNkODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENv
bW1hbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29t
bWFuZFF1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAot
I2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUNvbW1hbmRR
dWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcjsKIGNsYXNz
IFdlYk1ldGFsQ29tbWFuZFF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21tYW5k
UXVldWU+IHsKIHB1YmxpYzoKICAgICB+V2ViTWV0YWxDb21tYW5kUXVldWUoKTsKLSAgICBzdGF0
aWMgUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBjcmVhdGUoR1BVQ29tbWFuZFF1ZXVlJiYpOwor
ICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21tYW5kUXVldWU+IGNyZWF0ZShHUFVMZWdhY3lDb21t
YW5kUXVldWUmJik7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVl
LmxhYmVsKCk7IH0KICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsgbV9x
dWV1ZS5zZXRMYWJlbChsYWJlbCk7IH0KQEAgLTQ2LDkgKzQ2LDkgQEAgcHVibGljOgogICAgIFJl
ZjxXZWJNZXRhbENvbW1hbmRCdWZmZXI+IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbENvbW1hbmRRdWV1ZShHUFVDb21tYW5kUXVldWUmJik7
CisgICAgZXhwbGljaXQgV2ViTWV0YWxDb21tYW5kUXVldWUoR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
JiYpOwogCi0gICAgR1BVQ29tbWFuZFF1ZXVlIG1fcXVldWU7CisgICAgR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlIG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5k
RW5jb2Rlci5jcHAKaW5kZXggYjQ2MDNmNDc3NTIxZDU2MjFkZDliNDRiMjIzMGJkZTEyYTlhYjdj
OS4uODQ0MDFkZDg4OGQ0NjI1ZDFjNjNkNjc5OThhMGFlNjgyYjE2ZWVkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmNwcApAQCAtMjgsMjYgKzI4LDI2IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwp
CiAKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVU2l6ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lTaXplLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbENvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJN
ZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGlubGluZSBHUFVTaXplIEdQVVNpemVNYWtlKFdlYk1ldGFsU2l6ZSBzaXplKQorc3RhdGlj
IGlubGluZSBHUFVMZWdhY3lTaXplIEdQVUxlZ2FjeVNpemVNYWtlKFdlYk1ldGFsU2l6ZSBzaXpl
KQogewogICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoIH07
CiB9CiAKLVJlZjxXZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gV2ViTWV0YWxDb21wdXRl
Q29tbWFuZEVuY29kZXI6OmNyZWF0ZShHUFVDb21wdXRlQ29tbWFuZEVuY29kZXImJiBlbmNvZGVy
KQorUmVmPFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBXZWJNZXRhbENvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6Y3JlYXRlKEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlciYmIGVuY29k
ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVu
Y29kZXIoV1RGTW92ZShlbmNvZGVyKSkpOwogfQogICAgIAotV2ViTWV0YWxDb21wdXRlQ29tbWFu
ZEVuY29kZXI6OldlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKEdQVUNvbXB1dGVDb21tYW5k
RW5jb2RlciYmIGVuY29kZXIpCitXZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlcjo6V2ViTWV0
YWxDb21wdXRlQ29tbWFuZEVuY29kZXIoR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyJiYg
ZW5jb2RlcikKICAgICA6IG1fZW5jb2RlciB7IFdURk1vdmUoZW5jb2RlcikgfQogewogfQpAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRCdWZm
ZXIoV2ViTWV0YWxCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgbwogCiB2b2lkIFdlYk1ldGFsQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaChXZWJNZXRhbFNpemUgdGhyZWFkZ3JvdXBzUGVy
R3JpZCwgV2ViTWV0YWxTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKIHsKLSAgICBtX2VuY29k
ZXIuZGlzcGF0Y2goR1BVU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVyR3JpZCksIEdQVVNpemVNYWtl
KHRocmVhZHNQZXJUaHJlYWRncm91cCkpOworICAgIG1fZW5jb2Rlci5kaXNwYXRjaChHUFVMZWdh
Y3lTaXplTWFrZSh0aHJlYWRncm91cHNQZXJHcmlkKSwgR1BVTGVnYWN5U2l6ZU1ha2UodGhyZWFk
c1BlclRocmVhZGdyb3VwKSk7CiB9CiAKIHZvaWQgV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXI6OmVuZEVuY29kaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlci5oCmluZGV4IGJmYmE4YzVjNDBhZjMw
YjA3MGQ3NTA0NzQ2ODA5MDllZGU2NGJjNjEuLjZmNmFkNzhhZTEwZWJhMDIwMzE5NmE0Mjk2MjFj
MmU1ZjYyOTI3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
LmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCiAjaW5jbHVk
ZSAiV2ViTWV0YWxTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFdlYk1ldGFsQ29tcHV0ZVBpcGVs
aW5lU3RhdGU7CiAKIGNsYXNzIFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoR1BVQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21wdXRlQ29t
bWFuZEVuY29kZXI+IGNyZWF0ZShHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXImJik7CiAK
ICAgICB2b2lkIHNldENvbXB1dGVQaXBlbGluZVN0YXRlKFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5l
U3RhdGUmKTsKICAgICB2b2lkIHNldEJ1ZmZlcihXZWJNZXRhbEJ1ZmZlciYsIHVuc2lnbmVkLCB1
bnNpZ25lZCk7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZEVuY29kaW5n
KCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXIoR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyJiYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyKEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlciYmKTsKIAot
ICAgIEdQVUNvbXB1dGVDb21tYW5kRW5jb2RlciBtX2VuY29kZXI7CisgICAgR1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyIG1fZW5jb2RlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0
ZVBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKaW5kZXggMTFiNTNiNTVhMDBmNDNlM2IzZGQyNWM5YjNk
Y2ZlZWRjOTY4OTY2OC4uODUzMTA3ZjcwMzAwNGU4YTJmYWM0MzY4MmUzZTM1ZTdlYjM5NGQ2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBXZWJNZXRhbENv
bXB1dGVQaXBlbGluZVN0YXRlOjpjcmVhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0
ZSkKK1JlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBXZWJNZXRhbENvbXB1dGVQaXBl
bGluZVN0YXRlOjpjcmVhdGUoR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRl
KFdURk1vdmUoc3RhdGUpKSk7CiB9CiAKLVdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU6Oldl
Yk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0
ZSkKK1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU6OldlYk1ldGFsQ29tcHV0ZVBpcGVsaW5l
U3RhdGUoR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkKICAgICA6IG1fc3Rh
dGUgeyBXVEZNb3ZlKHN0YXRlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmgKaW5kZXggYmNlNDc4
ZjJiNTI4N2NmYjI3ZTFlYjJjZDc4MDkxM2Y3MzExNTg2OS4uZjA0ZmY1ZmUzNjM0MTBhZmUyOTJl
ZTRlOTJiZjNmNGY2NzAxODQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaApAQCAtMjcsNyArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5l
U3RhdGUuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNywx
NCArMzcsMTQgQEAgY2xhc3MgV2ViTWV0YWxGdW5jdGlvbjsKIAogY2xhc3MgV2ViTWV0YWxDb21w
dXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsQ29tcHV0ZVBpcGVs
aW5lU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tcHV0ZVBpcGVs
aW5lU3RhdGU+IGNyZWF0ZShHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNyZWF0ZShHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSYmKTsKIAotICAgIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlJiBzdGF0ZSgp
IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYg
c3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
TWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZShHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSYmKTsKKyAg
ICBleHBsaWNpdCBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlKEdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlJiYpOwogCi0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUgbV9zdGF0ZTsK
KyAgICBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSBtX3N0YXRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKaW5kZXggMjU5YjcwMzA5
N2QwN2U2YWU2NTFlYjBjOTVlMTMwNTYyYjM0MDY0YS4uNTc3ODA2Mzg3MjcyN2VhYzQxNGFhZTMw
M2ExOGNkOTFiMTIyNmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIFdlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjCiB2b2lkIFdlYk1ldGFsRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oQ29tcGFyZUZ1bmN0aW9uIG5ld0Rl
cHRoQ29tcGFyZUZ1bmN0aW9uKQogewogICAgIG1fZGVwdGhDb21wYXJlRnVuY3Rpb24gPSBuZXdE
ZXB0aENvbXBhcmVGdW5jdGlvbjsKLSAgICBtX2Rlc2NyaXB0b3Iuc2V0RGVwdGhDb21wYXJlRnVu
Y3Rpb24odG9HUFVDb21wYXJlRnVuY3Rpb24obV9kZXB0aENvbXBhcmVGdW5jdGlvbikpOworICAg
IG1fZGVzY3JpcHRvci5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0b0dQVUxlZ2FjeUNvbXBhcmVG
dW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0
YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKaW5kZXggYTNiNzk1MGI1MmU4ODNmOWJhNWYzN2Yx
OWRhMjA3NTNjYjI1MGQ5My4uODA5YzFlYTg5NjFhNTBkZWQ2NTNmN2M1YThjYWZjOTdkMmZkMWY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0
YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2Vi
TWV0YWxFbnVtcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgQ29tcGFyZUZ1bmN0aW9uIGRl
cHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5j
dGlvbihDb21wYXJlRnVuY3Rpb24pOwogCi0gICAgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIEdQVUxlZ2FjeURlcHRo
U3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3I7IH0K
IAogcHJpdmF0ZToKICAgICBXZWJNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSA9IGRlZmF1
bHQ7CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlcmUgd291bGQgYmUgbm8g
bmVlZCBmb3IgYSBkZWZhdWx0IHZhbHVlIGhlcmUuCiAKICAgICBXZWJNZXRhbENvbXBhcmVGdW5j
dGlvbiBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uIHsgV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246OkFs
d2F5cyB9OwotICAgIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAg
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcAppbmRleCA2YTk0N2ViNGQ3MDdjMjNh
MTc5YTM5MzNkYjg2NzVjN2YxMmJkOTAwLi4wYTdjN2QyNGViZjQ3NjNkYmVmZDZmYzUzOTNhMzI4
MTg3OWQ0NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bERlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IFdlYk1ldGFs
RGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQor
UmVmPFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6
OmNyZWF0ZShHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGUoV1RGTW92ZShzdGF0ZSkp
KTsKIH0KIAotV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6V2ViTWV0YWxEZXB0aFN0ZW5jaWxT
dGF0ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQorV2ViTWV0YWxEZXB0aFN0ZW5jaWxT
dGF0ZTo6V2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZShHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZSYmIHN0YXRlKQogICAgIDogbV9zdGF0ZSB7IFdURk1vdmUoc3RhdGUpIH0KIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUuaAppbmRleCBmNDVjMmQ2ZDhkNWE5NzI2YzFjOWU2MTUwMDkxZWRjZTU5ODM4Yzk3Li4xYzk2
ZjI5NTQ1ZTRlYTEyNmFjMWUwOWVlNzMzNWRkZjQzMjcyM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAg
LTM1LDE3ICszNSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYk1ldGFsRGVw
dGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbERlcHRoU3RlbmNpbFN0
YXRlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRl
PiBjcmVhdGUoR1BVRGVwdGhTdGVuY2lsU3RhdGUmJik7CisgICAgc3RhdGljIFJlZjxXZWJNZXRh
bERlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmJik7
CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0
cmluZyYpOwogCi0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUmIHN0YXRlKCkgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlJiBzdGF0ZSgpIHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbERlcHRoU3RlbmNp
bFN0YXRlKEdQVURlcHRoU3RlbmNpbFN0YXRlJiYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsRGVw
dGhTdGVuY2lsU3RhdGUoR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmJik7CiAKLSAgICBHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZSBtX3N0YXRlOworICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
IG1fc3RhdGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEcmF3YWJsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdhYmxlLmNwcAppbmRleCA1N2Y3OTIxNzgx
MDBjOGFhMTc5MjNhM2JiYzNlMzdjZjBjNTQ0YzA1Li41ZWQyZTllYmRhMzgxOWJhY2IxOGNmMmQy
ZjQzNzA5NjhhYjYwMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJNZXRhbERyYXdhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbERyYXdhYmxlLmNwcApAQCAtMjgsMTkgKzI4LDE5IEBACiAKICNpZiBFTkFCTEUoV0VCTUVU
QUwpCiAKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVy
ZS5oIgogI2luY2x1ZGUgIldlYk1ldGFsVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxXZWJNZXRhbERyYXdhYmxlPiBXZWJNZXRhbERyYXdhYmxlOjpjcmVhdGUoR1BVRHJh
d2FibGUmJiBkcmF3YWJsZSkKK1JlZjxXZWJNZXRhbERyYXdhYmxlPiBXZWJNZXRhbERyYXdhYmxl
OjpjcmVhdGUoR1BVTGVnYWN5RHJhd2FibGUmJiBkcmF3YWJsZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJNZXRhbERyYXdhYmxlKFdURk1vdmUoZHJhd2FibGUpKSk7CiB9CiAKLVdl
Yk1ldGFsRHJhd2FibGU6OldlYk1ldGFsRHJhd2FibGUoR1BVRHJhd2FibGUmJiBkcmF3YWJsZSkK
K1dlYk1ldGFsRHJhd2FibGU6OldlYk1ldGFsRHJhd2FibGUoR1BVTGVnYWN5RHJhd2FibGUmJiBk
cmF3YWJsZSkKICAgICA6IG1fZHJhd2FibGUgeyBXVEZNb3ZlKGRyYXdhYmxlKSB9Ci0gICAgLCBt
X3RleHR1cmUgeyBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVUZXh0dXJlIHsgbV9kcmF3YWJs
ZSB9KSB9CisgICAgLCBtX3RleHR1cmUgeyBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVMZWdh
Y3lUZXh0dXJlIHsgbV9kcmF3YWJsZSB9KSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsRHJhd2FibGUuaAppbmRleCA1MzdhYjViODY3NzRhNTUzMDRkNjAw
ZGQ5ZDZlZjdjNzY5YWM0N2FjLi42NDliMjlmN2UyOTBlMWYzZmQ2YzYwNWM0NTI3YzhmN2VkYWZj
M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEcmF3YWJsZS5o
CkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJH
UFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDE1ICszOCwx
NSBAQCBjbGFzcyBXZWJNZXRhbFRleHR1cmU7CiBjbGFzcyBXZWJNZXRhbERyYXdhYmxlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxEcmF3YWJsZT4gewogcHVibGljOgogICAgIH5XZWJNZXRh
bERyYXdhYmxlKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbERyYXdhYmxlPiBjcmVhdGUoR1BV
RHJhd2FibGUmJik7CisgICAgc3RhdGljIFJlZjxXZWJNZXRhbERyYXdhYmxlPiBjcmVhdGUoR1BV
TGVnYWN5RHJhd2FibGUmJik7CiAKLSAgICBHUFVEcmF3YWJsZSYgZHJhd2FibGUoKSB7IHJldHVy
biBtX2RyYXdhYmxlOyB9CisgICAgR1BVTGVnYWN5RHJhd2FibGUmIGRyYXdhYmxlKCkgeyByZXR1
cm4gbV9kcmF3YWJsZTsgfQogICAgIFdlYk1ldGFsVGV4dHVyZSYgdGV4dHVyZSgpIHsgcmV0dXJu
IG1fdGV4dHVyZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1ldGFsRHJh
d2FibGUoR1BVRHJhd2FibGUmJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxEcmF3YWJsZShHUFVM
ZWdhY3lEcmF3YWJsZSYmKTsKIAotICAgIEdQVURyYXdhYmxlIG1fZHJhd2FibGU7CisgICAgR1BV
TGVnYWN5RHJhd2FibGUgbV9kcmF3YWJsZTsKICAgICBSZWY8V2ViTWV0YWxUZXh0dXJlPiBtX3Rl
eHR1cmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbEVudW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMu
Y3BwCmluZGV4IDZhZDBhNDZlYzI3MmQzNWQ5NTM5MTA4MjMyYmM3ZTA4YmY3MjhlOTIuLmQ3Zjky
NTU4NDZiYmM2M2E1NTc4ZGY2MDdmZDlmYjcyYmI5ZWE0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIkdQVUxl
Z2FjeUVudW1zLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc5LDI3ICs3OSwyNyBAQCBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rp
b25OYW1lKFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIHZhbHVlKQogICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogfQogCi1HUFVDb21wYXJlRnVuY3Rpb24gdG9HUFVDb21wYXJlRnVuY3Rpb24oY29u
c3QgV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24gdmFsdWUpCitHUFVMZWdhY3lDb21wYXJlRnVuY3Rp
b24gdG9HUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24oY29uc3QgV2ViTWV0YWxDb21wYXJlRnVuY3Rp
b24gdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpO
ZXZlcikKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CisgICAgICAg
IHJldHVybiBHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb246Ok5ldmVyOwogICAgIGlmICh2YWx1ZSA9
PSBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbjo6TGVzcykKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBh
cmVGdW5jdGlvbjo6TGVzczsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlv
bjo6TGVzczsKICAgICBpZiAodmFsdWUgPT0gV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246OkVxdWFs
KQotICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVhbDsKKyAgICAgICAgcmV0
dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdl
Yk1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCi0gICAgICAgIHJldHVybiBHUFVDb21w
YXJlRnVuY3Rpb246Okxlc3NFcXVhbDsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVG
dW5jdGlvbjo6TGVzc0VxdWFsOwogICAgIGlmICh2YWx1ZSA9PSBXZWJNZXRhbENvbXBhcmVGdW5j
dGlvbjo6R3JlYXRlcikKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRl
cjsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcjsKICAg
ICBpZiAodmFsdWUgPT0gV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsKQotICAgICAg
ICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RFcXVhbDsKKyAgICAgICAgcmV0dXJuIEdQ
VUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6Tm90RXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdlYk1l
dGFsQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWwpCi0gICAgICAgIHJldHVybiBHUFVDb21w
YXJlRnVuY3Rpb246OkdyZWF0ZXJFcXVhbDsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBh
cmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOwogICAgIGlmICh2YWx1ZSA9PSBXZWJNZXRhbENvbXBh
cmVGdW5jdGlvbjo6QWx3YXlzKQotICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpB
bHdheXM7CisgICAgICAgIHJldHVybiBHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb246OkFsd2F5czsK
ICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gR1BVQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjsKKyAgICByZXR1cm4gR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uOjpOZXZl
cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViTWV0YWxFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxFbnVtcy5oCmluZGV4IDI4MmM1MDYzYWZjMTc5MDNkYWQ4ZjRkNDQ5ZDNhYjdj
M2U0NjU5MGQuLjkxMTliMTIzZDBiYzYxMTBjZDIwZDEyOGRiMmFlNmQyZjgyZjMzOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEVudW1zLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIEdQVUNvbXBhcmVGdW5jdGlv
bjsKK2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uOwogCiBlbnVtIGNsYXNzIFdl
Yk1ldGFsQ29tcGFyZUZ1bmN0aW9uIHsKICAgICBOZXZlciwKQEAgLTQ3LDcgKzQ3LDcgQEAgZW51
bSBjbGFzcyBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbiB7CiAKIHN0ZDo6b3B0aW9uYWw8V2ViTWV0
YWxDb21wYXJlRnVuY3Rpb24+IHRvV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5n
Jik7CiBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKFdlYk1ldGFsQ29tcGFyZUZ1bmN0
aW9uKTsKLUdQVUNvbXBhcmVGdW5jdGlvbiB0b0dQVUNvbXBhcmVGdW5jdGlvbihXZWJNZXRhbENv
bXBhcmVGdW5jdGlvbik7CitHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24gdG9HUFVMZWdhY3lDb21w
YXJlRnVuY3Rpb24oV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFs
RnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlv
bi5jcHAKaW5kZXggNDdiZDNhZGQwZTc2ZTg2ODllMWQ2YTc3MzdlYjQwZTdiNjhiNjg1NC4uNjA3
MjdjOTA1ZThhZGQ2ODRkZTJmYzdhZGMxNmY0NWJmOGI2MzQwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5jcHAKQEAgLTMyLDEyICszMiwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbEZ1bmN0aW9uPiBXZWJNZXRh
bEZ1bmN0aW9uOjpjcmVhdGUoR1BVRnVuY3Rpb24mJiBmdW5jdGlvbikKK1JlZjxXZWJNZXRhbEZ1
bmN0aW9uPiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUoR1BVTGVnYWN5RnVuY3Rpb24mJiBmdW5j
dGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbEZ1bmN0aW9uKFdURk1v
dmUoZnVuY3Rpb24pKSk7CiB9CiAKLVdlYk1ldGFsRnVuY3Rpb246OldlYk1ldGFsRnVuY3Rpb24o
R1BVRnVuY3Rpb24mJiBmdW5jdGlvbikKK1dlYk1ldGFsRnVuY3Rpb246OldlYk1ldGFsRnVuY3Rp
b24oR1BVTGVnYWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICA6IG1fZnVuY3Rpb24geyBXVEZN
b3ZlKGZ1bmN0aW9uKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbEZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbEZ1bmN0aW9uLmgKaW5kZXggMmJhNjkyYzE0MzNiODg3Mzg1MWJkYzU5NTEyNjZhYjdmNDEy
YjhiNy4uNzAyNDVkYzNiMGFlNGVhYTI0NzVhNzhmOTQ5Y2FkM2M5Nzg4YWI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRnVuY3Rpb24uaApAQCAtMjcsNyArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJHUFVMZWdhY3lGdW5jdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMzYsMTUgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViTWV0
YWxGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsRnVuY3Rpb24+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsRnVuY3Rpb24+IGNyZWF0ZShHUFVGdW5jdGlvbiYm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsRnVuY3Rpb24+IGNyZWF0ZShHUFVMZWdhY3lGdW5j
dGlvbiYmKTsKIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbi5u
YW1lKCk7IH0KLSAgICBjb25zdCBHUFVGdW5jdGlvbiYgZnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uOyB9CisgICAgY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mIGZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdl
Yk1ldGFsRnVuY3Rpb24oR1BVRnVuY3Rpb24mJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxGdW5j
dGlvbihHUFVMZWdhY3lGdW5jdGlvbiYmKTsKIAotICAgIEdQVUZ1bmN0aW9uIG1fZnVuY3Rpb247
CisgICAgR1BVTGVnYWN5RnVuY3Rpb24gbV9mdW5jdGlvbjsKIH07CiAgICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbExpYnJhcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxMaWJy
YXJ5LmNwcAppbmRleCBiNzkxNTZiZWUzODA0ZjhhODE0YmM4ZDQwZjVhNmRjMWU2MjExYzYyLi4z
NjcyMzQ0ZjAyNzY3YTdhMGNkNWVhNDE1MTk3ODY5NzM1ZTYzMjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsTGlicmFyeS5jcHAKQEAgLTMyLDEyICszMiwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbExpYnJhcnk+IFdlYk1ldGFs
TGlicmFyeTo6Y3JlYXRlKEdQVUxpYnJhcnkmJiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUpCitSZWY8V2ViTWV0YWxMaWJyYXJ5PiBXZWJNZXRhbExpYnJhcnk6OmNyZWF0ZShHUFVM
ZWdhY3lMaWJyYXJ5JiYgbGlicmFyeSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFsTGlicmFyeShXVEZNb3ZlKGxpYnJhcnkpLCBz
b3VyY2VDb2RlKSk7CiB9CiAKLVdlYk1ldGFsTGlicmFyeTo6V2ViTWV0YWxMaWJyYXJ5KEdQVUxp
YnJhcnkmJiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCitXZWJNZXRhbExpYnJh
cnk6OldlYk1ldGFsTGlicmFyeShHUFVMZWdhY3lMaWJyYXJ5JiYgbGlicmFyeSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlKQogICAgIDogbV9zb3VyY2VDb2RlIHsgc291cmNlQ29kZSB9CiAgICAg
LCBtX2xpYnJhcnkgeyBXVEZNb3ZlKGxpYnJhcnkpIH0KIHsKQEAgLTUwLDcgKzUwLDcgQEAgVmVj
dG9yPFN0cmluZz4gV2ViTWV0YWxMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKIAogUmVm
UHRyPFdlYk1ldGFsRnVuY3Rpb24+IFdlYk1ldGFsTGlicmFyeTo6ZnVuY3Rpb25XaXRoTmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgR1BVRnVuY3Rpb24gZnVuY3Rpb24geyBt
X2xpYnJhcnksIG5hbWUgfTsKKyAgICBHUFVMZWdhY3lGdW5jdGlvbiBmdW5jdGlvbiB7IG1fbGli
cmFyeSwgbmFtZSB9OwogICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxMaWJyYXJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuaAppbmRleCBl
OGUxMWQ5ZWYwOTZmOTZjYTc5YmY0ZjhjMTliOGZhOTdjYjYyMmE4Li45ODc2YzIwYTBlODk5NWFh
YzJjZTQ0ZGJkYmI4OGYxOTE5YWVlYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbExpYnJhcnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1F
VEFMKQogCi0jaW5jbHVkZSAiR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJh
cnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBXZWJNZXRhbEZ1bmN0aW9uOwogCiBjbGFzcyBXZWJN
ZXRhbExpYnJhcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbExpYnJhcnk+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsTGlicmFyeT4gY3JlYXRlKEdQVUxpYnJhcnkmJiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsTGlicmFy
eT4gY3JlYXRlKEdQVUxlZ2FjeUxpYnJhcnkmJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsK
IAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
Q29kZTsgfQogCkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJNZXRh
bEZ1bmN0aW9uPiBmdW5jdGlvbldpdGhOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIFdlYk1ldGFsTGlicmFyeShHUFVMaWJyYXJ5JiYsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSk7CisgICAgV2ViTWV0YWxMaWJyYXJ5KEdQVUxlZ2FjeUxpYnJhcnkmJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKTsKIAogICAgIFN0cmluZyBtX3NvdXJjZUNvZGU7Ci0gICAgR1BV
TGlicmFyeSBtX2xpYnJhcnk7CisgICAgR1BVTGVnYWN5TGlicmFyeSBtX2xpYnJhcnk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IGU4ZTYx
OGM2MjFlNGNjYjdkODM5OTJlMGU3ODM2ZjRkOTI2M2YxMTUuLmNjNjgxYTk5ZjY4ZDQ5MmZkYjA5
ZDdiYjkwMjhlMzk0ZDI2ZTdhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0yOCw4ICsy
OCw4IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJH
UFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJNZXRhbEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYk1l
dGFsQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGUu
aCIKQEAgLTM4LDEyICszOCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJN
ZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyPiBXZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpj
cmVhdGUoR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJiBlbmNvZGVyKQorUmVmPFdlYk1ldGFsUmVu
ZGVyQ29tbWFuZEVuY29kZXI+IFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShH
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmIGVuY29kZXIpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIp
KSk7CiB9CiAKLVdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OldlYk1ldGFsUmVuZGVyQ29t
bWFuZEVuY29kZXIoR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJiBlbmNvZGVyKQorV2ViTWV0YWxS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihHUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2RlciYmIGVuY29kZXIpCiAgICAgOiBtX2VuY29kZXIgeyBXVEZN
b3ZlKGVuY29kZXIpIH0KIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaAppbmRleCA5ZGVkN2FiZTQ1NzMy
MTNlYjk1MzNlNjlmNDJiMGI4ZDllNzUxODYwLi5jYmU2NmZjNWE1NDFmYjI4OTk5ZGZmMTNiM2Vl
NGFhMGIyZDE3OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5o
IgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQwLDcgKzQwLDcg
QEAgY2xhc3MgV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlOwogY2xhc3MgV2ViTWV0YWxSZW5k
ZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsUmVuZGVyQ29tbWFu
ZEVuY29kZXI+IHsKIHB1YmxpYzoKICAgICB+V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcigp
OwotICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKEdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxSZW5kZXJD
b21tYW5kRW5jb2Rlcj4gY3JlYXRlKEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyJiYpOwog
CiAgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVT
dGF0ZSYpOwogICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoV2ViTWV0YWxEZXB0aFN0ZW5j
aWxTdGF0ZSYpOwpAQCAtNDksMTIgKzQ5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdQcmlt
aXRpdmVzKHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBjb3VudCk7CiAg
ICAgdm9pZCBlbmRFbmNvZGluZygpOwogCi0gICAgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImIGVu
Y29kZXIoKSB7IHJldHVybiBtX2VuY29kZXI7IH0KKyAgICBHUFVMZWdhY3lSZW5kZXJDb21tYW5k
RW5jb2RlciYgZW5jb2RlcigpIHsgcmV0dXJuIG1fZW5jb2RlcjsgfQogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIoR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihHUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmKTsKIAotICAgIEdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyIG1fZW5jb2RlcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciBtX2VuY29k
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKaW5kZXggMGZjNGJhYWE2MGZhYzc5ZDViYWJjNGFjMmY5ODYzYjc2
OThhZGYzYi4uM2VlZTc0NWI1YWRiZGZhYjcyZjMyZjQxYWRjMTkyYjA3YWUzOGIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMjgsOCArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIkdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJNZXRhbFRleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKaW5kZXggZWRkNGIw
NTdlNDYyMTAxYmQ4MjdiNjRiYzI2YTcxOGVkZmJmZDViZC4uMzk1OTAwMmJkOTk3NWIwZWI0MDU3
Njk5NzZjMWUyZjhlZjA4MWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxUZXh0dXJlOwogCiBjbGFzcyBX
ZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiB7CkBAIC01NCw3ICs1NCw3
IEBAIHByb3RlY3RlZDoKICAgICBXZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cigpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29u
c3QgPSAwOwogCiAgICAgUmVmUHRyPFdlYk1ldGFsVGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKaW5kZXggNjYy
OGZmOTY3NGI5NjZhNWFkYTQ4YTUzM2VmYjRkNTY1MmIzMTY5YS4uYWNlNDNkZGZkMjRhODk4YTgw
YzBlMDQ3ZDIyMTMzYWNkYTc4NzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTI4LDI1ICsyOCwyNSBAQAogCiAjaWYgRU5BQkxFKFdF
Qk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVRl
eHR1cmUuaCIKICNpbmNsdWRlICJXZWJNZXRhbFRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OmNyZWF0ZShHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciYmIGRlc2NyaXB0b3IpCitSZWY8V2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcj4gV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3Jl
YXRlKEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKFdURk1vdmUoZGVzY3JpcHRvcikpKTsKIH0KIAotV2ViTWV0
YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciYmIGRlc2NyaXB0b3IpCitXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKEdQ
VUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
ICAgICA6IG1fZGVzY3JpcHRvciB7IFdURk1vdmUoZGVzY3JpcHRvcikgfQogewogfQogCiBXZWJN
ZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViTWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpID0gZGVmYXVsdDsKIAotY29uc3QgR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkgY29uc3QKK2NvbnN0IEdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVzY3Jp
cHRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApp
bmRleCBkMTAxZTdiZTUwMTA4NDU3ZDhlNTZkNjcyNGNkYTYzZDFkZmQzMDQ1Li5lNWY4YmFhODRj
ODQwZTkyYmViNzVkNjc1N2E2ZGViZDA5NjMwYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
V0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IgZmluYWwgOiBwdWJsaWMgV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciYmKTsKIAogICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcihHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBleHBs
aWNpdCBXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKEdQVUxlZ2Fj
eVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYpOwogCi0gICAgY29uc3QgR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7
CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7CisgICAgR1BVTGVnYWN5UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKaW5kZXggMDVjNWZiMjA0ZTVhZGJlMjQ2ZTg5ZGQ1YTI0OTFiMjgzOTk0
N2MwZi4uMDliMmI4ZWEzNzZkMWMzYmI2NWY0MDAxODc3ZDhiNTFlY2E4NzRkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTMyLDEyICsz
MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbFJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjcmVhdGUoR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3ImJiBkZXNjcmlwdG9yKQorUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+IFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNy
ZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2Ny
aXB0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcihXVEZNb3ZlKGRlc2NyaXB0b3IpKSk7CiB9CiAKLVdlYk1l
dGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OldlYk1ldGFsUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihH
UFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
CiAgICAgOiBtX2Rlc2NyaXB0b3IgeyBXVEZNb3ZlKGRlc2NyaXB0b3IpIH0KIHsKIH0KQEAgLTU0
LDcgKzU0LDcgQEAgdm9pZCBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRDbGVhckRlcHRoKGRvdWJsZSBuZXdDbGVhckQKICAgICBtX2Rlc2NyaXB0b3Iuc2V0
Q2xlYXJEZXB0aChuZXdDbGVhckRlcHRoKTsKIH0KIAotY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yJiBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpkZXNjcmlwdG9yKCkgY29uc3QKK2NvbnN0IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciYgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cjo6ZGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVzY3JpcHRvcjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaAppbmRleCBiYTA5MDI5
M2VlNDBmNmNkOGUxNzkzNTQ2OWU3ODk0MDE1MDkyNGUwLi4yMTc1ODE2MGE1YWFhYzU4YTA1N2Uz
NTI0NjM5YzkzN2I4ZjhiODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAK
LSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwg
OiBwdWJsaWMgV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfldlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+IGNyZWF0ZShHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3I+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ciYmKTsKIAogICAgIGRvdWJsZSBjbGVhckRlcHRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDbGVh
ckRlcHRoKGRvdWJsZSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciYmKTsKKyAgICBleHBsaWNpdCBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yJiYpOwogCi0gICAgY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgbV9kZXNjcmlw
dG9yOworICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIG1f
ZGVzY3JpcHRvcjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlw
dG9yLmgKaW5kZXggMmUyMzg5YzlhNDczZTY3ZDdjNTBiZTMyNGI2ZWMzNTFjMjYzNDY1Zi4uYmJh
NDk0ZTM3ZDVkMWY3YzgzZGMwNzAxYzAwYmQxMWM3Nzc4YTVjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAgICAgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYg
ZGVwdGhBdHRhY2htZW50KCk7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJNZXRhbFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4mIGNvbG9yQXR0YWNobWVudHMoKTsKIAot
ICAgIGNvbnN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXNjcmlwdG9yOyB9CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3I7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKCk7CkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnRzOwogICAgIFJlZlB0cjxXZWJN
ZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBtX2RlcHRoQXR0YWNobWVu
dDsKIAotICAgIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKKyAgICBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7CiB9OwogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwCmluZGV4IDVjNmQ5NjIwZjNhOThlMmI5MWExMTRlMGZkMGZmYzhl
ZmMxYWNlODkuLjBlNTM0YzA5MDNjNzU3NjJmMjY1M2IzOWM0Zjk4OTJjYzQxYjU2YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
QEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRh
bFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViTWV0YWxSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorUmVmPFdlYk1ldGFsUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJNZXRhbFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoV1RGTW92ZShkZXNjcmlwdG9yKSkpOwogfQogCi1XZWJNZXRhbFJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IoR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yJiYgZGVzY3JpcHRvcikKK1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cihHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNj
cmlwdG9yKQogICAgIDogbV9kZXNjcmlwdG9yIHsgV1RGTW92ZShkZXNjcmlwdG9yKSB9CiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApp
bmRleCBiNjZlZjUyNWM1MTExNzAxYmI1N2Y3MzU1MGU2ZTJmNjY2NGU0NGRlLi5mYjg1NTgxMzE2
NTUxN2M0Zjk2ZTk3OTY2Njk1NDlkYmZmOTUxNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKEdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFs
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYpOwogCiAgICAgdW5zaWdu
ZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKICAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVk
KTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3ImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yJiYpOwogCi0gICAgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIG1fZGVzY3JpcHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRleCAwYzcxMjgwMWRlMjMzMjAw
MTM5Y2M0ZGYxMGMxMWIwMmYyNWVjZDdlLi41NDFkNzExMmFmMzYwZWJhNDBhYmVjNWJjNzdjMjkx
ZmM3MGFiNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2luY2x1ZGUgIkdQVUxlZ2FjeUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmluZGV4IDhhMDYyMDAw
MDFjZmY1NDk4NTE3NzM5MjJmYzE4ZTgyOTVjNjcxMjYuLjlkNzAxODU3OWJhZGQ1ZjQ1ZTcyMzM2
ZTVjZGI4MDQ5ZDc2YTY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBHUFVGdW5jdGlvbjsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNz
IEdQVUxlZ2FjeUZ1bmN0aW9uOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOwogY2xhc3MgV2ViTWV0YWxGdW5jdGlvbjsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOwogCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIGNvbnN0IEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1f
ZGVzY3JpcHRvcjsgfQogCiBwcml2YXRlOgogICAgIFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKCk7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UmVmUHRy
PFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xv
ckF0dGFjaG1lbnRzOwogCi0gICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG1fZGVzY3Jp
cHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9y
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKaW5kZXgg
MjEzOGJmZmRmMmQ4MTQyZDMwMzFiZTM4ZjYxMzNkY2RhYjIxOTRkZi4uZGQwZjA1NzZlMzY0OTZi
ZjBlZGY2YmViNzMxYzA0ZTJjODYxZDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBAIC0zMCwx
MiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViTWV0YWxSZW5kZXJQ
aXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlJiYgc3RhdGUpCitSZWY8V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRl
PiBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlJiYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlKFdURk1vdmUoc3RhdGUpKSk7CiB9CiAKLVdlYk1ldGFsUmVuZGVy
UGlwZWxpbmVTdGF0ZTo6V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKEdQVVJlbmRlclBpcGVs
aW5lU3RhdGUmJiBzdGF0ZSkKK1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6V2ViTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkK
ICAgICA6IG1fc3RhdGUgeyBXVEZNb3ZlKHN0YXRlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCmlu
ZGV4IDg4Zjc5OWRmNGUwYzViODlmYWE1ODM2YjQzNDI0OTAwNGQzNzMwYzIuLmIxN2ZkM2IyMTFi
ZGU1YTI5ZGJiOTgwYTFmZDA3Zjc4ZDQyMGJhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCkBAIC0yNyw3
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBA
IC0zNSwxNyArMzUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJNZXRhbFJl
bmRlclBpcGVsaW5lU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbFJlbmRlclBpcGVs
aW5lU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZT4gY3JlYXRlKEdQVVJlbmRlclBpcGVsaW5lU3RhdGUmJik7CisgICAgc3RhdGljIFJl
ZjxXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlJiYpOwogCiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lU3RhdGUm
IHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZShHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlJiYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVT
dGF0ZShHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiYpOwogCi0gICAgR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZSBtX3N0YXRlOworICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUgbV9z
dGF0ZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCAxNjllYWJkNDdkZjYyYmQ1NmRhMTczYzZkNDI4NTIzNzBlMzZmNjIwLi45MDQxM2VhMjQzNTNm
NmYxZDc0YzdlZDEwMmVjZmE1MDY3NjkxM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0j
aW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbENvbW1hbmRRdWV1ZS5oIgpAQCAtNzIsNyArNzIsNyBA
QCBzdGF0aWMgY29uc3QgaW50IGtNYXhUZXh0dXJlU2l6ZSA9IDQwOTY7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKIHsKLSAgICBHUFVEZXZpY2UgZGV2aWNlOworICAg
IEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CiAKICAgICBpZiAoIWRldmljZSkgewogICAgICAgICAv
LyBGSVhNRTogV2ViTWV0YWwgLSBkaXNwYXRjaCBhbiBldmVudCBoZXJlIGZvciB0aGUgZmFpbHVy
ZS4KQEAgLTg3LDcgKzg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk1ldGFsUmVuZGVyaW5nQ29u
dGV4dD4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmEKICAgICByZXR1cm4g
cmVuZGVyaW5nQ29udGV4dDsKIH0KIAotV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpXZWJNZXRh
bFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBHUFVEZXZpY2UmJiBkZXZpY2Up
CitXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OldlYk1ldGFsUmVuZGVyaW5nQ29udGV4dChDYW52
YXNCYXNlJiBjYW52YXMsIEdQVUxlZ2FjeURldmljZSYmIGRldmljZSkKICAgICA6IEdQVUJhc2Vk
Q2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX2RldmljZShXVEZNb3ZlKGRl
dmljZSkpCiB7CkBAIC0xNTMsNDIgKzE1Myw0MiBAQCB2b2lkIFdlYk1ldGFsUmVuZGVyaW5nQ29u
dGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKIFJlZjxXZWJNZXRhbExpYnJh
cnk+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlTGlicmFyeShjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsTGlicmFyeTo6Y3JlYXRlKEdQVUxp
YnJhcnkgeyBtX2RldmljZSwgc291cmNlQ29kZSB9LCBzb3VyY2VDb2RlKTsKKyAgICByZXR1cm4g
V2ViTWV0YWxMaWJyYXJ5OjpjcmVhdGUoR1BVTGVnYWN5TGlicmFyeSB7IG1fZGV2aWNlLCBzb3Vy
Y2VDb2RlIH0sIHNvdXJjZUNvZGUpOwogfQogCiBSZWY8V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0
YXRlPiBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUo
V2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0
dXJuIFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKEdQVVJlbmRlclBpcGVsaW5l
U3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9yKCkgfSk7CisgICAgcmV0dXJu
IFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9yKCkgfSk7CiB9CiAKIFJl
ZjxXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlPiBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICByZXR1cm4gV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRl
KEdQVURlcHRoU3RlbmNpbFN0YXRlIHsgbV9kZXZpY2UsIGRlc2NyaXB0b3IuZGVzY3JpcHRvcigp
IH0pOworICAgIHJldHVybiBXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlOjpjcmVhdGUoR1BVTGVn
YWN5RGVwdGhTdGVuY2lsU3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9yKCkg
fSk7CiB9CiAKIFJlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZVN0YXRlKFdlYk1ldGFsRnVuY3Rpb24m
IGZ1bmN0aW9uKQogewotICAgIHJldHVybiBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlOjpj
cmVhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUgeyBtX2RldmljZSwgZnVuY3Rpb24uZnVuY3Rp
b24oKSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZTo6Y3JlYXRl
KEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlIHsgbV9kZXZpY2UsIGZ1bmN0aW9uLmZ1bmN0
aW9uKCkgfSk7CiB9CiAKIFJlZjxXZWJNZXRhbENvbW1hbmRRdWV1ZT4gV2ViTWV0YWxSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVDb21tYW5kUXVldWUoKQogewotICAgIHJldHVybiBXZWJNZXRhbENv
bW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUNvbW1hbmRRdWV1ZSB7IG1fZGV2aWNlIH0pOworICAgIHJl
dHVybiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSB7
IG1fZGV2aWNlIH0pOwogfQogCiBSZWY8V2ViTWV0YWxEcmF3YWJsZT4gV2ViTWV0YWxSZW5kZXJp
bmdDb250ZXh0OjpuZXh0RHJhd2FibGUoKQogewotICAgIHJldHVybiBXZWJNZXRhbERyYXdhYmxl
OjpjcmVhdGUoR1BVRHJhd2FibGUgeyBtX2RldmljZSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxE
cmF3YWJsZTo6Y3JlYXRlKEdQVUxlZ2FjeURyYXdhYmxlIHsgbV9kZXZpY2UgfSk7CiB9CiAKIFJl
ZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVCdWZm
ZXIoSlNDOjpBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsQnVm
ZmVyOjpjcmVhdGUoR1BVQnVmZmVyIHsgbV9kZXZpY2UsIGRhdGEgfSk7CisgICAgcmV0dXJuIFdl
Yk1ldGFsQnVmZmVyOjpjcmVhdGUoR1BVTGVnYWN5QnVmZmVyIHsgbV9kZXZpY2UsIGRhdGEgfSk7
CiB9CiAKIFJlZjxXZWJNZXRhbFRleHR1cmU+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlVGV4dHVyZShXZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAg
IHJldHVybiBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVUZXh0dXJlIHsgbV9kZXZpY2UsIGRl
c2NyaXB0b3IuZGVzY3JpcHRvcigpIH0pOworICAgIHJldHVybiBXZWJNZXRhbFRleHR1cmU6OmNy
ZWF0ZShHUFVMZWdhY3lUZXh0dXJlIHsgbV9kZXZpY2UsIGRlc2NyaXB0b3IuZGVzY3JpcHRvcigp
IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGNmYzcwYmQw
OTZhZmQ5MTE4MWQzYzVmZGQ0YTE3NTJjMDU2MWNjMDMuLjUwY2NkNDY0MTc0ZTg1ZjhhY2E0ZTk2
Yjc2ODI2Y2M3NmU5YTVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5B
QkxFKFdFQk1FVEFMKQogCiAjaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwpAQCAtNjYsMTAgKzY2
LDEwIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViTWV0YWxCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihK
U0M6OkFycmF5QnVmZmVyVmlldyYpOwogICAgIFJlZjxXZWJNZXRhbFRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvciYpOwogCi0gICAgY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZTsgfQorICAgIGNvbnN0IEdQVUxlZ2Fj
eURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIEdQVURldmljZSYmKTsK
KyAgICBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIEdQVUxlZ2FjeURldmlj
ZSYmKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBzdG9wKCkgZmluYWw7CkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBt
YXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogCi0gICAgR1BVRGV2aWNlIG1fZGV2aWNlOworICAgIEdQVUxl
Z2FjeURldmljZSBtX2RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmUuY3BwCmluZGV4IGNkYzNl
MTZkM2U4ZjBlNjc4OTNkY2Y2N2I4ODBmNWU1YzMxMWFmM2IuLmU3MDk5OTgzNWU3NWY4NjE0M2Yy
OGRlZGEwYmNkN2U3MzIwNmQ0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxUZXh0dXJlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFdlYk1ldGFsVGV4dHVyZT4gV2ViTWV0YWxUZXh0dXJlOjpjcmVhdGUoR1BV
VGV4dHVyZSYmIHRleHR1cmUpCitSZWY8V2ViTWV0YWxUZXh0dXJlPiBXZWJNZXRhbFRleHR1cmU6
OmNyZWF0ZShHUFVMZWdhY3lUZXh0dXJlJiYgdGV4dHVyZSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJNZXRhbFRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkpOwogfQogCi1XZWJNZXRh
bFRleHR1cmU6OldlYk1ldGFsVGV4dHVyZShHUFVUZXh0dXJlJiYgdGV4dHVyZSkKK1dlYk1ldGFs
VGV4dHVyZTo6V2ViTWV0YWxUZXh0dXJlKEdQVUxlZ2FjeVRleHR1cmUmJiB0ZXh0dXJlKQogICAg
IDogbV90ZXh0dXJlIHsgV1RGTW92ZSh0ZXh0dXJlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5oCmluZGV4IGJlY2I0YWEzZjFiMDk3ZjM0ZGQ5
ZDZlMjQ3ZmExOGZmZmUwZTliZjcuLjMwYjdmNmNiNWRlMTA1MTg0NmFiZDA3OTgyODM4MWYzYTI5
N2U2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5o
CkBAIC0yNywyNyArMjcsMjcgQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUg
IkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lUZXh0dXJlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7CitjbGFzcyBHUFVMZWdhY3lUZXh0
dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViTWV0YWxUZXh0dXJlIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViTWV0YWxUZXh0dXJlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbFRl
eHR1cmU+IGNyZWF0ZShHUFVUZXh0dXJlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxUZXh0
dXJlPiBjcmVhdGUoR1BVTGVnYWN5VGV4dHVyZSYmKTsKIAogICAgIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlLndpZHRoKCk7IH0KICAgICB1bnNpZ25lZCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUuaGVpZ2h0KCk7IH0KIAotICAgIGNvbnN0IEdQVVRl
eHR1cmUmIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmU7IH0KKyAgICBjb25zdCBH
UFVMZWdhY3lUZXh0dXJlJiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxUZXh0dXJlKEdQVVRleHR1cmUmJik7Cisg
ICAgZXhwbGljaXQgV2ViTWV0YWxUZXh0dXJlKEdQVUxlZ2FjeVRleHR1cmUmJik7CiAKLSAgICBH
UFVUZXh0dXJlIG1fdGV4dHVyZTsKKyAgICBHUFVMZWdhY3lUZXh0dXJlIG1fdGV4dHVyZTsKIH07
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yLmgKaW5kZXggYzQ1MDAyMjNl
MWE1NGE2ZjZkNmVhNGNhNDEyMTZjYjgyNjY0YWI0Ny4uYzgzMjhkYTMyODJjYTk3YmZiMmY3ZGFk
YmI5MDA1MzgwYzkzMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsVGV4dHVyZURlc2NyaXB0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlICJHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01NSwxMiArNTUsMTIgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIHVzYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2FnZSh1bnNp
Z25lZCk7CiAKLSAgICBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIHsg
cmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9kZXNjcmlwdG9yOyB9CiAKIHByaXZhdGU6CiAg
ICAgV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBwaXhlbEZvcm1hdCwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpOwogCi0gICAgR1BVVGV4
dHVyZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAgIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yIG1fZGVzY3JpcHRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIu
aAppbmRleCA5MmMxNmZiNmYzNWI3MzM3ODNhYTk5NzkxMGY0ZTkxMTdlYTY1OWQ0Li5hMDljNGEy
MmZhMDkwYjEzOTI3MmYzOWZlNGViNGM4N2M4MmNkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTWV0YWxMYXllci5oCkBAIC0zMSw3
ICszMSw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgR1BVRGV2aWNlOworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOwogfQog
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtMzksMTMgKzM5LDEzIEBA
IGNsYXNzIEdQVURldmljZTsKICNlbHNlCiBAaW50ZXJmYWNlIFdlYk1ldGFsTGF5ZXIgOiBDQUxh
eWVyIHsgLy8gRklYTUU6IFdlYk1ldGFsIC0gRGlzYWJsZSBXZWJNZXRhbCBvbiBpT1Mgc2ltdWxh
dG9yPwogI2VuZGlmCi0gICAgV2ViQ29yZTo6R1BVRGV2aWNlKiBfY29udGV4dDsKKyAgICBXZWJD
b3JlOjpHUFVMZWdhY3lEZXZpY2UqIF9jb250ZXh0OwogICAgIGZsb2F0IF9kZXZpY2VQaXhlbFJh
dGlvOwogfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYykgV2ViQ29yZTo6R1BVRGV2aWNlKiBjb250
ZXh0OworQHByb3BlcnR5IChub25hdG9taWMpIFdlYkNvcmU6OkdQVUxlZ2FjeURldmljZSogY29u
dGV4dDsKIAotLSAoaWQpaW5pdFdpdGhHUFVEZXZpY2U6KFdlYkNvcmU6OkdQVURldmljZSopY29u
dGV4dDsKKy0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3JlOjpHUFVMZWdhY3lEZXZpY2Uq
KWNvbnRleHQ7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFj
ZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExheWVyLm1tCmluZGV4IDkxYzAy
MzM1NzM3Njg0MDEzMjFjZDM4ZGNhODk2Njc5N2UzZmFkYzQuLjNmZmRmMTlmNzdjM2Y5YmIzYTNk
MTQyYTdhODJjNjgxNzEwNDlmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTWV0YWxMYXllci5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQg
IkdQVUxlZ2FjeURldmljZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zOCw3
ICszOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJNZXRhbExheWVyCiAKIEBzeW50aGVzaXplIGNv
bnRleHQ9X2NvbnRleHQ7CiAKLS0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3JlOjpHUFVE
ZXZpY2UqKWNvbnRleHQKKy0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3JlOjpHUFVMZWdh
Y3lEZXZpY2UqKWNvbnRleHQKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIF9jb250
ZXh0ID0gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ODEwYjY2
MmY3ODQxZDdiYzU0MTUyZDA3YmUzZDdmZDFlZTljYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkKLXsKLSAg
ICBMT0coV2ViTWV0YWwsICJHUFVCdWZmZXI6On5HUFVCdWZmZXIoKSIpOwotfQotCi11bnNpZ25l
ZCBHUFVCdWZmZXI6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGVudHMgPyBt
X2NvbnRlbnRzLT5ieXRlTGVuZ3RoKCkgOiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODJlNjk0YTIxOTcyNjcy
MjlhYjcyYTdmMGQ2M2M3MGVkMzhhZTFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKLQotbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEFycmF5QnVmZmVyVmlldzsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVUJ1ZmZlciB7Ci1wdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgR1BVQnVmZmVyKGNvbnN0IEdQVURldmljZSYsIGNvbnN0
IEpTQzo6QXJyYXlCdWZmZXJWaWV3Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUJ1ZmZlcigp
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgSlND
OjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgp
OyB9Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQnVmZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkK
LSAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21ldGFsOwotI2VuZGlmCi0gICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDIxZGZiMmM1YzY4M2FlZWRkNjIzYzkxMWJlY2QwYzM4YzBhOGQ5Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHku
a2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIK
LQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVDb21tYW5kQnVmZmVyOjp+R1BVQ29tbWFuZEJ1ZmZlcigpCi17
Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIo
KSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZTY1OWZkZmJjYzcwNzQwOTY1MmVhNjJj
Y2NiOWQzNjBiZjkyMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZm
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21tYW5kUXVldWU7Ci1jbGFzcyBHUFVEcmF3YWJsZTsK
LQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR1BVQ29t
bWFuZEJ1ZmZlcihjb25zdCBHUFVDb21tYW5kUXVldWUmLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGVkQ2FsbGJhY2spOwotICAgIH5HUFVDb21tYW5kQnVmZmVyKCk7Ci0KLSAgICB2b2lkIGNv
bW1pdCgpIGNvbnN0OwotICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKEdQVURyYXdhYmxlJikgY29u
c3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQ29tbWFuZEJ1ZmZlciAqbWV0YWwoKSBjb25z
dCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXBy
aXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+IG1fbWV0YWw7Ci0jZW5kaWYK
LX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZFF1ZXVlLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlMTQ4ZWViZjBjYjBlYTg2ZmY2ZDkw
NWNiNDE4YmI4ZmQ1ZDYzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZFF1
ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQ29tbWFuZFF1ZXVlOjp+
R1BVQ29tbWFuZFF1ZXVlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kUXVldWU6
On5HUFVDb21tYW5kUXVldWUoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmQ5NmI2ODUw
ZWFiNzQ0YmE3ZjRjNDEzZGM5YWJiYjJkYzE3NTE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb21tYW5kUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JK
Q19QUk9UT0NPTChNVExDb21tYW5kUXVldWUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVURldmljZTsKLQotY2xhc3MgR1BVQ29tbWFuZFF1ZXVlIHsKLXB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHUFVDb21tYW5kUXVldWUoY29uc3QgR1BVRGV2aWNlJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUNvbW1hbmRRdWV1ZSgpOwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRM
YWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExDb21t
YW5kUXVldWUgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQotI2VuZGlm
Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExDb21tYW5kUXVl
dWU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTUxNmVjNDcxNjM1ZGRmZmQ0NWRmMjcxZWE3NzU1Y2Y5ZmE0MTMxYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
WXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotR1BVQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjp+R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6On5HUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXIoKSIpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRl
Q29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzEwN2UzMDhmM2Q5NTFkYTBlNjMxODhhZGFmNDg4MWJhNWY0YjEwMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAo
eS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXIpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFz
cyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGU7Ci0KLXN0
cnVjdCBHUFVTaXplOwotCi1jbGFzcyBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5k
QnVmZmVyJik7Ci0gICAgfkdQVUNvbXB1dGVDb21tYW5kRW5jb2RlcigpOwotCi0gICAgdm9pZCBz
ZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSYpIGNv
bnN0OwotICAgIHZvaWQgc2V0QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNp
Z25lZCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNwYXRjaChHUFVTaXplLCBHUFVTaXplKSBjb25zdDsK
LSAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRl
OgotICAgIFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0YWw7Ci0jZW5k
aWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGlu
ZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21w
dXRlUGlwZWxpbmVTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYjY2
NzIzYjgzYjIyNmNjZWZkZWVkNmE3ODgyM2Q1YTIxYjA1ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtp
a3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmVTdGF0
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZTo6fkdQVUNv
bXB1dGVQaXBlbGluZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6fkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlKCkiKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRjNTE4MjRiNDE0N2E2ZDVhM2I1YTc4MjE3OTA0
ZWM1ZjI3NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0
YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NP
TChNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRnVuY3Rpb247Ci0KLWNsYXNzIEdQVUNvbXB1dGVQaXBl
bGluZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSgpID0gZGVm
YXVsdDsKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25z
dCBHUFVGdW5jdGlvbiYpOwotICAgIH5HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSgpOwotCi0jaWYg
VVNFKE1FVEFMKQotICAgIE1UTENvbXB1dGVQaXBlbGluZVN0YXRlICptZXRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0
ZToKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IG1fbWV0YWw7Ci0jZW5k
aWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyOGIy
MDQ1NWRhOTdiNmNhYjJmMDA2OGEwZTBlODU0YzQ3ZjBiNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkiKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmEwMTk5ZTY0MTYxYzkzMzViODYwODgz
NGNiOGE4MjliYTE1NGZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xB
U1MgTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1l
bnVtIGNsYXNzIEdQVUNvbXBhcmVGdW5jdGlvbjsKLQotY2xhc3MgR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOwotICAg
IH5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7Ci0KLSAgICBib29sIGRlcHRoV3JpdGVFbmFi
bGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChib29sKSBjb25zdDsK
LQotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5jdGlvbigpIGNvbnN0Owot
ICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVQ29tcGFyZUZ1bmN0aW9uKSBjb25z
dDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yICptZXRh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1F
VEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4g
bV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGVwdGhTdGVuY2lsU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmMwMGY5Nzg1NTlmMmI0OTU1NmFjZDQ0ZmYwZWUwNjJhODJjNGUwMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
IgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURlcHRoU3RlbmNpbFN0YXRlOjp+R1BVRGVwdGhTdGVuY2ls
U3RhdGUoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVURlcHRoU3RlbmNpbFN0YXRlOjp+R1BV
RGVwdGhTdGVuY2lsU3RhdGUoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURlcHRoU3RlbmNpbFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDViZjNlMzIyYjcyMDE0YTMwNTgwMTg3MTc3ZjMzOGYyZDE3NDI1MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERl
cHRoU3RlbmNpbFN0YXRlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZp
Y2U7Ci1jbGFzcyBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSB7Ci1wdWJsaWM6Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1
bHQ7Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYpOwotICAgIH5HUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpOwot
Ci0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
bWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVT
RShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiBt
X21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmlj
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZmI1NTE2YTQ2YmQ4MmQwMjk4
NzcwNTA1Mjc3Y2MyMDU4NWQ0OTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmlj
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURldmljZTo6fkdQVURldmljZSgpCi17
Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRGV2aWNlOjp+R1BVRGV2aWNlKCkiKTsKLSAgICBkaXNj
b25uZWN0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMmZlMWEzZTg3ZGIyN2M3ZmYyOTFlMjgwZjM0MzFiZTk4
MTU5NjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdl
Yk1ldGFsTGF5ZXI7Ci0KLU9CSkNfUFJPVE9DT0woTVRMRGV2aWNlKTsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2UgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IEdQVURldmljZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVEZXZpY2UoKTsKLQotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBXZWJN
ZXRhbExheWVyICpsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KLSAgICBX
RUJDT1JFX0VYUE9SVCBDQUxheWVyICpwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0gICAgTVRMRGV2
aWNlICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0g
ICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgeyB9Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBkaXNjb25uZWN0KCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgUmV0YWluUHRyPFdlYk1l
dGFsTGF5ZXI+IG1fbGF5ZXI7Ci0gICAgUmV0YWluUHRyPE1UTERldmljZT4gbV9tZXRhbDsKLSNl
bmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2FibGUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmZhNzUwYWJmMTkzMTBiZGFmNWViZTRlNGRmMjI2
YTIzZTI2NmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVURyYXdh
YmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRHJhd2FibGU6On5HUFVEcmF3YWJsZSgpCi17Ci0g
ICAgTE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6On5HUFVEcmF3YWJsZSgpIik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiNjc5OGNlZGJiNGE5MjI4YzM2YjM0ZmQ3MjBlYzc5ODc3OTFjZWI1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERyYXdhYmxlKTsKLU9CSkNfUFJPVE9DT0woTVRM
VGV4dHVyZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotCi1j
bGFzcyBHUFVEcmF3YWJsZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR1BVRHJhd2FibGUoY29u
c3QgR1BVRGV2aWNlJik7Ci0gICAgfkdQVURyYXdhYmxlKCk7Ci0KLSAgICB2b2lkIHJlbGVhc2Uo
KTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEcmF3YWJsZSAqbWV0YWwoKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIG5vdCBhbGwgZHJhd2FibGVzIHNob3VsZCBoYXZlIHRo
aXMuIE9ubHkgdGhlIGZyYW1lYnVmZmVyLgotICAgIE1UTFRleHR1cmUgKnRleHR1cmUoKSBjb25z
dDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRM
RHJhd2FibGU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVudW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNGZmNDNkYTYzMjY5YTNh
Mjc1YmIzZjIwMTU1MmZlYzc0OTBiOWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVu
dW1zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVDb21wYXJlRnVu
Y3Rpb24gewotICAgIE5ldmVyID0gMCwKLSAgICBMZXNzID0gMSwKLSAgICBFcXVhbCA9IDIsCi0g
ICAgTGVzc0VxdWFsID0gMywKLSAgICBHcmVhdGVyID0gNCwKLSAgICBOb3RFcXVhbCA9IDUsCi0g
ICAgR3JlYXRlckVxdWFsID0gNiwKLSAgICBBbHdheXMgPSA3Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVGdW5jdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDljODA3Nzc0MzMzM2ZjOGRiZTg2MDA1OGI0YzQyOGFkZDQ1MGY3N2EuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1H
UFVGdW5jdGlvbjo6fkdQVUZ1bmN0aW9uKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVGdW5j
dGlvbjo6fkdQVUZ1bmN0aW9uKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUZ1
bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NjA0MDIwYjc5ZDhhNzli
Yjk2MGU3NDEwNThlZTFkMzhhMzJjM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUZ1
bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0wo
TVRMRnVuY3Rpb24pOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxpYnJhcnk7
Ci0KLWNsYXNzIEdQVUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBHUFVG
dW5jdGlvbihjb25zdCBHUFVMaWJyYXJ5JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB+R1BVRnVuY3Rpb24oKTsKLQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbmFtZSgpIGNvbnN0OwotCi0jaWYgVVNFKE1F
VEFMKQotICAgIE1UTEZ1bmN0aW9uICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0
KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8
TVRMRnVuY3Rpb24+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTQ1ZTM1MGFlZmI1
ZmY1YTc2NzBkYTE4MmNhZjE1MjgxMmU4NTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lCdWZmZXIuaCIKKworI2lmIEVO
QUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2Fj
eUJ1ZmZlcjo6fkdQVUxlZ2FjeUJ1ZmZlcigpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVQnVm
ZmVyOjp+R1BVQnVmZmVyKCkiKTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5QnVmZmVyOjpsZW5n
dGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzID8gbV9jb250ZW50cy0+Ynl0ZUxl
bmd0aCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZm
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Mzg5MTgxN2JiOTRiN2RhOTc5MTMwMzUwYzJlMGZjZDk3NTQ2NTgy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeUJ1ZmZlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK09CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2NsYXNzIEdQVUxlZ2FjeUJ1ZmZl
ciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVnYWN5QnVmZmVyKGNvbnN0IEdQ
VUxlZ2FjeURldmljZSYsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkdQVUxlZ2FjeUJ1ZmZlcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgSlNDOjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgpOyB9CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRM
QnVmZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KKyNlbmRpZgor
Citwcml2YXRlOgorI2lmIFVTRShNRVRBTCkKKyAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21l
dGFsOworI2VuZGlmCisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Cit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21t
YW5kQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTIxZDY1YjkwODNhNTAyMTcyOTVmYmE4Y2U4MWI3
ZmMwMmI3ZTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29t
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5B
QkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6On5HUFVMZWdhY3lDb21tYW5kQnVmZmVyKCkK
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kQnVmZmVyOjp+R1BVQ29tbWFuZEJ1ZmZl
cigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNv
bW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2EzZTA4YzIzNTM2ZWYwOWNkZDM5MzIxNWQ0ZTcx
NjBlMDcyZTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEJ1ZmZl
cik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
OworY2xhc3MgR1BVTGVnYWN5RHJhd2FibGU7CisKK2NsYXNzIEdQVUxlZ2FjeUNvbW1hbmRCdWZm
ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3Qg
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxi
YWNrKTsKKyAgICB+R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcigpOworCisgICAgdm9pZCBjb21taXQo
KSBjb25zdDsKKyAgICB2b2lkIHByZXNlbnREcmF3YWJsZShHUFVMZWdhY3lEcmF3YWJsZSYpIGNv
bnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRCdWZmZXIgKm1ldGFsKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPiBtX21ldGFsOworI2VuZGlm
Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNv
bW1hbmRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwNTI4MTgyYTBmZWVmOWZiMzcyMDVhYjYyYTc4
Y2EwZjY5ZWI4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjp+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCkKK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lDb21tYW5kUXVldWU6On5HUFVMZWdhY3lDb21tYW5k
UXVldWUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1h
bmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eUNvbW1hbmRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNmY4ZTJhODM0MjBhNDcxMDQ4ZDNjYjcwNDk5
OTE0MDY5YzUxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR1BVTGVnYWN5RGV2aWNlOworCitjbGFzcyBHUFVMZWdhY3lDb21tYW5kUXVldWUgewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbW1hbmRRdWV1
ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5
Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0
OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRRdWV1ZSAqbWV0YWwoKSBjb25zdCB7
IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiN2M5ZTdlNWIzNDM4NjI5
ZjM4Y2RiZjdhZGYyZmY5NzVjYWIyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNw
cApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtp
a3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0dQVUxlZ2FjeUNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlcigpCit7Cisg
ICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp+R1BVTGVn
YWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTdhN2E5Njc3Y2ZkNmY1NTUwMDY5OWYzNmNlYzE3MzlkOGFmY2EzYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JK
Q19QUk9UT0NPTChNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgCitjbGFzcyBHUFVMZWdhY3lCdWZmZXI7CitjbGFzcyBHUFVMZWdhY3lDb21tYW5k
QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU7CisKK3N0cnVjdCBH
UFVMZWdhY3lTaXplOworCitjbGFzcyBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25z
dCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJik7CisgICAgfkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5k
RW5jb2RlcigpOworCisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVM
ZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0QnVmZmVyKGNv
bnN0IEdQVUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgY29uc3Q7CisgICAgdm9p
ZCBkaXNwYXRjaChHUFVMZWdhY3lTaXplLCBHUFVMZWdhY3lTaXplKSBjb25zdDsKKyAgICB2b2lk
IGVuZEVuY29kaW5nKCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0YWw7CisjZW5kaWYKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI3MDRmY2U1NWVkZWFjYzFjZmM0
YTc4OWI4MzU1MWRiMjY2Y2RjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEg
KHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0dQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKQoreworICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmI5
MzAzNzAwOWZiODc1MDZhNjMzODUxNzJlZjUwNzc1ZmEzNmFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVU
QUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQ29t
cHV0ZVBpcGVsaW5lU3RhdGUpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxl
Z2FjeURldmljZTsKK2NsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZSB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUo
Y29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mKTsKKyAgICB+
R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKTsKKworI2lmIFVTRShNRVRBTCkKKyAgICBN
VExDb21wdXRlUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdl
dCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRy
PE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYzc5ZDZkZDYzMTNjMmEzZDg3ZDI0NzkxZDc2
YzgzODA1NDMxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
fkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwg
IkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCki
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Y2JmMTgyNWQwOTA1NzM1
ZTRlNDUwOWQxOTJiZTRhZTgyNjY3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1
bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIHsKK3B1Ymxp
YzoKKyAgICBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisgICAgfkdQVUxlZ2Fj
eURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKworICAgIGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQo
KSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoV3JpdGVFbmFibGVkKGJvb2wpIGNvbnN0OworCisg
ICAgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihHUFVMZWdhY3lDb21wYXJlRnVuY3Rp
b24pIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0
b3IgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNp
ZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAyN2Y1NGY3Y2JhODA2NGFhMjU5ZmU3NjJjOGRhZGRkMjUyNDQ1NDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkKK3sKKyAgICBM
T0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRo
U3RlbmNpbFN0YXRlKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY0ZmY1NWE4NDY1
OTk4MzZiZjg1ZDhmMzk5NDhlZTI2NmVmMzcxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RP
Q09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSB7CitwdWJsaWM6CisgICAgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvciYpOworICAgIH5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSgpOwor
CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
bWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVT
RShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiBt
X21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRlZmI2NzRmZDY0ZmIyYzQ5NWQzOWViODlj
OGNkZDZhOGZhYzRlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVn
YWN5RGV2aWNlOjp+R1BVTGVnYWN5RGV2aWNlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVM
ZWdhY3lEZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UoKSIpOworICAgIGRpc2Nvbm5lY3QoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NDZkMzViYTUxZjZjZTA2NWI2YjBjY2RiMTllZjE0ZjQ3OGU1MWU2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURldmlj
ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBX
ZWJNZXRhbExheWVyOworCitPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JF
X0VYUE9SVCBHUFVMZWdhY3lEZXZpY2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5
RGV2aWNlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yISgpIGNvbnN0Owor
CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgV2ViTWV0YWxMYXllciAqbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyLmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgQ0FMYXllciAqcGxhdGZvcm1MYXllcigp
IGNvbnN0OworICAgIE1UTERldmljZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdl
dCgpOyB9CisjZW5kaWYKKworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGNvbnN0IHsg
fQorCitwcml2YXRlOgorICAgIHZvaWQgZGlzY29ubmVjdCgpOworCisjaWYgVVNFKE1FVEFMKQor
ICAgIFJldGFpblB0cjxXZWJNZXRhbExheWVyPiBtX2xheWVyOworICAgIFJldGFpblB0cjxNVExE
ZXZpY2U+IG1fbWV0YWw7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5RHJhd2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDJmZGM1OWI0YTAwOTRkZmEw
YWFkODI1YTY5ZGMwNjU3ZjFmMDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgpCit7CisgICAgTE9H
KFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgpIik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhYmZmZTJlOWQ1OTkwZTZlMTgxNzk4YjAyYTNiMzFhYWYxYjM5YjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RHJhd2FibGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisK
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMRHJhd2FibGUp
OworT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2NsYXNzIEdQVUxlZ2FjeURyYXdhYmxlIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lEcmF3YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2Um
KTsKKyAgICB+R1BVTGVnYWN5RHJhd2FibGUoKTsKKworICAgIHZvaWQgcmVsZWFzZSgpOworCisj
aWYgVVNFKE1FVEFMKQorICAgIE1UTERyYXdhYmxlICptZXRhbCgpIGNvbnN0OworCisgICAgLy8g
RklYTUU6IFdlYk1ldGFsIC0gbm90IGFsbCBkcmF3YWJsZXMgc2hvdWxkIGhhdmUgdGhpcy4gT25s
eSB0aGUgZnJhbWVidWZmZXIuCisgICAgTVRMVGV4dHVyZSAqdGV4dHVyZSgpIGNvbnN0OworI2Vu
ZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExEcmF3YWJs
ZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeUVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5RW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWUxOGQ0MjMwMzUwYzhjZjU5MTg5YjQ0ZTAxMmZl
OTIzMTM5OTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUVudW1zLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQk1FVEFMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgR1BVTGVn
YWN5Q29tcGFyZUZ1bmN0aW9uIHsKKyAgICBOZXZlciA9IDAsCisgICAgTGVzcyA9IDEsCisgICAg
RXF1YWwgPSAyLAorICAgIExlc3NFcXVhbCA9IDMsCisgICAgR3JlYXRlciA9IDQsCisgICAgTm90
RXF1YWwgPSA1LAorICAgIEdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQWx3YXlzID0gNworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc0ZDU0MjU4MGFjZDdkZTAwMTY3OGYwNzQ1YjE0YzQ4NmVhMzIxZGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVn
YWN5RnVuY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxl
Z2FjeUZ1bmN0aW9uKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lGdW5jdGlvbjo6
fkdQVUxlZ2FjeUZ1bmN0aW9uKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeUZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY5NjkwYzU3OGFjNmExZWY2NzQ1Mzgx
OGE3NzRhZDhkN2I1NmQwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
T0JKQ19QUk9UT0NPTChNVExGdW5jdGlvbik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR1BVTGVnYWN5TGlicmFyeTsKKworY2xhc3MgR1BVTGVnYWN5RnVuY3Rpb24geworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIEdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxp
YnJhcnkmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdh
Y3lGdW5jdGlvbigpOworCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRM
RnVuY3Rpb24gKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlm
CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExGdW5jdGlvbj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5TGlicmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5TGlicmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMyYjM5NjJkNzg1ZmUyNTAzOWVkZmM0
MDQ1ZDUxNTA0NGZlMjdhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJhcnkuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
UFVMZWdhY3lMaWJyYXJ5Ojp+R1BVTGVnYWN5TGlicmFyeSgpCit7CisgICAgTE9HKFdlYk1ldGFs
LCAiR1BVTGVnYWN5TGlicmFyeTo6fkdQVUxlZ2FjeUxpYnJhcnkoKSIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUwZGYz
MTIyYmIyMDI1ZDEwOWU0NjRkYjEwMGYyZDdiOTY4YTZiMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKKworY2xhc3MgR1BVTGVnYWN5TGli
cmFyeSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVnYWN5TGlicmFyeShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5HUFVMZWdhY3lMaWJyYXJ5KCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgbGFiZWwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNvbnN0
IFN0cmluZyYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZnVu
Y3Rpb25OYW1lcygpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTExpYnJhcnkgKm1l
dGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0Uo
TUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBtX21ldGFsOworI2Vu
ZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZTc0ODc1ZDdh
OWJhMjlmMmIxMDE4OGVmMWU4ZTFmMDgxMTZjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVu
ZGVyQ29tbWFuZEVuY29kZXIuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNl
NjFlMDM3NWI1MjNjNjBhMDAxMDA3MGI1NTNiY2Y1ZDMwMDQ1NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJD
b21tYW5kRW5jb2Rlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5
QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjsKK2NsYXNzIEdQVUxlZ2FjeURl
cHRoU3RlbmNpbFN0YXRlOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I7Citj
bGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOworCitjbGFzcyBHUFVMZWdhY3lSZW5k
ZXJDb21tYW5kRW5jb2RlciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVu
Y29kZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciYsIGNvbnN0IEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yJik7CisgICAgfkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCk7
CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29u
c3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFZlcnRl
eEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXImLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKKyAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IEdQVUxlZ2Fj
eUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIHZv
aWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGNvdW50KSBjb25zdDsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7CisKKyNpZiBVU0Uo
TUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYWY1ODEwN2MzZTNkYTAxMjhjZmMwODM4ODkxODk5YTM1
ZmNlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BV
TGVnYWN5VGV4dHVyZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwg
IkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzYzc1MGQ0YjMxMWE0ZWEyOTUyZDk3YzczZjg4
MTA0MmQ0MDk3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVRleHR1cmU7CisK
K2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6
CisgICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAg
dW5zaWduZWQgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0TG9hZEFjdGlvbih1bnNp
Z25lZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBzdG9yZUFjdGlvbigpIGNvbnN0OworICAgIHZv
aWQgc2V0U3RvcmVBY3Rpb24odW5zaWduZWQpIGNvbnN0OworCisgICAgdm9pZCBzZXRUZXh0dXJl
KGNvbnN0IEdQVUxlZ2FjeVRleHR1cmUmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBN
VExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYK
KworI2lmIFVTRShNRVRBTCkKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yICopOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I+IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E4MmU5NGQwODM2
MjkzMjU1NTIxYWUwYzRlOTRmNThmZjVhZWQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+
R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
Ojp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lN2U4NDFjOTFiZDI0NzNiMWM5N2ZkMjJlODUyNjY5MTBiZjk3MzRmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVTGVnYWN5UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyNpZiBVU0UoTUVUQUwpCisg
ICAgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKik7CisjZW5kaWYKKyAgICB+R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIFZlY3RvcjxmbG9h
dD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0
b3I8ZmxvYXQ+JikgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWU5YThiNzNiM2U2OTg5YmM2NmIzZDM1NTZiMDcxMDMxMDFiMmJlYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNmMxYWY3OTA1M2U2YzFmNjU2NzVlYzg4MWVjYjZjMjg5NTdjOGQwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyNpZiBVU0UoTUVU
QUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoTVRM
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKik7CisjZW5kaWYKKyAgICB+R1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIGRvdWJs
ZSBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVhckRlcHRoKGRvdWJsZSkgY29u
c3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIE1UTFJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MzZhN2I3MjNlZDQxMjdlZDUzNGUwM2NmNTE3
OWE5ZTIyYTIxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWU4MTY5MGJlZTFjMjE3NjIwM2E1OTJhZDIyNjcx
ZmI0ZTRjOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7
CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworICAgIH5HUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvcigpOworCisgICAgVmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisgICAgR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZGVwdGhBdHRhY2htZW50KCkgY29u
c3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgKm1ldGFs
KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWlu
UHRyPE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYThlNmUxMjJhMzVjMjg3MjEyNzRmOGJjZDVmNDNiNDY3NTZhM2ZlOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyYzYwMzQ2ODYzNzNkMTI5MDJkYjYyOTIwNzcwYmZiMDFjMWM1ZDAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorI2lmIFVTRShNRVRBTCkKKyAgICBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICopOworI2VuZGlmCisgICAgfkdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAgdW5zaWdu
ZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVk
KSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRB
TCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMWZkNjBjM2Y1YWI4YmI4NjYwOWJjMjc1ZTAxOTJh
NTI1YmE2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzA5
MDdlODFmMGQxYzM0OTI0MmVkNWY4MjllM2VlMzNjODg5ZGYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVn
YWN5RnVuY3Rpb247CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7
CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAg
fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOworCisgICAgdm9pZCBzZXRWZXJ0
ZXhGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNvbnN0OworICAgIHZvaWQgc2V0
RnJhZ21lbnRGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNvbnN0OworCisgICAg
dW5zaWduZWQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsKKworICAgIFZlY3Rv
cjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9y
QXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIHZvaWQgcmVzZXQoKSBjb25zdDsKKworI2lmIFVT
RShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7
CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0
YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZTRmOWM2ZDgwOTU4M2E0NzI0MzJhMWI2NjJkYjgzYzcwZmQx
YTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6On5HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZVN0YXRlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYTA5ZTZhNDhhMzQ4OGE0ZTliYTI1ZmFmMjhlZTI3NzM4OGM1
MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaApAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUg
eworcHVibGljOgorICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKSA9IGRlZmF1bHQ7
CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2Um
LCBjb25zdCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKKyAgICB+R1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkK
KyAgICBNVExSZW5kZXJQaXBlbGluZVN0YXRlICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNp
ZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0
YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5U2l6ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MGNlYTM1MWZiOWQ2YTM4Y2FiMzY0Y2NjZTk3
MWFkZTI4NDMyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5U2l6ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdHJ1Y3Qg
R1BVTGVnYWN5U2l6ZSB7CisgICAgdW5zaWduZWQgd2lkdGg7CisgICAgdW5zaWduZWQgaGVpZ2h0
OworICAgIHVuc2lnbmVkIGRlcHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lUZXh0dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDljYzJjODk0MWZhNzRhNmY3N2Jk
MjUxODc1ZTY5ZmU5OTA1MzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdF
Qk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dQVUxlZ2FjeVRleHR1cmU6On5HUFVMZWdhY3lUZXh0dXJlKCkKK3sKKyAgICBMT0coV2ViTWV0
YWwsICJHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSgpIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWZl
YzJlMjA3NmUxZmI3ODAzMmVlOWU3ODAyNWEyNzBhZjkwNDFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOworY2xhc3MgR1BVTGVnYWN5RHJh
d2FibGU7CitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjsKKworY2xhc3MgR1BVTGVn
YWN5VGV4dHVyZSB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdh
Y3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIGV4cGxp
Y2l0IEdQVUxlZ2FjeVRleHR1cmUoY29uc3QgR1BVTGVnYWN5RHJhd2FibGUmKTsKKyAgICB+R1BV
TGVnYWN5VGV4dHVyZSgpOworCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBoZWlnaHQoKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExUZXh0dXJlICpt
ZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxNVExUZXh0dXJlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY5YmI1MDY5MjQxNWRlMzJjYTA2ZTQ1YjI2OWJiOTQ4NjExOGZkYWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
KCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVVRleHR1
cmVEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY0Nzk3M2U5MzJh
NDhiNjIwNzUwODY3MWMzYTg1MTZhYTI2ZjIyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExUZXh0dXJlRGVzY3JpcHRvcjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvciB7
CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgcGl4ZWxG
b3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsK
KyAgICB+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IoKTsKKworICAgIHVuc2lnbmVkIHdpZHRo
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1bnNp
Z25lZCBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCkgY29uc3Q7
CisKKyAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2FtcGxl
Q291bnQodW5zaWduZWQpIGNvbnN0OworCisgICAgdW5zaWduZWQgdGV4dHVyZVR5cGUoKSBjb25z
dDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkKSBjb25zdDsKKworICAgIHVuc2ln
bmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNpZ25l
ZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VXNh
Z2UodW5zaWduZWQpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTFRleHR1cmVEZXNj
cmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRl
OgorICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpYnJhcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpYnJhcnkuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OGM2YzNjMzZmNDFkYzQ3ZTRjNGE1OWIyMDY5MmYwNDRmYTc1
NTM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaWJyYXJ5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGlicmFyeS5oIgot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUxpYnJhcnk6On5HUFVMaWJyYXJ5KCkKLXsKLSAgICBMT0coV2Vi
TWV0YWwsICJHUFVMaWJyYXJ5Ojp+R1BVTGlicmFyeSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGlicmFyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxpYnJhcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhYzQ0
NjRlODQyYmM3ZjRkMDI3YjJiZjA0NTQ5NGUyZGFiNTdmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGlicmFyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpD
X1BST1RPQ09MKE1UTExpYnJhcnkpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VURldmljZTsKLQotY2xhc3MgR1BVTGlicmFyeSB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgR1BVTGlicmFyeShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMaWJyYXJ5KCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVs
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmlu
Zz4gZnVuY3Rpb25OYW1lcygpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTExpYnJh
cnkgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQotI2VuZGlmCi0KLSNp
ZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBtX21ldGFs
OwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NzQ2MWE4ZmVjNDRiOTM3OTZhZjI4NjAyNzEzMzQ3NWY0MTIwZDVkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVSZW5k
ZXJDb21tYW5kRW5jb2RlcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXI6On5HUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWUyMDRhOGY5ZTMyNmE0M2MxZWNiZTg5MTYzYmM4MzBh
Nzk0MTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1F
VEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFJl
bmRlckNvbW1hbmRFbmNvZGVyKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVC
dWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BVRGVwdGhTdGVuY2lsU3Rh
dGU7Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLWNsYXNzIEdQVVJlbmRlclBpcGVs
aW5lU3RhdGU7Ci0KLWNsYXNzIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyIHsKLXB1YmxpYzoKLSAg
ICBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiwgY29uc3Qg
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKLSAgICB+R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIo
KTsKLQotICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVSZW5kZXJQaXBl
bGluZVN0YXRlJikgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBH
UFVEZXB0aFN0ZW5jaWxTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNv
bnN0IEdQVUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgR1BVQnVmZmVyJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNp
Z25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNvbnN0OwotICAgIHZv
aWQgZW5kRW5jb2RpbmcoKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAg
UmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiBtX21ldGFsOwotI2VuZGlmCi19Owot
ICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDcxNjJmN2ZlNzczZjViMjA5OWVhNDZkOGJjOWQwMDllYTk5NzdkZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDkyMzg1YTM4NjM1OWQzNTEyMzZiOTg5ODc4YmVhNDgzYzBm
MjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1U
TFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHUFVUZXh0dXJlOwotCi1jbGFzcyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IgewotcHVibGljOgotICAgIH5HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Io
KTsKLQotICAgIHVuc2lnbmVkIGxvYWRBY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldExvYWRB
Y3Rpb24odW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgc3RvcmVBY3Rpb24oKSBjb25z
dDsKLSAgICB2b2lkIHNldFN0b3JlQWN0aW9uKHVuc2lnbmVkKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0VGV4dHVyZShjb25zdCBHUFVUZXh0dXJlJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0g
ICAgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2Vu
ZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ciAqKTsKLQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmIxNTU5
YTZiYTdiY2Q4ODg2YmFhMmYyNjYwMDBhZDJkYzAxN2IyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNp
bmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3MjQ0NjEzZWY2YzBiODYwYjBlN2Y3MDVlN2U3MzY3MzBkZGJm
ZDk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCi0KLU9CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yIHsKLXB1YmxpYzoKLSNpZiBVU0UoTUVUQUwpCi0gICAgR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgKik7Ci0jZW5kaWYKLSAgICB+R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKLQotICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OwotICAgIHZvaWQg
c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVU
QUwpCi0gICAgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkg
Y29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NDU3ZTcyMzRmY2E1Nzg3Yzk5
MTM2MmQ1ZjcwMDAyNzU4YWViNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkK
LXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDcyZmQ3OTIwMmQ3YzI2YmYyMDRmMDU2MmMwYWNhMzlhOGIyYzkwZTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQot
T0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvciA6IHB1YmxpYyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgewotcHVi
bGljOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcihNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciAqKTsKLSNlbmRp
ZgotICAgIH5HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOwotCi0gICAg
ZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKLSAgICB2b2lkIHNldENsZWFyRGVwdGgoZG91Ymxl
KSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgTVRMUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOTcxYmZmODc4YWRjZTYx
YmJkYmRhY2JkNmEwNTVjNTQ4Mzc5NTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQotewot
ICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjlkNGUzZGQ5ODUwYWViOGNiNjk4YmNiMDEwMjQ3YWEyNGNkODI3OS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjsKLWNsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOwot
Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IoKTsKLSAgICB+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLQotICAg
IFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRh
Y2htZW50cygpIGNvbnN0OwotICAgIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTFJl
bmRlclBhc3NEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVU
QUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbV9t
ZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODNiYTExMWQzNmQz
YTA4MjM5NmMzOGMzY2ZiNDdkMmRlZTAzMWFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MzZjZmYxNTU2
MGY3ZGQ3Y2E2OWM1NjQzOTE2ZGRhYWYwNjYzMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgewotcHVibGljOgotI2lmIFVT
RShNRVRBTCkKLSAgICBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
TVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICopOwotI2VuZGlmCi0g
ICAgfkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOwotCi0gICAg
dW5zaWduZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVu
c2lnbmVkKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVT
RShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGMxYzRjOWZiMTAxNDExOGFi
ZGJkYjEzZDdkOTc3YTliMTM2OWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5HUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YzVlNjhhN2Y3MDIzNzg5MzM1ZmJk
MmUwZTI1YzhkN2E4NmMxMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpD
X0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVGdW5jdGlvbjsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsK
LXB1YmxpYzoKLSAgICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKLSAgICB+R1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICB2b2lkIHNldFZlcnRleEZ1bmN0aW9uKGNv
bnN0IEdQVUZ1bmN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRGcmFnbWVudEZ1bmN0aW9uKGNv
bnN0IEdQVUZ1bmN0aW9uJikgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3Jt
YXQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgVmVjdG9yPEdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50cygpIGNvbnN0OwotCi0gICAgdm9p
ZCByZXNldCgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJp
dmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtX21ldGFs
OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVs
aW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBpcGVsaW5lU3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWIy
YjNlODIzNDJjZGI1OWM3ZDk3YmVlODM5MTNiOTlkNjk4ODIzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lU3RhdGU6On5HUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjp+
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lU3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY0YWZlZDE3MGRkY2M4ODFiYmE0MmVmZTI1MDY0ZDgzYWU3YTcyZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkgPSBkZWZhdWx0
OwotICAgIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAgfkdQVVJlbmRlclBpcGVsaW5lU3RhdGUo
KTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
U3RyaW5nJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMUmVuZGVyUGlwZWxpbmVT
dGF0ZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToK
LSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9tZXRhbDsKLSNlbmRpZgot
fTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2l6ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNpemUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDY1OGYwODc4ZTVkN2E3YjJmMWFlODdjYzYxZjNmN2UzOGRlYzkyMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2l6ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lr
dXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICAKLXN0cnVjdCBHUFVTaXplIHsKLSAgICB1bnNpZ25lZCB3aWR0aDsKLSAgICB1
bnNpZ25lZCBoZWlnaHQ7Ci0gICAgdW5zaWduZWQgZGVwdGg7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVRleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ZjExNDY5ZDRmMmExYTM4ODNlNGZhZWY2MTg0Y2U4MzRiMzQ5Mjk0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVUZXh0dXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFM
KQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVRl
eHR1cmU6On5HUFVUZXh0dXJlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlOjp+
R1BVVGV4dHVyZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVy
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3YTMxN2IyMmUyZmVhOTI2NmEzOGQwNDc1
ODA3YzVmYmFmZDk5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFRleHR1cmUp
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVURy
YXdhYmxlOwotY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVVRleHR1cmUg
ewotcHVibGljOgotICAgIEdQVVRleHR1cmUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVVGV4
dHVyZURlc2NyaXB0b3ImKTsKLSAgICBleHBsaWNpdCBHUFVUZXh0dXJlKGNvbnN0IEdQVURyYXdh
YmxlJik7Ci0gICAgfkdQVVRleHR1cmUoKTsKLQotICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7
Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRM
VGV4dHVyZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0
ZToKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJjY2Y0MjMxNjU2NDhlMDRlODY0YmVi
YzExYmQzNWM5OTU2MjdjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVRleHR1
cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRh
bCwgIkdQVVRleHR1cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURlc2NyaXB0b3IoKSIpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1ODcxZDY2ZWQ5YTIxNjc3NWIyMjkwYmQ2
OGUwZTMxYWIyZjUwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExU
ZXh0dXJlRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVUZXh0
dXJlRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVVGV4dHVyZURlc2NyaXB0b3IodW5zaWdu
ZWQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIGJvb2wgbWlw
bWFwcGVkKTsKLSAgICB+R1BVVGV4dHVyZURlc2NyaXB0b3IoKTsKLQotICAgIHVuc2lnbmVkIHdp
ZHRoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1
bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCkgY29u
c3Q7Ci0KLSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2Ft
cGxlQ291bnQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgdGV4dHVyZVR5cGUoKSBj
b25zdDsKLSAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkKSBjb25zdDsKLQotICAgIHVu
c2lnbmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNp
Z25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCB1c2FnZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
VXNhZ2UodW5zaWduZWQpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTFRleHR1cmVE
ZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2
YXRlOgotICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRp
ZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVQnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVCdWZmZXJNZXRhbC5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzMGQ5MzAzYjI2YTcwYWExMWYyNDk5
NGMzMmJjZDdlMDI5ZGFhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVCdWZmZXJN
ZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZp
Y2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyVmlldy5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9HaWdh
Y2FnZS5oPgotI2ltcG9ydCA8d3RmL1BhZ2VCbG9jay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVmZmVyKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBK
U0M6OkFycmF5QnVmZmVyVmlldyYgZGF0YSkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVCdWZm
ZXI6OkdQVUJ1ZmZlcigpIik7Ci0KLSAgICBpZiAoIWRldmljZS5tZXRhbCgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHBhZ2VTaXplID0gV1RGOjpwYWdlU2l6ZSgpOwotICAg
IHNpemVfdCBwYWdlQWxpZ25lZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplLCBk
YXRhLmJ5dGVMZW5ndGgoKSk7Ci0gICAgdm9pZCogcGFnZUFsaWduZWRDb3B5ID0gR2lnYWNhZ2U6
OnRyeUFsaWduZWRNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcGFnZVNpemUsIHBhZ2VBbGln
bmVkU2l6ZSk7Ci0gICAgaWYgKCFwYWdlQWxpZ25lZENvcHkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtZW1jcHkocGFnZUFsaWduZWRDb3B5LCBkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxl
bmd0aCgpKTsKLSAgICBtX2NvbnRlbnRzID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhw
YWdlQWxpZ25lZENvcHksIGRhdGEuYnl0ZUxlbmd0aCgpLCBbXSAodm9pZCogcHRyKSB7Ci0gICAg
ICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIpOwotICAg
IH0pOwotICAgIG1fY29udGVudHMtPnJlZigpOwotICAgIEFycmF5QnVmZmVyKiBjYXB0dXJlZENv
bnRlbnRzID0gbV9jb250ZW50cy5nZXQoKTsKLSAgICBtX21ldGFsID0gYWRvcHROUyhbZGV2aWNl
Lm1ldGFsKCkgbmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5Om1fY29udGVudHMtPmRhdGEoKSBsZW5n
dGg6cGFnZUFsaWduZWRTaXplIG9wdGlvbnM6TVRMUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVE
ZWZhdWx0IGRlYWxsb2NhdG9yOl4odm9pZCosIE5TVUludGVnZXIpIHsKLSAgICAgICAgY2FwdHVy
ZWRDb250ZW50cy0+ZGVyZWYoKTsKLSAgICB9XSk7Ci0gICAgaWYgKCFtX21ldGFsKSB7Ci0gICAg
ICAgIG1fY29udGVudHMtPmRlcmVmKCk7Ci0gICAgICAgIG1fY29udGVudHMgPSBudWxscHRyOwot
ICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbW1hbmRCdWZmZXJN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbW1h
bmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkM2RjMjM2
ZTEyM2ZkNzhmZTU1NjE4ZDIwMzg4MDdjMTQ1ZTBmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21tYW5kQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUNvbW1hbmRRdWV1ZS5oIgotI2ltcG9ydCAiR1BVRHJh
d2FibGUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcihj
b25zdCBHUFVDb21tYW5kUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGVk
Q2FsbGJhY2spCi0gICAgOiBtX21ldGFsIHsgW3F1ZXVlLm1ldGFsKCkgY29tbWFuZEJ1ZmZlcl0g
fQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZm
ZXIoKSIpOwotCi0gICAgW21fbWV0YWwgYWRkQ29tcGxldGVkSGFuZGxlcjpCbG9ja1B0cjx2b2lk
IChpZDxNVExDb21tYW5kQnVmZmVyPik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRlZENhbGxiYWNr
ID0gV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFjayldIChpZDxNVExDb21tYW5kQnVmZmVyPikgbXV0
YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFj
aykpOwotICAgIH0pLmdldCgpXTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpwcmVzZW50
RHJhd2FibGUoR1BVRHJhd2FibGUmIGRyYXdhYmxlKSBjb25zdAotewotICAgIGlmICghbV9tZXRh
bCB8fCAhZHJhd2FibGUubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwg
cHJlc2VudERyYXdhYmxlOmRyYXdhYmxlLm1ldGFsKCldOwotICAgIGRyYXdhYmxlLnJlbGVhc2Uo
KTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb21taXQoKSBjb25zdAotewotICAgIFtt
X21ldGFsIGNvbW1pdF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21t
YW5kUXVldWVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
ZTJhMDBhN2ZmODcwYmQ4ZDNmOTI4OTYzMWEyNmVmZDhhMjU0ZmQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
NzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNv
bW1hbmRRdWV1ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldlYktpdCI7Ci1zdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9IEAiY29tLmFwcGxlLldlYktp
dC4iOwotCi1HUFVDb21tYW5kUXVldWU6OkdQVUNvbW1hbmRRdWV1ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdDb21t
YW5kUXVldWVdKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZFF1ZXVlOjpHUFVD
b21tYW5kUXVldWUoKSIpOwotCi0gICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVm
YXVsdExhYmVsXTsKLX0KLQotU3RyaW5nIEdQVUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25zdAot
ewotICAgIGlmICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAg
ICBOU1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxhYmVsXTsKLQotICAgIGlmIChb
cHJlZml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXSkK
LSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQocHJlZml4ZWRMYWJl
bC5sZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgpOwotICAgIHJldHVybiBb
cHJlZml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgu
bGVuZ3RoXTsKLX0KLQotdm9pZCBHUFVDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmlu
ZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21f
bWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLSAgICBlbHNlCi0gICAg
ICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZpeCBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpsYWJlbF1dOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5NDRkN2Y4NGE1Yjk1MTQxODgwYWM0MjJmNGI4NmE0
Zjg2YjVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZl
ci5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCIKLSNpbXBvcnQgIkdQVVNp
emUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBNVExTaXplIE1UTFNpemVNYWtlKEdQ
VVNpemUgc2l6ZSkKLXsKLSAgICByZXR1cm4geyBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6
ZS5kZXB0aCB9OwotfQotCi1HUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OkdQVUNvbXB1dGVDb21t
YW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIpCi0gICAgOiBtX21ldGFs
IHsgW2J1ZmZlci5tZXRhbCgpIGNvbXB1dGVDb21tYW5kRW5jb2Rlcl0gfQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKCkiKTsKLX0KLQotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldENvbXB1dGVQ
aXBlbGluZVN0YXRlKGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlJiBjb21wdXRlUGlwZWxp
bmVTdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIWNvbXB1dGVQaXBlbGluZVN0YXRlLm1ldGFsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldENvbXB1dGVQaXBlbGluZVN0YXRl
OmNvbXB1dGVQaXBlbGluZVN0YXRlLm1ldGFsKCldOwotfQotICAgIAotdm9pZCBHUFVDb21wdXRl
Q29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBHUFVCdWZmZXImIGJ1ZmZlciwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1ZmZlci5tZXRh
bCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXRCdWZmZXI6YnVmZmVyLm1l
dGFsKCkgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLX0KLSAgICAKLXZvaWQgR1BVQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaChHUFVTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQs
IEdQVVNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKSBjb25zdAotewotICAgIFttX21ldGFsIGRp
c3BhdGNoVGhyZWFkZ3JvdXBzOk1UTFNpemVNYWtlKHRocmVhZGdyb3Vwc1BlckdyaWQpIHRocmVh
ZHNQZXJUaHJlYWRncm91cDpNVExTaXplTWFrZSh0aHJlYWRzUGVyVGhyZWFkZ3JvdXApXTsKLX0K
LQotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkgY29uc3QKLXsK
LSAgICBbbV9tZXRhbCBlbmRFbmNvZGluZ107Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3ODJlOTc3ZmRiMGUxNGM3M2ZkNjFkMTgyZGE0
ZGVjZGYwNWZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUZ1bmN0aW9uLmgi
Ci0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVRnVuY3Rpb24mIGZ1bmN0
aW9uKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVD
b21wdXRlUGlwZWxpbmVTdGF0ZSgpIik7Ci0KLSAgICBpZiAoIWZ1bmN0aW9uLm1ldGFsKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpmdW5jdGlvbi5tZXRhbCgpIGVycm9y
Om5pbF0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1ZTg1YmM3MWM5N2E4NjUzMTM4NmVlMDQyZWVhMzVhYjczY2Q5NDgyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9y
dCAiR1BVRW51bXMuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFs
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRM
RGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpIik7Ci19
Ci0KLWJvb2wgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhXcml0ZUVuYWJsZWQoKSBj
b25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3JpdGVFbmFibGVkXTsKLX0KLQot
dm9pZCBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxlZChib29s
IG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAotewotICAgIFttX21ldGFsIHNldERlcHRoV3Jp
dGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKLX0KLQotR1BVQ29tcGFyZUZ1bmN0aW9u
IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQ29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBk
ZXB0aENvbXBhcmVGdW5jdGlvbl0pOwotfQotCi12b2lkIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlv
bikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVu
Y3Rpb24gdmFsdWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRMQ29tcGFyZUZ1bmN0
aW9uPwotICAgIFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1U
TENvbXBhcmVGdW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTgwYzc0Y2U1NDY3ZGI5YjU5Mjc1OTlhMzcxMTQz
N2FjZmM4NTM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbFN0
YXRlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0j
aW1wb3J0ICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2Uu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVEZXB0
aFN0ZW5jaWxTdGF0ZTo6R1BVRGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UsIGNvbnN0IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi0gICAgOiBt
X21ldGFsIHsgYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRo
RGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVRGVwdGhTdGVuY2lsU3RhdGU6OkdQVURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKLX0KLQotU3Ry
aW5nIEdQVURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21l
dGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiBbbV9tZXRh
bCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVRGVwdGhTdGVuY2lsU3RhdGU6OnNldExhYmVsKGNvbnN0
IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBNVExEZXB0aFN0ZW5jaWxTdGF0
ZSBwcm90b2NvbCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJlbC4KLSAgICAvLyBUaGUg
bGFiZWwgaGFzIHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3aGVuIGNyZWF0aW5nIHRoZSBz
dGF0ZSBvYmplY3QuCi0gICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBXZWJN
ZXRhbCBpbnRlcmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKLX0KLSAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVURldmljZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiY2VhM2Y3NzQ0NjRkZTM3ODU0N2NjNzU2MjczMWJjZmNlNzYxMjFkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURldmljZU1ldGFsLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIldlYk1ldGFs
TGF5ZXIuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVEZXZpY2U6OkdQVURldmljZSgpCi0gICAgOiBtX21l
dGFsIHsgYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpIH0KLXsKLQotICAg
IGlmICghbV9tZXRhbCkgewotICAgICAgICBMT0coV2ViTWV0YWwsICJHUFVEZXZpY2U6OkdQVURl
dmljZSAtLSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkZXZpY2UuIFRoaXMgdXN1YWxseSBtZWFucyBN
ZXRhbCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaGFyZHdhcmUuIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBMT0coV2ViTWV0YWwsICJHUFVEZXZpY2U6OkdQVURldmljZSBNZXRh
bCBkZXZpY2UgaXMgJXAiLCBtX21ldGFsLmdldCgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgbV9sYXllciA9IGFkb3B0TlMoW1tXZWJNZXRhbExheWVyIGFsbG9j
XSBpbml0V2l0aEdQVURldmljZTp0aGlzXSk7Ci0gICAgW21fbGF5ZXIgc2V0T3BhcXVlOjBdOwot
ICAgIFttX2xheWVyIHNldE5hbWU6QCJXZWJNZXRhbCBMYXllciJdOwotCi0gICAgLy8gRklYTUU6
IFdlYk1ldGFsIC0gU2hvdWxkIHRoaXMgYmUgaW4gdGhlIFdlYk1ldGFsTGF5ZXIgaW5pdGlhbGl6
ZXI/Ci0gICAgW21fbGF5ZXIgc2V0RGV2aWNlOm1fbWV0YWwuZ2V0KCldOwotICAgIFttX2xheWVy
IHNldFBpeGVsRm9ybWF0Ok1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybV07Ci0gICAgW21fbGF5ZXIg
c2V0RnJhbWVidWZmZXJPbmx5OllFU107Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXZvaWQgR1BVRGV2aWNlOjpkaXNjb25uZWN0KCkKLXsKLSAgICBtX2xheWVyLmdldCgp
LmNvbnRleHQgPSBudWxscHRyOwotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWxzbyBjbGVhciBv
dXQgdGhlIGRldmljZSBwcm9wZXJ0eSwgd2hpY2ggaGFzIHRoZSBNVExEZXZpY2U/Ci19Ci0KLXZv
aWQgR1BVRGV2aWNlOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QKLXsKLSAg
ICBbbV9sYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07Ci0g
ICAgW21fbGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwot
Ci0gICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gTG90cyBvZiByZXNoYXBlIHN0dWZmIHNob3VsZCBn
byBoZXJlLiBTZWUgR0MzRC4KLX0KLQotQ0FMYXllciAqR1BVRGV2aWNlOjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKLX0KLQotYm9vbCBHUFVEZXZp
Y2U6Om9wZXJhdG9yISgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX21ldGFsOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJhd2FibGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURyYXdhYmxlTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYWQ5OGFjYWMwMTRhMWRhZDYyNzYzMDliNDcyYmUxYTAx
YzdiZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJhd2FibGVNZXRhbC5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVURyYXdh
YmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViTWV0YWxMYXllci5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVURyYXdhYmxlOjpHUFVEcmF3YWJsZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBbZGV2aWNlLmxheWVyKCkgbmV4dERyYXdhYmxlXSB9
Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6OkdQVURyYXdhYmxlKCkiKTsKLX0K
LQotdm9pZCBHUFVEcmF3YWJsZTo6cmVsZWFzZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
RHJhd2FibGU6OnJlbGVhc2UoKSIpOwotICAgIG1fbWV0YWwgPSBuaWw7Ci19Ci0gICAgCi1NVExE
cmF3YWJsZSAqR1BVRHJhd2FibGU6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKLX0KLQotTVRMVGV4dHVyZSAqR1BVRHJhd2FibGU6OnRleHR1cmUoKSBjb25zdAot
ewotICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChDQU1ldGFs
RHJhd2FibGUpXSkgewotICAgICAgICBBU1NFUlQoIW1fbWV0YWwpOwotICAgICAgICByZXR1cm4g
bmlsOwotICAgIH0KLSAgICByZXR1cm4gWyhpZDxDQU1ldGFsRHJhd2FibGU+KW1fbWV0YWwuZ2V0
KCkgdGV4dHVyZV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVGdW5jdGlv
bk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRnVu
Y3Rpb25NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E0YmUzYmYzYWE4
MjRlNzBkNzZlNjc0YzhjZTYwOTE2OTBkMWJmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVGdW5jdGlvbk1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVRnVuY3Rpb24uaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2ltcG9ydCAiR1BVTGlicmFyeS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVUZ1bmN0aW9uOjpHUFVGdW5jdGlvbihjb25zdCBHUFVMaWJyYXJ5JiBs
aWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbbGli
cmFyeS5tZXRhbCgpIG5ld0Z1bmN0aW9uV2l0aE5hbWU6bmFtZV0pIH0KLXsKLSAgICBMT0coV2Vi
TWV0YWwsICJHUFVGdW5jdGlvbjo6R1BVRnVuY3Rpb24oKSIpOwotfQotCi1TdHJpbmcgR1BVRnVu
Y3Rpb246Om5hbWUoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW21fbWV0YWwgbmFtZV07Ci19Ci0KLWJvb2wg
R1BVRnVuY3Rpb246Om9wZXJhdG9yISgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX21ldGFsOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lCdWZmZXJN
ZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYmMzZTM0YTQyNDgxOWIxOGNmZTA3YWEyMWMwNmE0NjIxZmIz
Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNp
bXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgorI2ltcG9ydCA8d3RmL0dpZ2FjYWdlLmg+CisjaW1wb3J0IDx3dGYvUGFnZUJsb2NrLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5QnVmZmVyOjpHUFVMZWdhY3lCdWZmZXIo
Y29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3
JiBkYXRhKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUJ1ZmZlcjo6R1BVQnVmZmVyKCkiKTsK
KworICAgIGlmICghZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBz
aXplX3QgcGFnZVNpemUgPSBXVEY6OnBhZ2VTaXplKCk7CisgICAgc2l6ZV90IHBhZ2VBbGlnbmVk
U2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2YocGFnZVNpemUsIGRhdGEuYnl0ZUxlbmd0aCgpKTsK
KyAgICB2b2lkKiBwYWdlQWxpZ25lZENvcHkgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1hbGxvYyhH
aWdhY2FnZTo6UHJpbWl0aXZlLCBwYWdlU2l6ZSwgcGFnZUFsaWduZWRTaXplKTsKKyAgICBpZiAo
IXBhZ2VBbGlnbmVkQ29weSkKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShwYWdlQWxpZ25l
ZENvcHksIGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIG1fY29u
dGVudHMgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGF0
YS5ieXRlTGVuZ3RoKCksIFtdICh2b2lkKiBwdHIpIHsKKyAgICAgICAgR2lnYWNhZ2U6OmFsaWdu
ZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CisgICAgfSk7CisgICAgbV9jb250ZW50
cy0+cmVmKCk7CisgICAgQXJyYXlCdWZmZXIqIGNhcHR1cmVkQ29udGVudHMgPSBtX2NvbnRlbnRz
LmdldCgpOworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdCdWZmZXJX
aXRoQnl0ZXNOb0NvcHk6bV9jb250ZW50cy0+ZGF0YSgpIGxlbmd0aDpwYWdlQWxpZ25lZFNpemUg
b3B0aW9uczpNVExSZXNvdXJjZU9wdGlvbkNQVUNhY2hlTW9kZURlZmF1bHQgZGVhbGxvY2F0b3I6
Xih2b2lkKiwgTlNVSW50ZWdlcikgeworICAgICAgICBjYXB0dXJlZENvbnRlbnRzLT5kZXJlZigp
OworICAgIH1dKTsKKyAgICBpZiAoIW1fbWV0YWwpIHsKKyAgICAgICAgbV9jb250ZW50cy0+ZGVy
ZWYoKTsKKyAgICAgICAgbV9jb250ZW50cyA9IG51bGxwdHI7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
ck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMmM2MDE1MjMyMDAxNTY1MzY3ZjdhYmQzODdjMWJlMWY0
ZTFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0KQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5BQkxF
KFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kUXVldWUuaCIKKyNpbXBvcnQg
IkdQVUxlZ2FjeURyYXdhYmxlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6
OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiBxdWV1
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxiYWNrKQorICAgIDogbV9tZXRhbCB7
IFtxdWV1ZS5tZXRhbCgpIGNvbW1hbmRCdWZmZXJdIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKCkiKTsKKworICAgIFttX21ldGFsIGFk
ZENvbXBsZXRlZEhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pPjo6
ZnJvbUNhbGxhYmxlKFtjb21wbGV0ZWRDYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGVkQ2FsbGJh
Y2spXSAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFdURk1vdmUoY29tcGxldGVkQ2FsbGJhY2spKTsKKyAgICB9KS5nZXQoKV07Cit9CisK
K3ZvaWQgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxlKEdQVUxlZ2FjeURy
YXdhYmxlJiBkcmF3YWJsZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWV0YWwgfHwgIWRyYXdhYmxl
Lm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHByZXNlbnREcmF3YWJs
ZTpkcmF3YWJsZS5tZXRhbCgpXTsKKyAgICBkcmF3YWJsZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQg
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6Y29tbWl0KCkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBj
b21taXRdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjMzZmY4MGY4ZDY3YjE1
Njk0ODNlZTlmNDk1ZTk5ZjYwN2RjYzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0K
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldl
YktpdCI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9
IEAiY29tLmFwcGxlLldlYktpdC4iOworCitHUFVMZWdhY3lDb21tYW5kUXVldWU6OkdQVUxlZ2Fj
eUNvbW1hbmRRdWV1ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKKyAgICA6IG1fbWV0
YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdDb21tYW5kUXVldWVdKSB9Cit7CisgICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjpHUFVMZWdhY3lDb21tYW5kUXVl
dWUoKSIpOworCisgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVs
XTsKK30KKworU3RyaW5nIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25zdAorewor
ICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBO
U1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxhYmVsXTsKKworICAgIGlmIChbcHJl
Zml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBBU1NFUlQocHJlZml4ZWRMYWJlbC5s
ZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgpOworICAgIHJldHVybiBbcHJl
Zml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVu
Z3RoXTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAg
W21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKKyAgICBlbHNlCisg
ICAgICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZpeCBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpsYWJlbF1dOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJN
ZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMTAyNmYyNTBiMjYzYmMwZmQwNDI0OGJlZmFiN2Q3N2U3Njgz
OWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0KQEAgLTAsMCArMSw3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJh
QGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVy
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJHUFVMZWdh
Y3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5U2l6ZS5oIgorI2lt
cG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgaW5saW5lIE1UTFNpemUgTVRMU2l6ZU1ha2UoR1BVTGVnYWN5U2l6
ZSBzaXplKQoreworICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRl
cHRoIH07Cit9CisKK0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlcikK
KyAgICA6IG1fbWV0YWwgeyBbYnVmZmVyLm1ldGFsKCkgY29tcHV0ZUNvbW1hbmRFbmNvZGVyXSB9
Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpH
UFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIoKSIpOworfQorCit2b2lkIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmIGNvbXB1dGVQaXBlbGluZVN0YXRlKSBjb25zdAorewor
ICAgIGlmICghY29tcHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW21fbWV0YWwgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Y29tcHV0ZVBpcGVsaW5lU3Rh
dGUubWV0YWwoKV07Cit9CisgICAgCit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBv
ZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorICAgIAordm9pZCBHUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoKEdQVUxlZ2FjeVNpemUgdGhyZWFkZ3JvdXBzUGVy
R3JpZCwgR1BVTGVnYWN5U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApIGNvbnN0Cit7CisgICAg
W21fbWV0YWwgZGlzcGF0Y2hUaHJlYWRncm91cHM6TVRMU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVy
R3JpZCkgdGhyZWFkc1BlclRocmVhZGdyb3VwOk1UTFNpemVNYWtlKHRocmVhZHNQZXJUaHJlYWRn
cm91cCldOworfQorCit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZW5kRW5j
b2RpbmcoKSBjb25zdAoreworICAgIFttX21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MDUzMWVmNmRjZDBlMjU5NTE3
NDBhYTdjMjIwNzUzMTliNDI1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFs
Lm1tCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8g
S2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29t
cHV0ZVBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAi
R1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUxlZ2Fj
eUZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKSIpOworCisg
ICAgaWYgKCFmdW5jdGlvbi5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21ldGFs
ID0gYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVu
Y3Rpb246ZnVuY3Rpb24ubWV0YWwoKSBlcnJvcjpuaWxdKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzkwMmIzZWMyODExZjkzM2ZkY2E2YmFi
MGU1ZDM5YzllNWQwZDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1t
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVn
YWN5RW51bXMuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCisgICAgOiBtX21ldGFsIHsgYWRv
cHROUyhbTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cigpIik7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhX
cml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3JpdGVF
bmFibGVkXTsKK30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRE
ZXB0aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAoreworICAg
IFttX21ldGFsIHNldERlcHRoV3JpdGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKK30K
KworR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBkZXB0aENvbXBhcmVGdW5jdGlv
bl0pOworfQorCit2b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRo
Q29tcGFyZUZ1bmN0aW9uKEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlvbikgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24g
dmFsdWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRMQ29tcGFyZUZ1bmN0aW9uPwor
ICAgIFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1UTENvbXBh
cmVGdW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNlZGI0MjA0MWNhOWEyNTVmM2VhMTZjNDFhYjVhNzlmNTQ2MGZhNjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIK
KyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICA6IG1fbWV0YWwg
eyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlw
dG9yOmRlc2NyaXB0b3IubWV0YWwoKV0pIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSIpOworfQor
CitTdHJpbmcgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0
dXJuIFttX21ldGFsIGxhYmVsXTsKK30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhlIE1U
TERlcHRoU3RlbmNpbFN0YXRlIHByb3RvY29sIGRvZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIGxh
YmVsLgorICAgIC8vIFRoZSBsYWJlbCBoYXMgdG8gYmUgc2V0IG9uIHRoZSBkZXNjcmlwdG9yIHdo
ZW4gY3JlYXRpbmcgdGhlIHN0YXRlIG9iamVjdC4KKyAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIg
Y2hhbmdpbmcgdGhlIFdlYk1ldGFsIGludGVyZmFjZSB0byBub3QgcmVxdWlyZSB0aGlzIQorfQor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGV2aWNl
TWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE3NmZjOTdhNzE4OGZiNWZiYzYwNjAzNjQ2MTFhMzAyMTE3
MDZiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1tCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJNZXRhbExheWVyLmgiCisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR1BVTGVnYWN5RGV2aWNlOjpHUFVMZWdhY3lEZXZpY2UoKQorICAgIDogbV9tZXRhbCB7IGFk
b3B0TlMoTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpKSB9Cit7CisKKyAgICBpZiAoIW1f
bWV0YWwpIHsKKyAgICAgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjpHUFVMZWdh
Y3lEZXZpY2UgLS0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGV2aWNlLiBUaGlzIHVzdWFsbHkgbWVh
bnMgTWV0YWwgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGhhcmR3YXJlLiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjpHUFVM
ZWdhY3lEZXZpY2UgTWV0YWwgZGV2aWNlIGlzICVwIiwgbV9tZXRhbC5nZXQoKSk7CisKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIG1fbGF5ZXIgPSBhZG9wdE5TKFtbV2Vi
TWV0YWxMYXllciBhbGxvY10gaW5pdFdpdGhHUFVEZXZpY2U6dGhpc10pOworICAgIFttX2xheWVy
IHNldE9wYXF1ZTowXTsKKyAgICBbbV9sYXllciBzZXROYW1lOkAiV2ViTWV0YWwgTGF5ZXIiXTsK
KworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIFNob3VsZCB0aGlzIGJlIGluIHRoZSBXZWJNZXRh
bExheWVyIGluaXRpYWxpemVyPworICAgIFttX2xheWVyIHNldERldmljZTptX21ldGFsLmdldCgp
XTsKKyAgICBbbV9sYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1d
OworICAgIFttX2xheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNdOworCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEdQVUxlZ2FjeURldmljZTo6ZGlzY29ubmVjdCgp
Cit7CisgICAgbV9sYXllci5nZXQoKS5jb250ZXh0ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIGFsc28gY2xlYXIgb3V0IHRoZSBkZXZpY2UgcHJvcGVydHksIHdoaWNoIGhhcyB0
aGUgTVRMRGV2aWNlPworfQorCit2b2lkIEdQVUxlZ2FjeURldmljZTo6cmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGNvbnN0Cit7CisgICAgW21fbGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1h
a2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFttX2xheWVyIHNldERyYXdhYmxlU2l6ZTpD
R1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKKworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIExv
dHMgb2YgcmVzaGFwZSBzdHVmZiBzaG91bGQgZ28gaGVyZS4gU2VlIEdDM0QuCit9CisKK0NBTGF5
ZXIgKkdQVUxlZ2FjeURldmljZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGV2aWNlOjpvcGVyYXRvciEoKSBj
b25zdAoreworICAgIHJldHVybiAhbV9tZXRhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
YWUxMzllNjNjMGIzNTIxOGE5NzQxMGNlMzQ4MjYyM2RkNzk0MmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJs
ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURy
YXdhYmxlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURl
dmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiV2ViTWV0YWxMYXllci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURyYXdhYmxlOjpHUFVMZWdhY3lEcmF3
YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKKyAgICA6IG1fbWV0YWwgeyBbZGV2
aWNlLmxheWVyKCkgbmV4dERyYXdhYmxlXSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVn
YWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdhYmxlKCkiKTsKK30KKwordm9pZCBHUFVMZWdhY3lE
cmF3YWJsZTo6cmVsZWFzZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2Fi
bGU6OnJlbGVhc2UoKSIpOworICAgIG1fbWV0YWwgPSBuaWw7Cit9CisgICAgCitNVExEcmF3YWJs
ZSAqR1BVTGVnYWN5RHJhd2FibGU6Om1ldGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKK30KKworTVRMVGV4dHVyZSAqR1BVTGVnYWN5RHJhd2FibGU6OnRleHR1cmUoKSBj
b25zdAoreworICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChD
QU1ldGFsRHJhd2FibGUpXSkgeworICAgICAgICBBU1NFUlQoIW1fbWV0YWwpOworICAgICAgICBy
ZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gWyhpZDxDQU1ldGFsRHJhd2FibGU+KW1fbWV0
YWwuZ2V0KCkgdGV4dHVyZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lGdW5jdGlvbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTk5YzA2YmMzNGMx
Nzg5NGFjYjYxY2M3ZjM3NDk1NWVkYzE0YzU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQpA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5oIgor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lMaWJyYXJ5LmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RnVu
Y3Rpb246OkdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxpYnJhcnkmIGxpYnJhcnks
IGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtsaWJyYXJ5Lm1l
dGFsKCkgbmV3RnVuY3Rpb25XaXRoTmFtZTpuYW1lXSkgfQoreworICAgIExPRyhXZWJNZXRhbCwg
IkdQVUxlZ2FjeUZ1bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbigpIik7Cit9CisKK1N0cmluZyBH
UFVMZWdhY3lGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21ldGFsKQorICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBbbV9tZXRhbCBuYW1lXTsK
K30KKworYm9vbCBHUFVMZWdhY3lGdW5jdGlvbjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW1fbWV0YWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lMaWJyYXJ5TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg3MjYyODI1M2IyNjhhZjAw
MGVhNzYzNjdiY2FlODZlYWYwOWU1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbQpAQCAtMCww
ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lMaWJyYXJ5LmgiCisKKyNpZiBF
TkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeUxpYnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnkoY29uc3QgR1BVTGVnYWN5RGV2
aWNlJiBkZXZpY2UsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICBMT0coV2ViTWV0
YWwsICJHUFVMZWdhY3lMaWJyYXJ5OjpHUFVMZWdhY3lMaWJyYXJ5KCkiKTsKKworICAgIGlmICgh
ZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5TRXJyb3IgKmVycm9yID0g
W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdC5HUFUiIGNvZGU6MSB1
c2VySW5mbzpuaWxdOworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdM
aWJyYXJ5V2l0aFNvdXJjZTpzb3VyY2VDb2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwor
ICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgTE9HKFdlYk1ldGFsLCAiQ29tcGlsYXRpb24gZXJy
b3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworfQor
CitTdHJpbmcgR1BVTGVnYWN5TGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9t
ZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gW21fbWV0
YWwgbGFiZWxdOworfQorCit2b2lkIEdQVUxlZ2FjeUxpYnJhcnk6OnNldExhYmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbWV0YWwpOworICAgIFttX21ldGFs
IHNldExhYmVsOmxhYmVsXTsKK30KKworVmVjdG9yPFN0cmluZz4gR1BVTGVnYWN5TGlicmFyeTo6
ZnVuY3Rpb25OYW1lcygpIGNvbnN0Cit7CisgICAgYXV0byBhcnJheSA9IFttX21ldGFsIGZ1bmN0
aW9uTmFtZXNdOworICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShhcnJheS5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqc3RyaW5n
IGluIGFycmF5KQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7CisgICAg
cmV0dXJuIHZlY3RvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkwZTVkNGZhZDQxMmNmMmYzYzc4MGIwYWRkZmRlZTFhN2ZjMmZmNTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVn
YWN5Q29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBH
UFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7CisK
KyAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
ZXRhbCA9IFtidWZmZXIubWV0YWwoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9y
OmRlc2NyaXB0b3IubWV0YWwoKV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0ZSkgY29uc3QKK3sKKyAgICBpZiAoIXJlbmRlclBp
cGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fbWV0YWwgc2V0
UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQaXBlbGluZVN0YXRlLm1ldGFsKCldOworfQorCit2
b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShj
b25zdCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2lsU3RhdGUpIGNvbnN0
Cit7CisgICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpkZXB0aFN0ZW5jaWxTdGF0ZS5t
ZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVy
dGV4QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldFZlcnRleEJ1ZmZlcjpidWZmZXIubWV0YWwo
KSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXIm
IGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBp
ZiAoIWJ1ZmZlci5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9tZXRhbCBzZXRG
cmFnbWVudEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhd
OworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZl
cyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lhbGx5IG9wdGltaXplZCBwYXRo
IGZvciBjb3VudCBvZiAwPworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IFttX21ldGFsIGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFByaW1pdGl2ZVR5cGU+KHR5
cGUpIHZlcnRleFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsKK30KKwordm9pZCBHUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAoreworICAgIFtt
X21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMyNWM5ZjI5NzBlMmNmZDJhNjZkNjZh
NGY0MTIzMmJhMWI2YTY2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQor
CisjaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkK
KyAgICA6IG1fbWV0YWwgeyBtZXRhbCB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IoKSIpOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9t
ZXRhbCBsb2FkQWN0aW9uXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24odW5zaWduZWQgbmV3TG9hZEFjdGlvbikgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmFuZ2UgY2hlY2sgZm9yIGxlZ2l0aW1hdGUg
dmFsdWVzPworICAgIFttX21ldGFsIHNldExvYWRBY3Rpb246c3RhdGljX2Nhc3Q8TVRMTG9hZEFj
dGlvbj4obmV3TG9hZEFjdGlvbildOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fbWV0YWwgc3RvcmVBY3Rpb25dOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbmV3U3RvcmVBY3Rpb24p
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdp
dGltYXRlIHZhbHVlcz8KKyAgICBbbV9tZXRhbCBzZXRTdG9yZUFjdGlvbjpzdGF0aWNfY2FzdDxN
VExTdG9yZUFjdGlvbj4obmV3U3RvcmVBY3Rpb24pXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUoY29uc3QgR1BVTGVnYWN5VGV4
dHVyZSYgdGV4dHVyZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRUZXh0dXJlOnRleHR1cmUu
bWV0YWwoKV07Cit9CisKK01UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWViZTE2NDU0OWVh
OTg2M2FhMzcxZGI2MDRiNDViMzdlZDVlZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkK
KyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ldGFsIH0K
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSIpOworfQorCitWZWN0b3I8ZmxvYXQ+IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBtZXRhbCA9IHRo
aXMtPm1ldGFsKCk7CisgICAgaWYgKCFtZXRhbCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGF1dG8gY29sb3IgPSBbbWV0YWwgY2xlYXJDb2xvcl07CisgICAgcmV0dXJuIHsgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChjb2xvci5yZWQpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmdy
ZWVuKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5ibHVlKSwgbmFycm93UHJlY2lzaW9u
VG9GbG9hdChjb2xvci5hbHBoYSkgfTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBuZXdDbGVhckNvbG9yKSBjb25zdAoreworICAgIGlmIChuZXdDbGVhckNvbG9yLnNpemUoKSAh
PSA0KQorICAgICAgICByZXR1cm47CisKKyAgICBbbWV0YWwoKSBzZXRDbGVhckNvbG9yOk1UTENs
ZWFyQ29sb3JNYWtlKG5ld0NsZWFyQ29sb3JbMF0sIG5ld0NsZWFyQ29sb3JbMV0sIG5ld0NsZWFy
Q29sb3JbMl0sIG5ld0NsZWFyQ29sb3JbM10pXTsKK30KKworTVRMUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzNkYTNl
YmNjMWYyNWFkZDc0NWYyZWQ0MWU5NWVkNmZlNDhmZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICpt
ZXRhbCkKKyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1l
dGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwor
fQorCitkb3VibGUgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsK
KyAgICBpZiAoIW1ldGFsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBbbWV0YWwg
Y2xlYXJEZXB0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpIGNvbnN0Cit7
CisgICAgW21ldGFsKCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRlcHRoXTsKK30KKworTVRMUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzQ1ZWQ2Y2M5ZTIyY2U5OGZiOWQw
NmRiZmI2NDdkZGJkNDgzYjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5t
bQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdh
Y3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAiR1BVTGVn
YWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dp
bmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yKCkKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtN
VExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKK30KKwor
VmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX21ldGFsKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gRklYTUU6IFdo
eSBpcyBpdCBjb3JyZWN0IHRvIHJldHVybiBvbmUgY29sb3IgaGVyZT8KKyAgICByZXR1cm4geyB7
IFtbbV9tZXRhbCBjb2xvckF0dGFjaG1lbnRzXSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6MF0g
fSB9OworfQorCitHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fbWV0YWwgZGVwdGhBdHRhY2htZW50XTsKK30KKworTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY0M2M5NWJkMTk0YzY5MzVlMjNkMWRiZGEzYTRjOTE4YzYwYjUzZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQorICAgIDogbV9tZXRhbCB7
IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9tZXRhbCBwaXhlbEZvcm1hdF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdCh1bnNpZ25l
ZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoZWNr
IGZvciBlbnVtZXJhdGlvbiB2YWx1ZXMgb3V0IG9mIHJhbmdlIGJlZm9yZSBjYWxsaW5nIHRoZSBt
ZXRob2Q/CisgICAgW21fbWV0YWwgc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxG
b3JtYXQ+KG5ld1BpeGVsRm9ybWF0KV07Cit9CisKK01UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUw
NWU4YWYyZWZkZTAzM2YwZTUxMzA3MjllZjRlMzY4YjIyMTViMTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKKyNpbXBvcnQgIkdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCisgICAgOiBtX21ldGFs
IHsgYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pIH0KK3sKKyAgICBM
T0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJl
dHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF07Cit9CisKK3ZvaWQgR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZv
cm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRE
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3
UGl4ZWxGb3JtYXQpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUZ1bmN0aW9uJiBuZXdGdW5jdGlv
bikgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5jdGlvbjpuZXdGdW5jdGlvbi5t
ZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dEZyYWdtZW50RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBj
b25zdAoreworICAgIFttX21ldGFsIHNldEZyYWdtZW50RnVuY3Rpb246bmV3RnVuY3Rpb24ubWV0
YWwoKV07Cit9CisKK1ZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRh
Y2htZW50cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBhbHdheXMgT0sgdG8g
cmV0dXJuIGV4YWN0bHkgb25lIGF0dGFjaG1lbnQ/CisgICAgcmV0dXJuIHsgeyBbW21fbWV0YWwg
Y29sb3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKK30KKwor
dm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkgY29uc3QKK3sK
KyAgICBbbV9tZXRhbCByZXNldF07Cit9CisKK01UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTQyMGZiODhhYmIyZGIwYjI2MjBjZDExOGRiNzdhNTViMTllMDI0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6R1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAg
IDogbV9tZXRhbCB7IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCkgZXJyb3I6bmlsXSkgfQoreworICAg
IExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUoKSIpOworfQorCitTdHJpbmcgR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIFttX21ldGFsIGxhYmVsXTsKK30KKwordm9p
ZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBUaGUgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSBwcm90b2Nv
bCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJlbC4KKyAgICAvLyBUaGUgbGFiZWwgaGFz
IHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3aGVuIGNyZWF0aW5nIHRoZSBzdGF0ZSBvYmpl
Y3QuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBXZWJNZXRhbCBpbnRl
cmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKK30KKyAgICAKK01UTFJlbmRlclBpcGVsaW5lU3Rh
dGUgKkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6Om1ldGFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI1YWQzODg1ZjkyY2FhY2NiMzRkOGI3MzVhYTZhNzg5OGJhMjZkOWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1F
VEFMKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpHUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBwaXhlbEZvcm1hdCwgdW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpCisgICAgOiBtX21ldGFsIHsgW01UTFRl
eHR1cmVEZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c3RhdGlj
X2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBpeGVsRm9ybWF0KSB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVp
Z2h0IG1pcG1hcHBlZDptaXBtYXBwZWRdIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0
dXJlRGVzY3JpcHRvcjo6R1BVVGV4dHVyZURlc2NyaXB0b3IoKSIpOworfQorCit1bnNpZ25lZCBH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9tZXRhbCB3aWR0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNl
dFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsK
KyAgICBbbV9tZXRhbCBzZXRXaWR0aDpuZXdXaWR0aF07Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRh
bCBoZWlnaHRdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRIZWln
aHQodW5zaWduZWQgbmV3SGVpZ2h0KSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAg
ICBbbV9tZXRhbCBzZXRIZWlnaHQ6bmV3SGVpZ2h0XTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
bWV0YWwgc2FtcGxlQ291bnRdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
OjpzZXRTYW1wbGVDb3VudCh1bnNpZ25lZCBuZXdTYW1wbGVDb3VudCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9tZXRhbCk7CisgICAgW21fbWV0YWwgc2V0U2FtcGxlQ291bnQ6bmV3U2FtcGxlQ291
bnRdOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZVR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCB0ZXh0dXJlVHlwZV07Cit9CisKK3Zv
aWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKHVuc2lnbmVkIG5l
d1RleHR1cmVUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRh
bCBzZXRUZXh0dXJlVHlwZTpzdGF0aWNfY2FzdDxNVExUZXh0dXJlVHlwZT4obmV3VGV4dHVyZVR5
cGUpXTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgc3RvcmFnZU1vZGVdOworfQorCit2
b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZSh1bnNpZ25lZCBu
ZXdTdG9yYWdlTW9kZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRTdG9yYWdlTW9kZTpzdGF0
aWNfY2FzdDxNVExTdG9yYWdlTW9kZT4obmV3U3RvcmFnZU1vZGUpXTsKK30KKwordW5zaWduZWQg
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fbWV0YWwgdXNhZ2VdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRVc2FnZSh1bnNpZ25lZCBuZXdVc2FnZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tZXRhbCk7
CisgICAgW21fbWV0YWwgc2V0VXNhZ2U6bmV3VXNhZ2VdOworfQorCitNVExUZXh0dXJlRGVzY3Jp
cHRvciAqR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTExZWZlNmNkZDdj
OWRlNzcyNjQ2MzViMDlkZWM3MGYxYTVmY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVRleHR1cmUuaCIKKwor
I2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1w
b3J0ICJHUFVMZWdhY3lEcmF3YWJsZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5VGV4dHVyZURlc2Ny
aXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVy
ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVVGV4dHVyZTo6
R1BVVGV4dHVyZSgpIik7CisKKyAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1RleHR1
cmVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsKK30KKworR1BVTGVnYWN5VGV4
dHVyZTo6R1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lEcmF3YWJsZSYgb3RoZXIpCisg
ICAgOiBtX21ldGFsIHsgb3RoZXIudGV4dHVyZSgpIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVUZXh0dXJlOjpHUFVUZXh0dXJlKCkiKTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVy
ZTo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgpLndpZHRoOworfQor
Cit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX21ldGFsLmdldCgpLmhlaWdodDsKK30KKworTVRMVGV4dHVyZSAqR1BVTGVnYWN5VGV4dHVy
ZTo6bWV0YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFsLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMmFkYjFhYTQ1ZWFhY2FkOTA3MzZkODk5NDQ5NmI3MzJmZDNh
NGU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxpYnJhcnlNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxpYnJhcnku
aCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotR1BVTGlicmFyeTo6R1BVTGlicmFyeShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxpYnJh
cnk6OkdQVUxpYnJhcnkoKSIpOwotCi0gICAgaWYgKCFkZXZpY2UubWV0YWwoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46
QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07Ci0gICAgbV9tZXRh
bCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0xpYnJhcnlXaXRoU291cmNlOnNvdXJjZUNv
ZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAg
ICBMT0coV2ViTWV0YWwsICJDb21waWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2FsaXpl
ZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0KLVN0cmluZyBHUFVMaWJyYXJ5OjpsYWJl
bCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLQotICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVTGlicmFy
eTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9t
ZXRhbCk7Ci0gICAgW21fbWV0YWwgc2V0TGFiZWw6bGFiZWxdOwotfQotCi1WZWN0b3I8U3RyaW5n
PiBHUFVMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKLXsKLSAgICBhdXRvIGFycmF5ID0g
W21fbWV0YWwgZnVuY3Rpb25OYW1lc107Ci0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAg
IHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LmNvdW50KTsKLSAgICBmb3IgKE5T
U3RyaW5nICpzdHJpbmcgaW4gYXJyYXkpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
c3RyaW5nKTsKLSAgICByZXR1cm4gdmVjdG9yOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NzU4M2IyNTY3OWZhYTg0MmMxMGIwNzI1YWJk
NTJlZDQxNTY2MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5o
IgotI2ltcG9ydCAiR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
cihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyOjpHUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7Ci0KLSAgICBpZiAoIWRlc2Ny
aXB0b3IubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZXRhbCA9IFtidWZmZXIu
bWV0YWwoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0
YWwoKV07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVs
aW5lU3RhdGUoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0
ZSkgY29uc3QKLXsKLSAgICBpZiAoIXJlbmRlclBpcGVsaW5lU3RhdGUubWV0YWwoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQ
aXBlbGluZVN0YXRlLm1ldGFsKCldOwotfQotCi12b2lkIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhT
dGVuY2lsU3RhdGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpk
ZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmICghYnVmZmVyLm1ldGFsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldFZlcnRleEJ1ZmZlcjpidWZmZXIu
bWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwotfQotCi12b2lkIEdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBHUFVCdWZmZXImIGJ1ZmZl
ciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1
ZmZlci5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXRGcmFnbWVu
dEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwotfQot
Ci12b2lkIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0
eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNvbnN0Ci17Ci0gICAgLy8gRklY
TUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lhbGx5IG9wdGltaXplZCBwYXRoIGZvciBjb3VudCBv
ZiAwPwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIGRy
YXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFByaW1pdGl2ZVR5cGU+KHR5cGUpIHZlcnRleFN0
YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsKLX0KLQotdm9pZCBHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAotewotICAgIFttX21ldGFsIGVuZEVuY29kaW5n
XTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDkzOWE4YmMyODNjMTI0ZDgyNTFlMzRkNTI1YTc5ZDZk
MDk4Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVVGV4dHVyZS5oIgotI2ltcG9ydCAiTG9n
Z2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqbWV0YWwp
Ci0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
Ojpsb2FkQWN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwgbG9hZEFjdGlvbl07
Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMb2FkQWN0
aW9uKHVuc2lnbmVkIG5ld0xvYWRBY3Rpb24pIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNob3Vs
ZCB0aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdpdGltYXRlIHZhbHVlcz8KLSAgICBbbV9tZXRhbCBz
ZXRMb2FkQWN0aW9uOnN0YXRpY19jYXN0PE1UTExvYWRBY3Rpb24+KG5ld0xvYWRBY3Rpb24pXTsK
LX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9yZUFj
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHN0b3JlQWN0aW9uXTsKLX0KLQot
dm9pZCBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKHVu
c2lnbmVkIG5ld1N0b3JlQWN0aW9uKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyByYW5nZSBjaGVjayBmb3IgbGVnaXRpbWF0ZSB2YWx1ZXM/Ci0gICAgW21fbWV0YWwgc2V0U3Rv
cmVBY3Rpb246c3RhdGljX2Nhc3Q8TVRMU3RvcmVBY3Rpb24+KG5ld1N0b3JlQWN0aW9uKV07Ci19
Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlKGNv
bnN0IEdQVVRleHR1cmUmIHRleHR1cmUpIGNvbnN0Ci17Ci0gICAgW21fbWV0YWwgc2V0VGV4dHVy
ZTp0ZXh0dXJlLm1ldGFsKCldOwotfQotCi1NVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IgKkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewot
ICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNj
ZDBmNDkwOTVjNDc0YjYyYWM3ZTk5OGJjNmVmYWExZmIzZWZiZTUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgot
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQotICAgIDogR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxmbG9hdD4gR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25zdAotewotICAgIGF1dG8qIG1ldGFs
ID0gdGhpcy0+bWV0YWwoKTsKLSAgICBpZiAoIW1ldGFsKQotICAgICAgICByZXR1cm4geyB9Owot
Ci0gICAgYXV0byBjb2xvciA9IFttZXRhbCBjbGVhckNvbG9yXTsKLSAgICByZXR1cm4geyBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLnJlZCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29s
b3IuZ3JlZW4pLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmJsdWUpLCBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGNvbG9yLmFscGhhKSB9OwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9hdD4m
IG5ld0NsZWFyQ29sb3IpIGNvbnN0Ci17Ci0gICAgaWYgKG5ld0NsZWFyQ29sb3Iuc2l6ZSgpICE9
IDQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttZXRhbCgpIHNldENsZWFyQ29sb3I6TVRMQ2xl
YXJDb2xvck1ha2UobmV3Q2xlYXJDb2xvclswXSwgbmV3Q2xlYXJDb2xvclsxXSwgbmV3Q2xlYXJD
b2xvclsyXSwgbmV3Q2xlYXJDb2xvclszXSldOwotfQotCi1NVExSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciAqR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TVRMUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgKj4oR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOjptZXRhbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjQ3MmU5M2U0YjNi
ZmQ3OGUzZDRmODdhMGI4YzM3ODI3ZWMyNDg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1w
b3J0ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dp
bmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yICptZXRhbCkKLSAgICA6IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1l
dGFsIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwot
fQotCi1kb3VibGUgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFy
RGVwdGgoKSBjb25zdAotewotICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsKLSAgICBp
ZiAoIW1ldGFsKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBbbWV0YWwgY2xlYXJE
ZXB0aF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpIGNvbnN0Ci17Ci0gICAgW21ldGFs
KCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRlcHRoXTsKLX0KLQotTVRMUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IgKkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6bWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWE4ZGQ3MTU3NzMzNTZmNGM3OGRlNjRjNGI1ZmUzY2Q0NDVmNTJk
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1l
dGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2lt
cG9ydCAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLSNpbXBvcnQg
IkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgbmV3XSkgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLQotICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgY29ycmVjdCB0byByZXR1
cm4gb25lIGNvbG9yIGhlcmU/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2ht
ZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRo
QXR0YWNobWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIGRlcHRoQXR0YWNobWVu
dF07Ci19Ci0KLU1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICpHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljYWYxNTUzZDAxZDE5NzRmMzU5MmY1N2JjNzhk
MTFkYTkxYzg3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAg
IExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQot
dW5zaWduZWQgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpwaXhl
bEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHBpeGVsRm9ybWF0XTsKLX0K
LQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBp
eGVsRm9ybWF0KHVuc2lnbmVkIG5ld1BpeGVsRm9ybWF0KSBjb25zdAotewotICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgY2hlY2sgZm9yIGVudW1lcmF0aW9uIHZhbHVlcyBvdXQgb2YgcmFuZ2UgYmVm
b3JlIGNhbGxpbmcgdGhlIG1ldGhvZD8KLSAgICBbbV9tZXRhbCBzZXRQaXhlbEZvcm1hdDpzdGF0
aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKLX0KLQotTVRMUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICpHUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZhZDAwMjk5NzJmZmQwMDU0ZmRkZWY0YzA5MmRiZTcwMWFiZGQyMjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
TWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2ltcG9ydCAiR1BVRnVuY3Rpb24uaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIG5ld10pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIik7Ci19Ci0KLXVuc2lnbmVk
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQo
KSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFj
aG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKLXsKLSAgICBb
bV9tZXRhbCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhl
bEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUZ1bmN0aW9uJiBuZXdGdW5jdGlv
bikgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5jdGlvbjpuZXdGdW5jdGlvbi5t
ZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdt
ZW50RnVuY3Rpb24oY29uc3QgR1BVRnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBjb25zdAotewotICAg
IFttX21ldGFsIHNldEZyYWdtZW50RnVuY3Rpb246bmV3RnVuY3Rpb24ubWV0YWwoKV07Ci19Ci0K
LVZlY3RvcjxHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IFdoeSBpcyBpdCBhbHdheXMgT0sgdG8gcmV0dXJuIGV4YWN0bHkgb25lIGF0dGFj
aG1lbnQ/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2htZW50c10gb2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnJlc2V0KCkgY29uc3QKLXsKLSAgICBbbV9tZXRhbCByZXNldF07Ci19Ci0KLU1U
TFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpt
ZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0YXRl
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMmRmNmEwMWJkMGQzZDc3
NzIzMTRjN2Q5ODhlYTRjYzJjN2NhNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5B
QkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwo
KSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvci5tZXRhbCgp
IGVycm9yOm5pbF0pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlOjpHUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkiKTsKLX0KLQotU3RyaW5nIEdQVVJlbmRlclBp
cGVsaW5lU3RhdGU6OmxhYmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbWV0YWwpCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0K
LXZvaWQgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29u
c3QKLXsKLSAgICAvLyBGSVhNRTogVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgcHJvdG9jb2wg
ZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgbGFiZWwuCi0gICAgLy8gVGhlIGxhYmVsIGhhcyB0
byBiZSBzZXQgb24gdGhlIGRlc2NyaXB0b3Igd2hlbiBjcmVhdGluZyB0aGUgc3RhdGUgb2JqZWN0
LgotICAgIC8vIFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2luZyB0aGUgV2ViTWV0YWwgaW50ZXJm
YWNlIHRvIG5vdCByZXF1aXJlIHRoaXMhCi19Ci0gICAgCi1NVExSZW5kZXJQaXBlbGluZVN0YXRl
ICpHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
bWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVUZXh0dXJl
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVVGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmE3MzA1M2VkYTg3ZmY2ODZhY2QwN2JlMDhkZGI5MWJkNTllMmI2Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmVEZXNj
cmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIK
LSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVVGV4
dHVyZURlc2NyaXB0b3I6OkdQVVRleHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIHBpeGVsRm9ybWF0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKLSAgICA6
IG1fbWV0YWwgeyBbTVRMVGV4dHVyZURlc2NyaXB0b3IgdGV4dHVyZTJERGVzY3JpcHRvcldpdGhQ
aXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGl4ZWxGb3JtYXQpIHdpZHRo
OndpZHRoIGhlaWdodDpoZWlnaHQgbWlwbWFwcGVkOm1pcG1hcHBlZF0gfQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVVRleHR1cmVEZXNjcmlwdG9yOjpHUFVUZXh0dXJlRGVzY3JpcHRvcigpIik7
Ci19Ci0KLXVuc2lnbmVkIEdQVVRleHR1cmVEZXNjcmlwdG9yOjp3aWR0aCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFttX21ldGFsIHdpZHRoXTsKLX0KLQotdm9pZCBHUFVUZXh0dXJlRGVzY3JpcHRv
cjo6c2V0V2lkdGgodW5zaWduZWQgbmV3V2lkdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0
YWwpOwotICAgIFttX21ldGFsIHNldFdpZHRoOm5ld1dpZHRoXTsKLX0KLQotdW5zaWduZWQgR1BV
VGV4dHVyZURlc2NyaXB0b3I6OmhlaWdodCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFs
IGhlaWdodF07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodCh1bnNp
Z25lZCBuZXdIZWlnaHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFttX21l
dGFsIHNldEhlaWdodDpuZXdIZWlnaHRdOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJlRGVzY3Jp
cHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBzYW1wbGVD
b3VudF07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KHVu
c2lnbmVkIG5ld1NhbXBsZUNvdW50KSBjb25zdAotewotICAgIEFTU0VSVChtX21ldGFsKTsKLSAg
ICBbbV9tZXRhbCBzZXRTYW1wbGVDb3VudDpuZXdTYW1wbGVDb3VudF07Ci19Ci0KLXVuc2lnbmVk
IEdQVVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX21ldGFsIHRleHR1cmVUeXBlXTsKLX0KLQotdm9pZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0VGV4dHVyZVR5cGUodW5zaWduZWQgbmV3VGV4dHVyZVR5cGUpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKG1fbWV0YWwpOwotICAgIFttX21ldGFsIHNldFRleHR1cmVUeXBlOnN0YXRpY19jYXN0PE1U
TFRleHR1cmVUeXBlPihuZXdUZXh0dXJlVHlwZSldOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBz
dG9yYWdlTW9kZV07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFN0b3JhZ2VN
b2RlKHVuc2lnbmVkIG5ld1N0b3JhZ2VNb2RlKSBjb25zdAotewotICAgIFttX21ldGFsIHNldFN0
b3JhZ2VNb2RlOnN0YXRpY19jYXN0PE1UTFN0b3JhZ2VNb2RlPihuZXdTdG9yYWdlTW9kZSldOwot
fQotCi11bnNpZ25lZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAotewotICAg
IHJldHVybiBbbV9tZXRhbCB1c2FnZV07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6
OnNldFVzYWdlKHVuc2lnbmVkIG5ld1VzYWdlKSBjb25zdAotewotICAgIEFTU0VSVChtX21ldGFs
KTsKLSAgICBbbV9tZXRhbCBzZXRVc2FnZTpuZXdVc2FnZV07Ci19Ci0KLU1UTFRleHR1cmVEZXNj
cmlwdG9yICpHUFVUZXh0dXJlRGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVy
biBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVVGV4
dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
VGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2VmY2ZkMWMw
NjRkZjVkZDhjYjZlYmNiNTg5ZWM1OGQxMzg5ZDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVVRleHR1cmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVEcmF3YWJsZS5oIgotI2ltcG9ydCAi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVVGV4dHVyZTo6R1BVVGV4
dHVyZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVVGV4dHVyZTo6R1BVVGV4dHVy
ZSgpIik7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1RleHR1cmVXaXRoRGVz
Y3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsKLX0KLQotR1BVVGV4dHVyZTo6R1BVVGV4dHVy
ZShjb25zdCBHUFVEcmF3YWJsZSYgb3RoZXIpCi0gICAgOiBtX21ldGFsIHsgb3RoZXIudGV4dHVy
ZSgpIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlOjpHUFVUZXh0dXJlKCkiKTsK
LX0KLQotdW5zaWduZWQgR1BVVGV4dHVyZTo6d2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBt
X21ldGFsLmdldCgpLndpZHRoOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJlOjpoZWlnaHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpLmhlaWdodDsKLX0KLQotTVRMVGV4dHVy
ZSAqR1BVVGV4dHVyZTo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlMjE3YTA3NzE2NzJmY2QzNTQx
NzIyN2VmZGEzMjE1MjFjY2M1YjguLmNlYWJlOTNmMzI1NDJlMmRkMjQxZjkxNTE4NzBhM2FkMDVk
OWY2ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxOC0xMC0yMiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFJlbmFtZSBvbGQgR1BVKiBpbXBsZW1lbnRhdGlv
biBmaWxlcyB0byBHUFVMZWdhY3kqIGZvciBXZWJNZXRhbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1tLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
bWFjL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVGdW5jdGlvbi5tbS4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21h
Yy9HUFVMZWdhY3lEZXZpY2UubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvbWFjL0dQVURldmljZS5tbS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdh
Y3lGdW5jdGlvbi5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9tYWMvR1BVRnVuY3Rpb24ubW0uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5TGli
cmFyeS5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVTGlicmFyeS5tbS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lUZXN0Lmg6IFJl
bmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVVRlc3Qu
aC4KKwogMjAxOC0xMC0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjM3MzMxKTogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVy
Q3Jhc2ggQVBJIHRlc3QgZmFpbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDk4MmY0ZmM5
YjEzODY5MDVlZDY5ZTBlYzczMGRjZDg1NzM0NjY4Zi4uZDVmOWI3NzIwODE2ZGJkZGQ2YzEyNWFi
NGM1N2JlOGQzYjlkMzE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNCwxMSArMTI0
LDExIEBACiAJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2RDMxRDhB
RURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi87IH07CiAJCTJFRkYwNkQ3MUQ4QUYz
NEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAv
KiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLzsgfTsKIAkJMzE1MTE4MTAxREIxQUU0MDAw
MTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29s
b3IuY3BwICovOyB9OwotCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1
ZXVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1
MjMxQzkxRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLzsgfTsKLQkJMzE2
MkFFOUMxRTZGMkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBH
UFVEZXZpY2UubW0gKi87IH07Ci0JCTMxNkJEQkExMUU3MEQ3MUIwMERFMEQ1QSAvKiBHUFVMaWJy
YXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
QkRCQTAxRTcwRDZEODAwREUwRDVBIC8qIEdQVUxpYnJhcnkubW0gKi87IH07Ci0JCTMxNkJEQkE0
MUU3MEVGNjgwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkEzMUU3MEVGNUQwMERFMEQ1QSAvKiBHUFVG
dW5jdGlvbi5tbSAqLzsgfTsKLQkJMzE2QkRCQUMxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJE
QkFCMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVCdWZmZXIubW0gKi87IH07CisJCTMxNTIzMUNBMUVC
M0IzQzcwMEEyMkExNiAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYg
LyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovOyB9OworCQkzMTYyQUU5QzFFNkYyRkY1MDAw
RTREQkMgLyogR1BVTGVnYWN5RGV2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8qIEdQVUxlZ2FjeURl
dmljZS5tbSAqLzsgfTsKKwkJMzE2QkRCQTExRTcwRDcxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxp
YnJhcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTZCREJBMDFFNzBENkQ4MDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5tbSAqLzsgfTsKKwkJ
MzE2QkRCQTQxRTcwRUY2ODAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQTMxRTcwRUY1RDAw
REUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tICovOyB9OworCQkzMTZCREJBQzFFNzIwN0Yx
MDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUxlZ2Fj
eUJ1ZmZlci5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92
ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNy
YXNoX0J1bmRsZS5jcHAgKi87IH07CiAJCTMzREM4OTEyMTQxOTU1RkUwMDc0N0VGNyAvKiBzaW1w
bGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzNEQzg5MEUxNDE5NTM5MzAwNzQ3RUY3IC8qIHNpbXBsZS1pZnJhbWUuaHRt
bCAqLzsgfTsKIAkJMzNEQzg5MTQxNDE5NTc5RjAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2Vy
dmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MTMxNDE5NTc5RjAwNzQ3RUY3IC8qIExvYWRDYW5j
ZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwICovOyB9OwpAQCAtMTM4MSwx
MiArMTM4MSwxMiBAQAogCQkyRUZGMDZEMzFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RXS1dlYlZp
ZXcubW07IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRUZGMDZENjFEOEFGMzRBMDAwNEJCMzAgLyogV0tXZWJWaWV3Q2FuZGlkYXRl
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZp
ZXdDYW5kaWRhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MTE4
MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTMxNTIzMUM5MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21tYW5kUXVl
dWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNjJBRTlCMUU2RjJGQ0UwMDBF
NERCQyAvKiBHUFVEZXZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVEZXZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkEw
MUU3MEQ2RDgwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGlicmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCQTIxRTcwREVFNTAwREUwRDVBIC8qIEdQVVRlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREJBMzFFNzBFRjVEMDBERTBENUEgLyogR1BVRnVuY3Rpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVGdW5jdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gR1BVQnVmZmVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYg
LyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTYyQUU5QjFFNkYyRkNFMDAwRTREQkMgLyogR1BVTGVnYWN5RGV2aWNlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJBMDFFNzBENkQ4MDBERTBE
NUEgLyogR1BVTGVnYWN5TGlicmFyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTMxRTcwRUY1RDAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5
RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkFCMUU3MjA3
RjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29k
aW5nID0gNDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlV
c2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0JFNUFGNDEzN0I1
QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFm
dGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1MDUsMTIgKzI1MDUsMTIgQEAKIAkJMzE2MkFFOUExRTZGMkY4RjAwMEU0REJDIC8q
IG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMzE2
QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZlci5tbSAqLywKLQkJCQkzMTUyMzFDOTFF
QjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tICovLAotCQkJCTMxNjJBRTlCMUU2
RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gKi8sCi0JCQkJMzE2QkRCQTMxRTcwRUY1RDAw
REUwRDVBIC8qIEdQVUZ1bmN0aW9uLm1tICovLAotCQkJCTMxNkJEQkEwMUU3MEQ2RDgwMERFMEQ1
QSAvKiBHUFVMaWJyYXJ5Lm1tICovLAotCQkJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBH
UFVUZXN0LmggKi8sCisJCQkJMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1
ZmZlci5tbSAqLywKKwkJCQkzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVTGVnYWN5Q29t
bWFuZFF1ZXVlLm1tICovLAorCQkJCTMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVMZWdh
Y3lEZXZpY2UubW0gKi8sCisJCQkJMzE2QkRCQTMxRTcwRUY1RDAwREUwRDVBIC8qIEdQVUxlZ2Fj
eUZ1bmN0aW9uLm1tICovLAorCQkJCTMxNkJEQkEwMUU3MEQ2RDgwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lMaWJyYXJ5Lm1tICovLAorCQkJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lUZXN0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0zODQ5LDExICszODQ5LDExIEBACiAJCQkJN0NDRTdFRTIxQTQxMUE5QTAwNDQ3
QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDdDRTFDRjMxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyogR2V0VXNl
ck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKLQkJCQkzMTZCREJBQzFFNzIwN0YxMDBE
RTBENUEgLyogR1BVQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE1MjMxQ0ExRUIzQjND
NzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTMxNjJB
RTlDMUU2RjJGRjUwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gaW4gU291cmNlcyAqLywKLQkJCQkz
MTZCREJBNDFFNzBFRjY4MDBERTBENUEgLyogR1BVRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywK
LQkJCQkzMTZCREJBMTFFNzBENzFCMDBERTBENUEgLyogR1BVTGlicmFyeS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTMxNkJEQkFDMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIubW0g
aW4gU291cmNlcyAqLywKKwkJCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVTGVnYWN5
Q29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0
REJDIC8qIEdQVUxlZ2FjeURldmljZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkJEQkE0MUU3
MEVGNjgwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTMxNkJEQkExMUU3MEQ3MUIwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOEU0QTg1MzcxRTFEMUFCMjAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGQTFBNDExQUU2MDA0NDdDNEMgLyogSGl0VGVzdFJl
c3VsdE5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzExQTQxMUE3RTAw
NDQ3QzRDIC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUJ1ZmZlci5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2QyYWFhNzQ0OTI4YWMzOTNjYzIzMzI2Mzkz
M2Y2OWVmMDIzMDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVUZXN0LmgiCi0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+Ci0jaW1wb3J0IDxN
ZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVCdWZmZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR1BVRGV2aWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1RfRihHUFUsIEJ1ZmZlckNyZWF0ZSkKLXsKLSAgICBH
UFVEZXZpY2UgZGV2aWNlOwotCi0gICAgLy8gTm90IGFsbCBoYXJkd2FyZSBzdXBwb3J0cyBNZXRh
bCwgc28gaXQgaXMgcG9zc2libGUKLSAgICAvLyB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIGNyZWF0
ZSB0aGUgTVRMRGV2aWNlIG9iamVjdC4KLSAgICAvLyBJbiB0aGF0IGNhc2UsIHRoZSBkZXZpY2Ug
c2hvdWxkIGJlIG51bGwuCi0gICAgaWYgKCFkZXZpY2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEVYUEVDVF9OT1RfTlVMTChkZXZpY2UubWV0YWwoKSk7Ci0KLSAgICBhdXRvIGJ1ZmZlclZpZXcg
PSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZSgxMDI0KTsKLQotICAgIGF1dG8gZGF0YSA9IGJ1ZmZl
clZpZXctPmRhdGEoKTsKLSAgICBtZW1zZXQoZGF0YSwgMSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0
aCgpKTsKLQotICAgIEdQVUJ1ZmZlciBidWZmZXIgeyBkZXZpY2UsIGJ1ZmZlclZpZXcuZ2V0KCkg
fTsKLSAgICBFWFBFQ1RfRVEoMTAyNFUsIGJ1ZmZlci5sZW5ndGgoKSk7Ci0KLSAgICBhdXRvIGNv
bnRlbnRzID0gYnVmZmVyLmNvbnRlbnRzKCk7Ci0gICAgRVhQRUNUX05PVF9OVUxMKGNvbnRlbnRz
KTsKLSAgICBFWFBFQ1RfRVEoMTAyNFUsIGNvbnRlbnRzLT5ieXRlTGVuZ3RoKCkpOwotCi0gICAg
YXV0byBjb250ZW50c0RhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGVudHMtPmRhdGEo
KSk7Ci0gICAgRVhQRUNUX05FKGRhdGEsIGNvbnRlbnRzRGF0YSk7Ci0gICAgRVhQRUNUX0VRKDFV
LCBjb250ZW50c0RhdGFbMF0pOwotICAgIEVYUEVDVF9FUSgxVSwgY29udGVudHNEYXRhWzUxMl0p
OwotICAgIEVYUEVDVF9FUSgxVSwgY29udGVudHNEYXRhWzEwMjNdKTsKLQotICAgIEVYUEVDVF9O
T1RfTlVMTChidWZmZXIubWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvbWFjL0dQVURldmljZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVRGV2aWNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDQ0OTRiZmZl
MTYzMDgyYzA0ZGQxMmZlNTZiYTAwZmY2OGYzMWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVRGV2aWNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0
ICJHUFVUZXN0LmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9H
UFVEZXZpY2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKLQotVEVTVF9GKEdQVSwgRGV2aWNlQ3JlYXRlKQotewotICAgIEdQVURldmlj
ZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBp
dCBpcyBwb3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBN
VExEZXZpY2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQg
YmUgbnVsbC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRVhQRUNU
X05PVF9OVUxMKGRldmljZS5sYXllcigpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLnBs
YXRmb3JtTGF5ZXIoKSk7Ci0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKLSAg
ICBFWFBFQ1RfTFQoMFUsIGRldmljZS5tZXRhbCgpLm5hbWUubGVuZ3RoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUZ1bmN0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYzAyNzRhNjBmMjk5OGMxODU2ZmExYzU0NjNjZDFhNDc4MTMwYzhkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24ubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVVGVzdC5oIgotI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0dQVURldmljZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVGdW5jdGlvbi5oPgotI2ltcG9ydCA8
V2ViQ29yZS9HUFVMaWJyYXJ5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1RfRihHUFUsIEZ1bmN0aW9uQWNjZXNzQnlOYW1l
KQotewotICAgIEdQVURldmljZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1
cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFi
bGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwg
dGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKLQotICAgIEdQVUxp
YnJhcnkgbGlicmFyeSB7IGRldmljZSwgbGlicmFyeVNvdXJjZUNvZGUoKSB9OwotCi0gICAgR1BV
RnVuY3Rpb24gdmVydGV4RnVuY3Rpb24geyBsaWJyYXJ5LCAidmVydGV4X21haW4iX3MgfTsKLSAg
ICBFWFBFQ1RfTk9UX05VTEwodmVydGV4RnVuY3Rpb24ubWV0YWwoKSk7Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKCJ2ZXJ0ZXhfbWFpbiIsIHZlcnRleEZ1bmN0aW9uLm5hbWUoKSk7Ci0KLSAgICBHUFVG
dW5jdGlvbiBmcmFnbWVudEZ1bmN0aW9uIHsgbGlicmFyeSwgImZyYWdtZW50X21haW4iX3MgfTsK
LSAgICBFWFBFQ1RfTk9UX05VTEwoZnJhZ21lbnRGdW5jdGlvbi5tZXRhbCgpKTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoImZyYWdtZW50X21haW4iLCBmcmFnbWVudEZ1bmN0aW9uLm5hbWUoKSk7Ci0K
LSAgICBHUFVGdW5jdGlvbiBub25leGlzdGVudEZ1bmN0aW9uIHsgbGlicmFyeSwgIm5hbWVfdGhh
dF9pc19ub3RfaW5fbGlicmFyeSJfcyB9OwotICAgIEVYUEVDVF9OVUxMKG5vbmV4aXN0ZW50RnVu
Y3Rpb24ubWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQ
VUxlZ2FjeUJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMv
R1BVTGVnYWN5QnVmZmVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NGRhYzdhNjJmNDgxZWQ0MmZmNWNlNTEx
MmE2ZWUyNzMyNzBlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbQpAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNp
bXBvcnQgIkdQVUxlZ2FjeVRlc3QuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvVHlwZWRBcnJheXMuaD4KKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0dQVUxlZ2FjeUJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9HUFVMZWdhY3lEZXZpY2Uu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgQnVmZmVyQ3JlYXRlKQoreworICAgIEdQVUxlZ2FjeURl
dmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBz
byBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRo
ZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91
bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQ
RUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKKworICAgIGF1dG8gYnVmZmVyVmlldyA9IEpT
Qzo6VWludDhBcnJheTo6Y3JlYXRlKDEwMjQpOworCisgICAgYXV0byBkYXRhID0gYnVmZmVyVmll
dy0+ZGF0YSgpOworICAgIG1lbXNldChkYXRhLCAxLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkp
OworCisgICAgR1BVTGVnYWN5QnVmZmVyIGJ1ZmZlciB7IGRldmljZSwgYnVmZmVyVmlldy5nZXQo
KSB9OworICAgIEVYUEVDVF9FUSgxMDI0VSwgYnVmZmVyLmxlbmd0aCgpKTsKKworICAgIGF1dG8g
Y29udGVudHMgPSBidWZmZXIuY29udGVudHMoKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoY29udGVu
dHMpOworICAgIEVYUEVDVF9FUSgxMDI0VSwgY29udGVudHMtPmJ5dGVMZW5ndGgoKSk7CisKKyAg
ICBhdXRvIGNvbnRlbnRzRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZW50cy0+ZGF0
YSgpKTsKKyAgICBFWFBFQ1RfTkUoZGF0YSwgY29udGVudHNEYXRhKTsKKyAgICBFWFBFQ1RfRVEo
MVUsIGNvbnRlbnRzRGF0YVswXSk7CisgICAgRVhQRUNUX0VRKDFVLCBjb250ZW50c0RhdGFbNTEy
XSk7CisgICAgRVhQRUNUX0VRKDFVLCBjb250ZW50c0RhdGFbMTAyM10pOworCisgICAgRVhQRUNU
X05PVF9OVUxMKGJ1ZmZlci5tZXRhbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9tYWMvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lDb21tYW5kUXVldWUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1
YjE2NWI3ZDhkNTM1ODVhNGQzYmU2ZDRhZGE5YzU5MzQ5ZDY4MgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5Q29tbWFuZFF1
ZXVlLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVVGVzdC5oIgorI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0dQVUNvbW1hbmRRdWV1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HUFVEZXZpY2UuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworVEVTVF9GKEdQVSwgQ29tbWFuZFF1ZXVlQ3JlYXRlKQoreworICAgIEdQVURldmljZSBkZXZp
Y2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBw
b3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZp
Y2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVs
bC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1BVQ29tbWFuZFF1
ZXVlIGNvbW1hbmRRdWV1ZSB7IGRldmljZSB9OworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgY29t
bWFuZFF1ZXVlLmxhYmVsKCkpOworCisgICAgRVhQRUNUX05PVF9OVUxMKGNvbW1hbmRRdWV1ZS5t
ZXRhbCgpKTsKKworICAgIC8vIElmIHlvdSBoYXZlbid0IHNldCBhIGxhYmVsLCB3ZSBqdXN0IHVz
ZSB0aGUgcHJlZml4LgorICAgIEVYUEVDVF9TVFJFUSgiY29tLmFwcGxlLldlYktpdCIsIGNvbW1h
bmRRdWV1ZS5tZXRhbCgpLmxhYmVsLlVURjhTdHJpbmcpOworCisgICAgY29tbWFuZFF1ZXVlLnNl
dExhYmVsKCJ0aGlzLmlzLmEudGVzdCJfcyk7CisKKyAgICAvLyBUaGUgV2ViS2l0IEFQSSBkb2Vz
bid0IHByZWZpeC4KKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRoaXMuaXMuYS50ZXN0IiwgY29tbWFu
ZFF1ZXVlLmxhYmVsKCkpOworCisgICAgLy8gQnV0IHRoZSB1bmRlcmx5aW5nIE1ldGFsIG9iamVj
dCBsYWJlbCB3aWxsIGhhdmUgb25lLgorICAgIEVYUEVDVF9TVFJFUSgiY29tLmFwcGxlLldlYktp
dC50aGlzLmlzLmEudGVzdCIsIGNvbW1hbmRRdWV1ZS5tZXRhbCgpLmxhYmVsLlVURjhTdHJpbmcp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lEZXZpY2Uu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeURldmlj
ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MjZhODNkMDdlMGY2MGE3OTFlOTM0MzFlYTMyYjFhNzhkOWIyOWI1
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21h
Yy9HUFVMZWdhY3lEZXZpY2UubW0KQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdh
Y3lUZXN0LmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HUFVM
ZWdhY3lEZXZpY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgRGV2aWNlQ3JlYXRlKQoreworICAg
IEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBv
cnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUg
dG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhl
IGRldmljZSBzaG91bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5sYXllcigpKTsKKyAgICBFWFBFQ1RfTk9U
X05VTEwoZGV2aWNlLnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgRVhQRUNUX05PVF9OVUxMKGRldmlj
ZS5tZXRhbCgpKTsKKyAgICBFWFBFQ1RfTFQoMFUsIGRldmljZS5tZXRhbCgpLm5hbWUubGVuZ3Ro
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5RnVuY3Rp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUZ1
bmN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDllMTAzZjllNTRlMWY5M2ViMDBhMTNlNzljODFiZTA0
YTFjODUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvbWFjL0dQVUxlZ2FjeUZ1bmN0aW9uLm1tCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0
ICJHUFVMZWdhY3lUZXN0LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR1BVTGVnYWN5RGV2aWNlLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeUZ1bmN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQ
VUxlZ2FjeUxpYnJhcnkuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgRnVuY3Rpb25BY2Nlc3NCeU5h
bWUpCit7CisgICAgR1BVTGVnYWN5RGV2aWNlIGRldmljZTsKKworICAgIC8vIE5vdCBhbGwgaGFy
ZHdhcmUgc3VwcG9ydHMgTWV0YWwsIHNvIGl0IGlzIHBvc3NpYmxlCisgICAgLy8gdGhhdCB3ZSB3
ZXJlIHVuYWJsZSB0byBjcmVhdGUgdGhlIE1UTERldmljZSBvYmplY3QuCisgICAgLy8gSW4gdGhh
dCBjYXNlLCB0aGUgZGV2aWNlIHNob3VsZCBiZSBudWxsLgorICAgIGlmICghZGV2aWNlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLm1ldGFsKCkpOworCisg
ICAgR1BVTGVnYWN5TGlicmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgp
IH07CisKKyAgICBHUFVMZWdhY3lGdW5jdGlvbiB2ZXJ0ZXhGdW5jdGlvbiB7IGxpYnJhcnksICJ2
ZXJ0ZXhfbWFpbiJfcyB9OworICAgIEVYUEVDVF9OT1RfTlVMTCh2ZXJ0ZXhGdW5jdGlvbi5tZXRh
bCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInZlcnRleF9tYWluIiwgdmVydGV4RnVuY3Rpb24u
bmFtZSgpKTsKKworICAgIEdQVUxlZ2FjeUZ1bmN0aW9uIGZyYWdtZW50RnVuY3Rpb24geyBsaWJy
YXJ5LCAiZnJhZ21lbnRfbWFpbiJfcyB9OworICAgIEVYUEVDVF9OT1RfTlVMTChmcmFnbWVudEZ1
bmN0aW9uLm1ldGFsKCkpOworICAgIEVYUEVDVF9XS19TVFJFUSgiZnJhZ21lbnRfbWFpbiIsIGZy
YWdtZW50RnVuY3Rpb24ubmFtZSgpKTsKKworICAgIEdQVUxlZ2FjeUZ1bmN0aW9uIG5vbmV4aXN0
ZW50RnVuY3Rpb24geyBsaWJyYXJ5LCAibmFtZV90aGF0X2lzX25vdF9pbl9saWJyYXJ5Il9zIH07
CisgICAgRVhQRUNUX05VTEwobm9uZXhpc3RlbnRGdW5jdGlvbi5tZXRhbCgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5TGlicmFyeS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5TGlicmFyeS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZmEzYTA0NjM4ZTljNTZjY2E3ZTRjNmY5OGY1YzljMTc1YmM0MjE3Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdh
Y3lMaWJyYXJ5Lm1tCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5VGVzdC5o
IgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeURldmljZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9H
UFVMZWdhY3lMaWJyYXJ5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1RfRihHUFVMZWdhY3ksIExpYnJhcnlDcmVhdGUpCit7
CisgICAgR1BVTGVnYWN5RGV2aWNlIGRldmljZTsKKworICAgIC8vIE5vdCBhbGwgaGFyZHdhcmUg
c3VwcG9ydHMgTWV0YWwsIHNvIGl0IGlzIHBvc3NpYmxlCisgICAgLy8gdGhhdCB3ZSB3ZXJlIHVu
YWJsZSB0byBjcmVhdGUgdGhlIE1UTERldmljZSBvYmplY3QuCisgICAgLy8gSW4gdGhhdCBjYXNl
LCB0aGUgZGV2aWNlIHNob3VsZCBiZSBudWxsLgorICAgIGlmICghZGV2aWNlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLm1ldGFsKCkpOworCisgICAgR1BV
TGVnYWN5TGlicmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07Cisg
ICAgRVhQRUNUX05PVF9OVUxMKGxpYnJhcnkubWV0YWwoKSk7Cit9CisKK1RFU1RfRihHUFVMZWdh
Y3ksIExpYnJhcnlTZXRMYWJlbCkKK3sKKyAgICBHUFVMZWdhY3lEZXZpY2UgZGV2aWNlOworICAg
IGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBHUFVMZWdhY3lMaWJyYXJ5IGxp
YnJhcnkgeyBkZXZpY2UsIGxpYnJhcnlTb3VyY2VDb2RlKCkgfTsKKyAgICBFWFBFQ1RfTk9UX05V
TEwobGlicmFyeS5tZXRhbCgpKTsKKworICAgIGxpYnJhcnkuc2V0TGFiZWwoIlRlc3RMYWJlbCJf
cyk7CisgICAgRVhQRUNUX0VRKCJUZXN0TGFiZWwiLCBsaWJyYXJ5LmxhYmVsKCkpOworfQorCitU
RVNUX0YoR1BVTGVnYWN5LCBMaWJyYXJ5RnVuY3Rpb25OYW1lcykKK3sKKyAgICBHUFVMZWdhY3lE
ZXZpY2UgZGV2aWNlOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBH
UFVMZWdhY3lMaWJyYXJ5IGxpYnJhcnkgeyBkZXZpY2UsIGxpYnJhcnlTb3VyY2VDb2RlKCkgfTsK
KyAgICBFWFBFQ1RfTk9UX05VTEwobGlicmFyeS5tZXRhbCgpKTsKKworICAgIGF1dG8gZnVuY3Rp
b25OYW1lcyA9IGxpYnJhcnkuZnVuY3Rpb25OYW1lcygpOworICAgIEVYUEVDVF9FUSgyVSwgZnVu
Y3Rpb25OYW1lcy5zaXplKCkpOworICAgIEVYUEVDVF9XS19TVFJFUSgidmVydGV4X21haW4iLCBm
dW5jdGlvbk5hbWVzWzBdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImZyYWdtZW50X21haW4iLCBm
dW5jdGlvbk5hbWVzWzFdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMv
R1BVTGVnYWN5VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9H
UFVMZWdhY3lUZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiYmZhYWVhYTNjZTk4NDM3NDI0NjMzNzk4ZDJj
NjcwYjVhODEwZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9tYWMvR1BVTGVnYWN5VGVzdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiV1RGU3RyaW5nVXRp
bGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK2NsYXNzIEdQVUxlZ2FjeSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1
YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgZmluYWwKKyAgICB7CisgICAgICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKKworICAgICAgICBtX2xpYnJhcnlTb3VyY2VDb2RlID0gInVzaW5n
IG5hbWVzcGFjZSBtZXRhbDtcblwKKyAgICAgICAgICAgIHN0cnVjdCBWZXJ0ZXhcblwKKyAgICAg
ICAgICAgIHtcblwKKyAgICAgICAgICAgIGZsb2F0NCBwb3NpdGlvbiBbW3Bvc2l0aW9uXV07XG5c
CisgICAgICAgICAgICBmbG9hdDQgY29sb3I7XG5cCisgICAgICAgICAgICB9O1xuXAorICAgICAg
ICAgICAgdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbihkZXZpY2UgVmVydGV4ICp2ZXJ0aWNlcyBb
W2J1ZmZlcigwKV1dLFxuXAorICAgICAgICAgICAgdWludCB2aWQgW1t2ZXJ0ZXhfaWRdXSlcblwK
KyAgICAgICAgICAgIHtcblwKKyAgICAgICAgICAgIHJldHVybiB2ZXJ0aWNlc1t2aWRdO1xuXAor
ICAgICAgICAgICAgfVxuXAorICAgICAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21h
aW4oVmVydGV4IGluVmVydGV4IFtbc3RhZ2VfaW5dXSlcblwKKyAgICAgICAgICAgIHtcblwKKyAg
ICAgICAgICAgIHJldHVybiBpblZlcnRleC5jb2xvcjtcblwKKyAgICAgICAgICAgIH0iX3M7Cisg
ICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBsaWJyYXJ5U291cmNlQ29kZSgpIHsgcmV0dXJuIG1f
bGlicmFyeVNvdXJjZUNvZGU7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9saWJyYXJ5U291
cmNlQ29kZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9tYWMvR1BVTGlicmFyeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9tYWMvR1BVTGlicmFyeS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkw
NjUwYTE3ZGNjOWFkZjY2NTExMTIzNDBhYzBjMTA5MDk0NTQzMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvbWFjL0dQVUxpYnJhcnkubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0K
LSNpbXBvcnQgIkdQVVRlc3QuaCIKLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVEZXZpY2UuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvR1BVTGlicmFyeS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUX0YoR1BVLCBMaWJyYXJ5Q3JlYXRlKQot
ewotICAgIEdQVURldmljZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBv
cnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUg
dG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwgdGhl
IGRldmljZSBzaG91bGQgYmUgbnVsbC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKLQotICAgIEdQVUxpYnJh
cnkgbGlicmFyeSB7IGRldmljZSwgbGlicmFyeVNvdXJjZUNvZGUoKSB9OwotICAgIEVYUEVDVF9O
T1RfTlVMTChsaWJyYXJ5Lm1ldGFsKCkpOwotfQotCi1URVNUX0YoR1BVLCBMaWJyYXJ5U2V0TGFi
ZWwpCi17Ci0gICAgR1BVRGV2aWNlIGRldmljZTsKLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR1BVTGlicmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNl
Q29kZSgpIH07Ci0gICAgRVhQRUNUX05PVF9OVUxMKGxpYnJhcnkubWV0YWwoKSk7Ci0KLSAgICBs
aWJyYXJ5LnNldExhYmVsKCJUZXN0TGFiZWwiX3MpOwotICAgIEVYUEVDVF9FUSgiVGVzdExhYmVs
IiwgbGlicmFyeS5sYWJlbCgpKTsKLX0KLQotVEVTVF9GKEdQVSwgTGlicmFyeUZ1bmN0aW9uTmFt
ZXMpCi17Ci0gICAgR1BVRGV2aWNlIGRldmljZTsKLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR1BVTGlicmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNl
Q29kZSgpIH07Ci0gICAgRVhQRUNUX05PVF9OVUxMKGxpYnJhcnkubWV0YWwoKSk7Ci0KLSAgICBh
dXRvIGZ1bmN0aW9uTmFtZXMgPSBsaWJyYXJ5LmZ1bmN0aW9uTmFtZXMoKTsKLSAgICBFWFBFQ1Rf
RVEoMlUsIGZ1bmN0aW9uTmFtZXMuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoInZlcnRl
eF9tYWluIiwgZnVuY3Rpb25OYW1lc1swXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJmcmFnbWVu
dF9tYWluIiwgZnVuY3Rpb25OYW1lc1sxXSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvbWFjL0dQVVRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVVGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDE3MTQ1NDEyMDc4
MjBhNTFhNDdjOWJkMjFhMzhiNjU0YmNjYjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMv
R1BVVGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW1wb3J0ICJUZXN0LmgiCi0jaW1wb3J0ICJXVEZTdHJpbmdVdGlsaXRp
ZXMuaCIKLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotY2xhc3MgR1BVIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAg
IHZvaWQgU2V0VXAoKSBmaW5hbAotICAgIHsKLSAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOwotCi0gICAgICAgIG1fbGlicmFyeVNvdXJjZUNvZGUgPSAidXNpbmcgbmFtZXNwYWNl
IG1ldGFsO1xuXAotICAgICAgICAgICAgc3RydWN0IFZlcnRleFxuXAotICAgICAgICAgICAge1xu
XAotICAgICAgICAgICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTtcblwKLSAgICAgICAg
ICAgIGZsb2F0NCBjb2xvcjtcblwKLSAgICAgICAgICAgIH07XG5cCi0gICAgICAgICAgICB2ZXJ0
ZXggVmVydGV4IHZlcnRleF9tYWluKGRldmljZSBWZXJ0ZXggKnZlcnRpY2VzIFtbYnVmZmVyKDAp
XV0sXG5cCi0gICAgICAgICAgICB1aW50IHZpZCBbW3ZlcnRleF9pZF1dKVxuXAotICAgICAgICAg
ICAge1xuXAotICAgICAgICAgICAgcmV0dXJuIHZlcnRpY2VzW3ZpZF07XG5cCi0gICAgICAgICAg
ICB9XG5cCi0gICAgICAgICAgICBmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0ZXgg
aW5WZXJ0ZXggW1tzdGFnZV9pbl1dKVxuXAotICAgICAgICAgICAge1xuXAotICAgICAgICAgICAg
cmV0dXJuIGluVmVydGV4LmNvbG9yO1xuXAotICAgICAgICAgICAgfSJfczsKLSAgICB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIGxpYnJhcnlTb3VyY2VDb2RlKCkgeyByZXR1cm4gbV9saWJyYXJ5U291
cmNlQ29kZTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2xpYnJhcnlTb3VyY2VDb2RlOwot
fTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352954</attachid>
            <date>2018-10-22 21:25:32 -0700</date>
            <delta_ts>2018-10-23 15:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190817-20181022212531.patch</filename>
            <type>text/plain</type>
            <size>480611</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE4ODdlNWRiNjljYjc5
N2RhYzUyYWMxNWUxYWU5MjIxYjAwNjZlOC4uYzE2M2M2MmJjMjcyZWE2NmJjZjJiNGJhMWRjOGI1
MDBhZjFlZGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEwLTIyICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gUmVuYW1l
IG9sZCBHUFUqIGltcGxlbWVudGF0aW9uIGZpbGVzIHRvIEdQVUxlZ2FjeSogZm9yIFdlYk1ldGFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFtMYXJnZSBsaXN0IG9m
IHJlZmFjdG9yZWQgY2xhc3NlcyBhbmQgcmVuYW1lZCBmaWxlc106IEdQVSogaXMgbm93IEdQVUxl
Z2FjeSoKKwogMjAxOC0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ1NTIFBhaW50IEFQSSBzaG91bGQgZ2l2ZSBhIDJkIHJlbmRlcmlu
ZyBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDc5OTRlYjY5NjY0NjYwZGVmODlmMjEwNDU3MWIx
ZGZhNTE3YjhlMGUuLmFlYjY2MmViMmYwMGUwYzJiZGNlYjVjN2FhMWZlNTQwYjBjMWJiN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xNzE4LDI3ICsxNzE4LDI3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAK
IAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1h
bmRRdWV1ZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXIuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3Bw
Ci1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKLXBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2Fi
bGUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRnVuY3Rpb24uY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGlicmFyeS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKLXBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lEcmF3YWJsZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcAorcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcAorcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCitwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJv
eC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg0NTU1YTZhNzlhYTA0MWUyYWJiNWE5
YjA0ODk0ODlkODYyMDMwODAuLjk0ZmYxNTYyNWIzNDhjNDUyYjFiYTcwMzViN2VkODAyMDUyNzk0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzQ1LDI3ICszNDUsMjcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0ltYWdl
RXh0cmFzLm1tCiAKLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUJ1ZmZlck1ldGFsLm1tCi1w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVEZXZpY2VNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJh
d2FibGVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRnVuY3Rpb25NZXRhbC5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFsLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQot
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0KLXBsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lMaWJyYXJ5TWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4
dHVyZU1ldGFsLm1tCiAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9u
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGE0MTEwNmY2OWY2Y2Y1Y2JhY2JlYTQ2ODc5ZGFhYjFlMDQzODQzZWYuLjZjMmQ3
MWVmYzc3MTU3ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwOSwyNyArOTA5LDI3
IEBACiAJCTMxNDg3N0U2MUZBQUIwMjUwMEMwNTc1OSAvKiBKU09mZnNjcmVlbkNhbnZhcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0ODc3RTQxRkFB
QjAyMjAwQzA1NzU5IC8qIEpTT2Zmc2NyZWVuQ2FudmFzLmggKi87IH07CiAJCTMxNEJFM0ExMUIz
MEY2QjcwMDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNEJFM0EwMUIzMEY2QjcwMDE0MTk4MiAvKiBD
U1NOYW1lZEltYWdlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgg
Ki87IH07Ci0JCTMxNkJEQjg2MUU2RTBBMjcwMERFMEQ1QSAvKiBHUFVEZXZpY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQjg1MUU2RTBBMjEw
MERFMEQ1QSAvKiBHUFVEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkzMTZCREI4NjFFNkUwQTI3MDBERTBENUEgLyogR1BVTGVnYWN5RGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE2QkRCOEMxRTZFMTUzMDAwREUw
RDVBIC8qIFdlYk1ldGFsTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxNkJEQjhBMUU2RTE1MzAwMERFMEQ1QSAvKiBXZWJNZXRhbExheWVyLmgg
Ki87IH07Ci0JCTMxNkJEQjk1MUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCOTMxRTcwQzg5
NzAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE2QkRCOUIxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxpYnJh
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJE
Qjk5MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE2QkRCQUExRTcxRkE5MzAwREUwRDVBIC8q
IEdQVUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2QkRCQTgxRTcxRkE5MzAwREUwRDVBIC8qIEdQVUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxNkJEQkIyMUU3MzU0QkIwMERF
MEQ1QSAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTZCREJCMDFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5oICovOyB9
OwotCQkzMTZCREJCODFFNzM1N0NCMDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkI2MUU3
MzU3Q0IwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovOyB9OwotCQkzMTZCREJC
QzFFNzM4ODA2MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyog
R1BVQ29tbWFuZFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMzE2QkRCQ0QxRTc1RjE4NDAwREUwRDVBIC8qIEdQVURyYXdhYmxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJDQjFFNzVG
MTc2MDBERTBENUEgLyogR1BVRHJhd2FibGUuaCAqLzsgfTsKLQkJMzE2QkRCQ0UxRTc1RjE4QTAw
REUwRDVBIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVDb21tYW5k
QnVmZmVyLmggKi87IH07Ci0JCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmggKi87IH07Ci0JCTMxNkJEQkRCMUU3NjEyRTIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2QkRCRDkxRTc2MTJEQjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxNkJEQkRGMUU3NjEzNzUwMERF
MEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkREMUU3NjEzNkMwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRC
RTQxRTc2MUYwNTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRCRUIxRTc2MjQ0RDAwREUwRDVBIC8qIEdQVVJlbmRlckNv
bW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTZCREJFOTFFNzYyNDQ0MDBERTBENUEgLyogR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIu
aCAqLzsgfTsKLQkJMzE2QkRCRjAxRTc2MjkyMDAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REJFRjFFNzYyOTFCMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLzsgfTsKLQkJ
MzE2QkRCRjcxRTc2MkFENTAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkY1MUU3
NjJBQ0QwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi87IH07Ci0JCTMx
NkJEQkZCMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQ
VUVudW1zLmggKi87IH07Ci0JCTMxNkJEQzAyMUU3NjJGNjQwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNkJEQkZEMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRDMDMxRTc2MkY2OTAwREUwRDVBIC8qIEdQVVJlbmRl
clBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRl
LmggKi87IH07Ci0JCTMxNkJEQzBEMUU3NjM0RDIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCOTUxRTcw
Qzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BV
TGVnYWN5RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkzMTZCREI5QjFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCOTkx
RTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMTZCREJBQTFFNzFGQTkzMDBERTBENUEg
LyogR1BVTGVnYWN5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTZCREJBODFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzE2QkRC
QjIxRTczNTRCQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAv
KiBHUFVMZWdhY3lUZXh0dXJlLmggKi87IH07CisJCTMxNkJEQkI4MUU3MzU3Q0IwMERFMEQ1QSAv
KiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQjYxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yLmggKi87IH07CisJCTMxNkJEQkJDMUU3Mzg4MDYwMERFMEQ1QSAv
KiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxNkJEQkJBMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21t
YW5kUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkzMTZCREJDRDFFNzVGMTg0MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkNCMUU3NUYx
NzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5oICovOyB9OworCQkzMTZCREJDRTFFNzVG
MThBMDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8q
IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLzsgfTsKKwkJMzE2QkRCRDMxRTc1RjdCNjAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJEMTFFNzVGN0FFMDBERTBENUEgLyog
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCREIxRTc2MTJF
MjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJE
OTFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCREYxRTc2MTM3NTAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCREQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMTZCREJFNDFF
NzYxRjA1MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
NkJEQkUzMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMTZCREJFQjFFNzYyNDREMDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkU5MUU3NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oICovOyB9OworCQkzMTZCREJGMDFFNzYyOTIwMDBERTBENUEg
LyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkVGMUU3NjI5MUIwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovOyB9OworCQkzMTZCREJGNzFFNzYyQUQ1MDBERTBENUEg
LyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzE2QkRCRkIxRTc2MkQw
NDAwREUwRDVBIC8qIEdQVUxlZ2FjeUVudW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5
RW51bXMuaCAqLzsgfTsKKwkJMzE2QkRDMDIxRTc2MkY2NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2QkRCRkQxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OworCQkzMTZCREMwMzFFNzYyRjY5MDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRkYxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKKwkJMzE2QkRDMEQxRTc2MzREMjAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRDMDkx
RTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oICovOyB9OwogCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNkRDQjFBMUU3OENBNTUwMDFCNUY4NyAvKiBKU1JUQ09mZmVyQW5zd2VyT3B0
aW9ucy5oICovOyB9OwogCQkzMTZEQ0IyMjFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE2RENCMUMxRTc4Q0E1NTAwMUI1Rjg3IC8qIEpTUlRDUnRwVHJhbnNjZWl2ZXJE
aXJlY3Rpb24uaCAqLzsgfTsKIAkJMzE2RENCNEMxRTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNl
Q29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTZEQ0I0NjFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VDb25uZWN0aW9uU3Rh
dGUuaCAqLzsgfTsKQEAgLTI2MzIsOSArMjYzMiw5IEBACiAJCTkzQTgwNjE3MUUwM0I1MUMwMDhB
MUYyNiAvKiBMb25nUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQTgwNjEzMUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0E4MDYxRTFFMDNC
NTg1MDA4QTFGMjYgLyogSlNEb3VibGVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUExRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91Ymxl
UmFuZ2UuaCAqLzsgfTsKIAkJOTNBODA2MjAxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1Jhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYx
QzFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25nUmFuZ2UuaCAqLzsgfTsKLQkJOTNBOTUzQjAyMEVC
RDNDOTAwQTYxOUY2IC8qIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODFFMzVFQzFFOEUyM0U0MDA0M0U4NTAg
LyogR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKLQkJOTNBOTUzQjQyMEVCRDQzMjAw
QTYxOUY2IC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQ
VUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovOyB9OwotCQk5M0E5NTNCNTIwRUM5QzNGMDBBNjE5
RjYgLyogR1BVU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzgxRTM1RjYxRThFNEQwRTAwNDNFODUwIC8qIEdQVVNpemUuaCAqLzsgfTsKKwkJOTNB
OTUzQjAyMEVCRDNDOTAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODFFMzVFQzFF
OEUyM0U0MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLzsgfTsK
KwkJOTNBOTUzQjQyMEVCRDQzMjAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5j
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgx
RTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5o
ICovOyB9OworCQk5M0E5NTNCNTIwRUM5QzNGMDBBNjE5RjYgLyogR1BVTGVnYWN5U2l6ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzgxRTM1RjYxRThF
NEQwRTAwNDNFODUwIC8qIEdQVUxlZ2FjeVNpemUuaCAqLzsgfTsKIAkJOTNCMkQ4MTYwRjk5MjBE
MjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVu
VGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjZBMEU1MEIwQkNBNUMw
MEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcw
RDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjg1OCw2NSArNjg1OCw2NCBAQAogCQkz
MTRCRTNBMjFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU05hbWVkSW1hZ2VWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAvKiBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCODQxRTZF
MEEyMTAwREUwRDVBIC8qIEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCODQxRTZFMEEyMTAwREUwRDVBIC8qIEdQVUxl
Z2FjeURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVM
ZWdhY3lEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREI4NTFF
NkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lEZXZpY2VN
ZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRCOEExRTZFMTUzMDAw
REUwRDVBIC8qIFdlYk1ldGFsTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViTWV0YWxMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI5
MjFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR1BVRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMzE2QkRCOTYxRTcwQ0EyNDAwREUwRDVBIC8qIEdQVUZ1bmN0aW9uTWV0
YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVGdW5jdGlv
bk1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI5ODFFNzBDQkJG
MDBERTBENUEgLyogR1BVTGlicmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVMaWJyYXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCOTkxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREI5QzFFNzBDRDkwMDBERTBENUEgLyogR1BVTGlicmFyeU1ldGFsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGlicmFyeU1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJBNTFFNzFGQTZGMDBERTBENUEgLyogR1BV
QnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQTcx
RTcxRkE5MzAwREUwRDVBIC8qIEdQVUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHUFVCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJBODFFNzFGQTkzMDBERTBENUEgLyogR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREJBRDFFNzM1NDlDMDBERTBENUEgLyogR1BVVGV4dHVyZU1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVVGV4dHVyZU1ldGFsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJBRjFFNzM1NEJCMDBERTBENUEgLyog
R1BVVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVU
ZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQjAxRTczNTRC
QjAwREUwRDVBIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCMzFF
NzM1N0IwMDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVRleHR1cmVEZXNjcmlwdG9yTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkI1MUU3MzU3Q0IwMERFMEQ1
QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNkJEQkI2MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0dXJlRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCOTFFNzM4ODA2MDBERTBE
NUEgLyogR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUNvbW1hbmRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkJBMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVDb21tYW5kUXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tbWFuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxNkJEQkJEMUU3Mzg4MTMwMERFMEQ1QSAvKiBHUFVDb21tYW5kUXVl
dWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNv
bW1hbmRRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJD
NDFFNzVFRTI0MDBERTBENUEgLyogR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUNvbW1hbmRC
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJDNjFFNzVFRTNEMDBERTBE
NUEgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJDOTFFNzVGMTYyMDBERTBENUEgLyogR1BVRHJhd2FibGVNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVURyYXdhYmxl
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkNBMUU3NUYxNzYw
MERFMEQ1QSAvKiBHUFVEcmF3YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVEcmF3YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
NkJEQkNCMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVEcmF3YWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREJEMDFFNzVGN0FFMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJEMTFFNzVG
N0FFMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRDQxRTc1RjdDQTAwREUwRDVBIC8qIEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMTZCREJENjFFNzYxMkM0MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQ4MUU3NjEyREIwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQ5MUU3
NjEyREIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJE
QzFFNzYxMzZDMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJE
QkREMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkUwMUU3
NjFDQjUwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJFMjFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRTYxRTc2MUYyNzAwREUwRDVBIC8qIEdQVVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFODFFNzYyNDQz
MDBERTBENUEgLyogR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFOTFFNzYyNDQ0MDBERTBENUEgLyogR1BVUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCRUMxRTc2MjQ2QjAwREUwRDVBIC8qIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFRTFF
NzYyOTFCMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFRjFFNzYyOTFCMDBERTBENUEgLyogR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGVw
dGhTdGVuY2lsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRjIx
RTc2MjkzNzAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJGNDFFNzYyQUNEMDBERTBE
NUEgLyogR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREJGODFFNzYyQkVGMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZC
REJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVRW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVRW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCRkMxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJGRDFFNzYy
RjU3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJGRTFFNzYyRjU3MDBERTBENUEgLyogR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCRkYxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREMwNDFFNzYyRjdFMDBERTBE
NUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMDUxRTc2MkY3RTAwREUw
RDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRDMDgxRTc2MzQyNzAwREUwRDVBIC8qIEdQ
VVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREMwOTFF
NzYzNDI3MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREMwQTFFNzYzNDM2MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCOTIxRTcwQzg5NzAwREUwRDVB
IC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRCOTMxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeUZ1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjk2MUU3MENBMjQwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lGdW5jdGlvbk1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRCOTgxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5TGlicmFyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQjk5MUU3MENCQkYwMERFMEQ1QSAvKiBH
UFVMZWdhY3lMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCOUMxRTcw
Q0Q5MDAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTUxRTcxRkE2RjAwREUwRDVBIC8qIEdQVUxl
Z2FjeUJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5QnVmZmVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxNkJEQkE3MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5QnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTgxRTcxRkE5MzAwREUwRDVBIC8qIEdQVUxl
Z2FjeUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQUYxRTczNTRCQjAw
REUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQjMxRTczNTdCMDAwREUwRDVBIC8qIEdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJCNTFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVn
YWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTZCREJCNjFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQjkx
RTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZC
REJCRDFFNzM4ODEzMDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kUXVl
dWVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQzQxRTc1RUUy
NDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRC
QzYxRTc1RUUzRDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbW1hbmRCdWZm
ZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQzkxRTc1RjE2
MjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJDQTFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVn
YWN5RHJhd2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
TGVnYWN5RHJhd2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJD
QjFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5RHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE2QkRCRDAxRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBh
c3NEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkQ0
MUU3NUY3Q0EwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2
QkRCRDYxRTc2MTJDNDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJEODFFNzYxMkRCMDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MTZCREJEOTFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJERDFFNzYxMzZDMDBERTBENUEgLyog
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJFMDFFNzYxQ0I1MDBERTBE
NUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRCRTIxRTc2MUVGRjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTMxRTc2MUVGRjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkU2MUU3NjFG
MjcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTgxRTc2MjQ0MzAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxNkJEQkVDMUU3NjI0NkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzE2QkRCRUUxRTc2MjkxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeURl
cHRoU3RlbmNpbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRC
RUYxRTc2MjkxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkYyMUU3NjI5MzcwMERFMEQ1QSAv
KiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8q
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkY1MUU3NjJBQ0QwMERFMEQ1QSAvKiBH
UFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRjgxRTc2MkJFRjAwREUwRDVBIC8qIEdQVUxlZ2FjeURl
cHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeUVudW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2Fj
eUVudW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkZDMUU3NjJGNTcw
MERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRkQxRTc2MkY1
NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRCRkUxRTc2MkY1NzAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE2QkRDMDQxRTc2MkY3RTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQzA1MUU3NjJGN0UwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQzA4MUU3NjM0MjcwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE2QkRDMDkxRTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2QkRDMEExRTc2MzQzNjAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxNkRDQjEyMUU3OEJFNDMwMDFCNUY4NyAvKiBSVENPZmZlckFuc3dlck9w
dGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkRDQjE3MUU3OEMzMzAwMDFCNUY4
NyAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZEQ0IxOTFF
NzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENPZmZlckFuc3dlck9wdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE5OCwxNSArNzE5NywxNSBAQAogCQkzODFF
MzVFNjFFOEUxREI5MDA0M0U4NTAgLyogV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODFFMzVFNzFFOEUxRTBBMDA0M0U4NTAgLyog
V2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzODFFMzVFODFFOEUxRTE2MDA0M0U4NTAgLyogV2ViR1BVQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTM4MUUzNUU5MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbXB1dGVD
b21tYW5kRW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFF
MzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFQjFFOEUyMTk5MDA0M0U4NTAgLyog
R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFRDFFOEUy
NDdBMDA0M0U4NTAgLyogR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFRTFFOEUyNENCMDA0M0U4NTAgLyogR1BV
Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTM4MUUzNUU5MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFFMzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BV
TGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzODFFMzVFQjFFOEUyMTk5MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFF
MzVFRDFFOEUyNDdBMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzODFFMzVFRTFF
OEUyNENCMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4MUUz
NUVGMUU4RTNEN0YwMDQzRTg1MCAvKiBXZWJHUFVTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVTaXplLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzgxRTM1
RjUxRThFNEM0MjAwNDNFODUwIC8qIFdlYkdQVVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
ODFFMzVGNjFFOEU0RDBFMDA0M0U4NTAgLyogR1BVU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4
MUUzNUY2MUU4RTREMEUwMDQzRTg1MCAvKiBHUFVMZWdhY3lTaXplLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzg3QUU5NTgxRThFOTJFRjAwMDBERTk2IC8qIEpTV2ViR1BVU2l6ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVVNpemUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODdBRTk1OTFFOEU5MkVGMDAwMERFOTYgLyogSlNX
ZWJHUFVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR1BVU2l6
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzOEYyM0FBRTFFOEU4M0M0MDBDRTQ2
RjUgLyogSlNXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NTIsNiArMTM3NTEsNyBAQAogCQlEMDQ1
QUQyMTIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTWV0YWxCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDQ1QUQyMjIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDQ1QUQyMzIxNjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BVTGVn
YWN5VGV4dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzgg
LyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2
QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTc5MTAsNTAgKzE3OTEwLDUwIEBACiAJCTQ5ODc3MEMxMTI0
MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTMxNkJEQkE3MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVCdWZmZXIuY3BwICov
LAotCQkJCTMxNkJEQkE4MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVCdWZmZXIuaCAqLywKLQkJCQkz
MTZCREJDNDFFNzVFRTI0MDBERTBENUEgLyogR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCi0JCQkJ
MzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJCQkz
MTZCREJCOTFFNzM4ODA2MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmNwcCAqLywKLQkJCQkz
MTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BVQ29tbWFuZFF1ZXVlLmggKi8sCi0JCQkJMzgx
RTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgKi8s
Ci0JCQkJMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rl
ci5oICovLAotCQkJCTM4MUUzNUVEMUU4RTI0N0EwMDQzRTg1MCAvKiBHUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZS5jcHAgKi8sCi0JCQkJMzgxRTM1RUMxRThFMjNFNDAwNDNFODUwIC8qIEdQVUNvbXB1
dGVQaXBlbGluZVN0YXRlLmggKi8sCi0JCQkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8qIEdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkY1MUU3NjJBQ0QwMERF
MEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRCRUUxRTc2
MjkxQjAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKLQkJCQkzMTZCREJF
RjFFNzYyOTFCMDBERTBENUEgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKLQkJCQkzMTZC
REI4NDFFNkUwQTIxMDBERTBENUEgLyogR1BVRGV2aWNlLmNwcCAqLywKLQkJCQkzMTZCREI4NTFF
NkUwQTIxMDBERTBENUEgLyogR1BVRGV2aWNlLmggKi8sCi0JCQkJMzE2QkRCQ0ExRTc1RjE3NjAw
REUwRDVBIC8qIEdQVURyYXdhYmxlLmNwcCAqLywKLQkJCQkzMTZCREJDQjFFNzVGMTc2MDBERTBE
NUEgLyogR1BVRHJhd2FibGUuaCAqLywKLQkJCQkzMTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyog
R1BVRW51bXMuaCAqLywKLQkJCQkzMTZCREI5MjFFNzBDODk3MDBERTBENUEgLyogR1BVRnVuY3Rp
b24uY3BwICovLAotCQkJCTMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5o
ICovLAotCQkJCTMxNkJEQjk4MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5LmNwcCAqLywK
LQkJCQkzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGlicmFyeS5oICovLAotCQkJCTMx
NkJEQkU4MUU3NjI0NDMwMERFMEQ1QSAvKiBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8s
Ci0JCQkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
LmggKi8sCi0JCQkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCREQxRTc2MTM2QzAwREUwRDVBIC8q
IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkQ4MUU3
NjEyREIwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgKi8sCi0JCQkJMzE2QkRCRDkxRTc2MTJEQjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRCRTIxRTc2MUVGRjAwREUwRDVB
IC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkz
MTZCREJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJEMDFFNzVGN0FFMDBERTBENUEgLyogR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkQxMUU3NUY3QUUwMERFMEQ1QSAvKiBH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQzA4MUU3NjM0MjcwMERFMEQ1
QSAvKiBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAot
CQkJCTMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJGQzFFNzYyRjU3MDBERTBENUEgLyog
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJGRDFFNzYyRjU3
MDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRC
RkUxRTc2MkY1NzAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovLAotCQkJ
CTMxNkJEQkZGMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8s
Ci0JCQkJMzgxRTM1RjYxRThFNEQwRTAwNDNFODUwIC8qIEdQVVNpemUuaCAqLywKLQkJCQkzMTZC
REJBRjFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5jcHAgKi8sCi0JCQkJMzE2QkRCQjAx
RTczNTRCQjAwREUwRDVBIC8qIEdQVVRleHR1cmUuaCAqLywKLQkJCQkzMTZCREJCNTFFNzM1N0NC
MDBERTBENUEgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkI2MUU3
MzU3Q0IwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5oICovLAorCQkJCTMxNkJEQkE3
MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuY3BwICovLAorCQkJCTMxNkJEQkE4
MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLywKKwkJCQkzMTZCREJDNDFF
NzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzE2
QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJ
CQkzMTZCREJCOTFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcCAq
LywKKwkJCQkzMTZCREJCQTFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
LmggKi8sCisJCQkJMzgxRTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlci5jcHAgKi8sCisJCQkJMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQ
VUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCTM4MUUzNUVEMUU4RTI0N0Ew
MDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJMzgx
RTM1RUMxRThFMjNFNDAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgg
Ki8sCisJCQkJMzE2QkRCRjQxRTc2MkFDRDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxNkJEQkY1MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8sCisJCQkJMzE2QkRCRUUxRTc2MjkxQjAw
REUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMTZCREJF
RjFFNzYyOTFCMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKKwkJ
CQkzMTZCREI4NDFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmNwcCAqLywKKwkJ
CQkzMTZCREI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi8sCisJCQkJ
MzE2QkRCQ0ExRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmNwcCAqLywKKwkJ
CQkzMTZCREJDQjFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCAqLywKKwkJ
CQkzMTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5RW51bXMuaCAqLywKKwkJCQkz
MTZCREI5MjFFNzBDODk3MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uY3BwICovLAorCQkJ
CTMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovLAorCQkJ
CTMxNkJEQjk4MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmNwcCAqLywKKwkJ
CQkzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5oICovLAorCQkJ
CTMxNkJEQkU4MUU3NjI0NDMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ci5jcHAgKi8sCisJCQkJMzE2QkRCRTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyLmggKi8sCisJCQkJMzE2QkRCREMxRTc2MTM2QzAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzE2QkRC
REQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovLAorCQkJCTMxNkJEQkQ4MUU3NjEyREIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzE2QkRCRDkxRTc2
MTJEQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8sCisJCQkJMzE2QkRCRTIxRTc2MUVGRjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMTZCREJFMzFFNzYx
RUZGMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IuaCAqLywKKwkJCQkzMTZCREJEMDFFNzVGN0FFMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxNkJEQkQxMUU3NUY3QUUwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAorCQkJCTMxNkJEQzA4MUU3NjM0Mjcw
MERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwICovLAorCQkJCTMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTZCREJGQzFF
NzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAq
LywKKwkJCQkzMTZCREJGRDFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzE2QkRCRkUxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovLAorCQkJCTMxNkJEQkZGMUU3NjJGNTcwMERF
MEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8sCisJCQkJMzgxRTM1RjYx
RThFNEQwRTAwNDNFODUwIC8qIEdQVUxlZ2FjeVNpemUuaCAqLywKKwkJCQkzMTZCREJBRjFFNzM1
NEJCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZS5jcHAgKi8sCisJCQkJMzE2QkRCQjAxRTcz
NTRCQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCAqLywKKwkJCQkzMTZCREJCNTFFNzM1
N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwICovLAorCQkJCTMx
NkJEQkI2MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oICov
LAogCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmNwcCAqLywKIAkJCQk0
OTg3NzBEODEyNDJDNTM1MDAyMjI2QkEgLyogVGV4dHVyZS5oICovLAogCQkJCTQ5ODc3MEQ5MTI0
MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLywKQEAgLTIwNjk5LDI3ICsyMDY5OSwy
NyBAQAogCQk5MzY4QzQ5MTIwRjlCNTcyMDA0MzRENjEgLyogbWV0YWwgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTMxNkJEQkE1MUU3MUZBNkYwMERFMEQ1
QSAvKiBHUFVCdWZmZXJNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJDNjFFNzVFRTNEMDBERTBENUEg
LyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAotCQkJCTMxNkJEQkJEMUU3Mzg4MTMwMERF
MEQ1QSAvKiBHUFVDb21tYW5kUXVldWVNZXRhbC5tbSAqLywKLQkJCQkzODFFMzVFOTFFOEUyMEFD
MDA0M0U4NTAgLyogR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gKi8sCi0JCQkJMzgx
RTM1RUUxRThFMjRDQjAwNDNFODUwIC8qIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0g
Ki8sCi0JCQkJMzE2QkRCRjgxRTc2MkJFRjAwREUwRDVBIC8qIEdQVURlcHRoU3RlbmNpbERlc2Ny
aXB0b3JNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJGMjFFNzYyOTM3MDBERTBENUEgLyogR1BVRGVw
dGhTdGVuY2lsU3RhdGVNZXRhbC5tbSAqLywKLQkJCQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEg
LyogR1BVRGV2aWNlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCQzkxRTc1RjE2MjAwREUwRDVBIC8q
IEdQVURyYXdhYmxlTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCOTYxRTcwQ0EyNDAwREUwRDVBIC8q
IEdQVUZ1bmN0aW9uTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCOUMxRTcwQ0Q5MDAwREUwRDVBIC8q
IEdQVUxpYnJhcnlNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJFQzFFNzYyNDZCMDBERTBENUEgLyog
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLywKLQkJCQkzMTZCREJFMDFFNzYxQ0I1
MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8s
Ci0JCQkJMzE2QkRCRDYxRTc2MTJDNDAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCi0JCQkJMzE2QkRCRTYxRTc2MUYyNzAwREUwRDVB
IC8qIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCi0J
CQkJMzE2QkRCRDQxRTc1RjdDQTAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0
YWwubW0gKi8sCi0JCQkJMzE2QkRDMEExRTc2MzQzNjAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovLAotCQkJCTMxNkJEQzA0MUU3
NjJGN0UwMERFMEQ1QSAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbSAqLywK
LQkJCQkzMTZCREMwNTFFNzYyRjdFMDBERTBENUEgLyogR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZU1l
dGFsLm1tICovLAotCQkJCTMxNkJEQkIzMUU3MzU3QjAwMERFMEQ1QSAvKiBHUFVUZXh0dXJlRGVz
Y3JpcHRvck1ldGFsLm1tICovLAotCQkJCTMxNkJEQkFEMUU3MzU0OUMwMERFMEQ1QSAvKiBHUFVU
ZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJMzE2QkRCQTUxRTcxRkE2RjAwREUwRDVBIC8qIEdQVUxl
Z2FjeUJ1ZmZlck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkM2MUU3NUVFM0QwMERFMEQ1QSAvKiBH
UFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCisJCQkJMzE2QkRCQkQxRTczODgxMzAw
REUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tICovLAorCQkJCTM4MUUzNUU5
MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5t
bSAqLywKKwkJCQkzODFFMzVFRTFFOEUyNENCMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGVNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJGODFFNzYyQkVGMDBERTBENUEgLyog
R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkYy
MUU3NjI5MzcwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tICov
LAorCQkJCTMxNkJEQjg4MUU2RTE0MUMwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2VNZXRhbC5t
bSAqLywKKwkJCQkzMTZCREJDOTFFNzVGMTYyMDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGVN
ZXRhbC5tbSAqLywKKwkJCQkzMTZCREI5NjFFNzBDQTI0MDBERTBENUEgLyogR1BVTGVnYWN5RnVu
Y3Rpb25NZXRhbC5tbSAqLywKKwkJCQkzMTZCREI5QzFFNzBDRDkwMDBERTBENUEgLyogR1BVTGVn
YWN5TGlicmFyeU1ldGFsLm1tICovLAorCQkJCTMxNkJEQkVDMUU3NjI0NkIwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tICovLAorCQkJCTMxNkJEQkUwMUU3
NjFDQjUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JN
ZXRhbC5tbSAqLywKKwkJCQkzMTZCREJENjFFNzYxMkM0MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJF
NjFFNzYxRjI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREJENDFFNzVGN0NBMDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTZCREMwQTFFNzYz
NDM2MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzE2QkRDMDQxRTc2MkY3RTAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxNkJEQzA1MUU3
NjJGN0UwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gKi8s
CisJCQkJMzE2QkRCQjMxRTczNTdCMDAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yTWV0YWwubW0gKi8sCisJCQkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2Fj
eVRleHR1cmVNZXRhbC5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWV0YWw7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjg1NDMsMjkgKzI4NTQzLDI5IEBACiAJCQkJQzVENEFBN0Ex
MTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQUExRTcxRkE5MzAwREUwRDVBIC8qIEdQ
VUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQ0UxRTc1RjE4QTAwREUwRDVBIC8q
IEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkJDMUU3Mzg4MDYw
MERFMEQ1QSAvKiBHUFVDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQTk1M0I0
MjBFQkQ0MzIwMEE2MTlGNiAvKiBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTkzQTk1M0IwMjBFQkQzQzkwMEE2MTlGNiAvKiBHUFVDb21wdXRlUGlwZWxpbmVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCRjcxRTc2MkFENTAwREUwRDVBIC8qIEdQ
VURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkYwMUU3
NjI5MjAwMERFMEQ1QSAvKiBHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMzE2QkRCODYxRTZFMEEyNzAwREUwRDVBIC8qIEdQVURldmljZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMzE2QkRCQ0QxRTc1RjE4NDAwREUwRDVBIC8qIEdQVURyYXdhYmxlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkzMTZCREJGQjFFNzYyRDA0MDBERTBENUEgLyogR1BVRW51bXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxNkJEQjk1MUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCOUIxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxpYnJhcnku
aCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkVCMUU3NjI0NEQwMERFMEQ1QSAvKiBHUFVSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCREYxRTc2MTM3NTAw
REUwRDVBIC8qIEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzE2QkRCREIxRTc2MTJFMjAwREUwRDVBIC8qIEdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJFNDFFNzYxRjA1
MDBERTBENUEgLyogR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1QSAvKiBHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMEQxRTc2MzREMjAwREUwRDVB
IC8qIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzE2QkRDMDIxRTc2MkY2NDAwREUwRDVBIC8qIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMDMxRTc2MkY2OTAwREUwRDVB
IC8qIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQTk1M0I1
MjBFQzlDM0YwMEE2MTlGNiAvKiBHUFVTaXplLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJC
MjFFNzM1NEJCMDBERTBENUEgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2
QkRCQjgxRTczNTdDQjAwREUwRDVBIC8qIEdQVVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTZCREJBQTFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJDRTFFNzVGMThBMDBERTBENUEgLyogR1BVTGVnYWN5
Q29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCQkMxRTczODgwNjAwREUw
RDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNBOTUz
QjQyMEVCRDQzMjAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNBOTUzQjAyMEVCRDNDOTAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNv
bXB1dGVQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJGNzFFNzYyQUQ1
MDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzE2QkRCRjAxRTc2MjkyMDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNp
bFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREI4NjFFNkUwQTI3MDBERTBENUEgLyog
R1BVTGVnYWN5RGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJDRDFFNzVGMTg0MDBE
RTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkJEQkZC
MUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzE2QkRCOTUxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTZCREI5QjFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCRUIxRTc2MjQ0RDAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJERjFFNzYx
Mzc1MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREJEQjFFNzYxMkUyMDBERTBENUEgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTMxNkJEQkU0MUU3NjFGMDUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2QkRCRDMxRTc1RjdCNjAw
REUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTZCREMwRDFFNzYzNEQyMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZCREMwMjFF
NzYyRjY0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTZCREMwMzFFNzYyRjY5MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNBOTUzQjUyMEVDOUMzRjAw
QTYxOUY2IC8qIEdQVUxlZ2FjeVNpemUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkJEQkIyMUU3
MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MTZCREJCODFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNTNDNUY1MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDQxNDZCNUM2QjAwQUE3ODM0
IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwCmluZGV4IGJkMzAxZWU5ODU1M2E2MTc5YjRkYjNm
YTRkY2IzNGFkZGVkMmZlZGMuLmY2NTkwNGI4NmY3NmIwNTYyNmFkOGRjMmViYzY1NGZjMWFjNmIw
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEJ1ZmZlci5jcHAK
QEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJN
ZXRhbEJ1ZmZlcj4gV2ViTWV0YWxCdWZmZXI6OmNyZWF0ZShHUFVCdWZmZXImJiBidWZmZXIpCitS
ZWZQdHI8V2ViTWV0YWxCdWZmZXI+IFdlYk1ldGFsQnVmZmVyOjpjcmVhdGUoR1BVTGVnYWN5QnVm
ZmVyJiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciByZXR1cm5pbmcgbnVsbCBy
YXRoZXIgdGhhbiBhIGJ1ZmZlciB3aXRoIGxlbmd0aCAwIGFuZCBjb250ZW50cyBudWxsIHdoZW4g
Y3JlYXRpb24gZmFpbHMuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVdlYk1ldGFsQnVmZmVyOjpXZWJNZXRhbEJ1ZmZlcihH
UFVCdWZmZXImJiBidWZmZXIpCitXZWJNZXRhbEJ1ZmZlcjo6V2ViTWV0YWxCdWZmZXIoR1BVTGVn
YWN5QnVmZmVyJiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIgeyBXVEZNb3ZlKGJ1ZmZlcikgfQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVyLmgKaW5kZXgg
MmUzNDFhNzJhZWE5MDdkODJiYmJiOTczYTM1ZWFjNjlkZjA1NDhjYi4uZTg0NGExNzA2N2M1ODZm
NjE3ODRlMDI0YTYzMGJmMjNmYWI2ZTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbEJ1ZmZlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVU
QUwpCiAKLSNpbmNsdWRlICJHUFVCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IApAQCAtMzUsMTcgKzM1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViTWV0
YWxCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbEJ1ZmZlcj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8V2ViTWV0YWxCdWZmZXI+IGNyZWF0ZShHUFVCdWZmZXImJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gY3JlYXRlKEdQVUxlZ2FjeUJ1ZmZlciYm
KTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmxlbmd0
aCgpOyB9CiAgICAgSlNDOjpBcnJheUJ1ZmZlciYgY29udGVudHMoKSBjb25zdCB7IHJldHVybiAq
bV9idWZmZXIuY29udGVudHMoKTsgfQogCi0gICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBXZWJNZXRhbEJ1ZmZlcihHUFVCdWZmZXImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxCdWZm
ZXIoR1BVTGVnYWN5QnVmZmVyJiYpOwogCi0gICAgR1BVQnVmZmVyIG1fYnVmZmVyOworICAgIEdQ
VUxlZ2FjeUJ1ZmZlciBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRCdWZmZXIu
Y3BwCmluZGV4IGQxYmJlMWE2NDhjMTQ1M2M4MzAwYjQ4MzE1NzY2NzQ2MjQwZGVlOTAuLjAzYWZj
MzZiNjIyMDRjYjI1NWM5N2Q3OGQwMzAxYWMxYjlhMmIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcApAQCAtMjksOCAr
MjksOCBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21tYW5kUXVldWUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbERyYXdhYmxlLmgiCkBAIC0zOSwxMiArMzksMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViTWV0YWxDb21tYW5kQnVmZmVyPiBXZWJN
ZXRhbENvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVDb21tYW5kUXVldWUmIHF1ZXVlKQor
UmVmPFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcj4gV2ViTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVhdGUo
Y29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiBxdWV1ZSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJNZXRhbENvbW1hbmRCdWZmZXIocXVldWUpKTsKIH0KIAotV2ViTWV0YWxDb21t
YW5kQnVmZmVyOjpXZWJNZXRhbENvbW1hbmRCdWZmZXIoY29uc3QgR1BVQ29tbWFuZFF1ZXVlJiBx
dWV1ZSkKK1dlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6V2ViTWV0YWxDb21tYW5kQnVmZmVyKGNvbnN0
IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYgcXVldWUpCiAgICAgOiBtX2J1ZmZlciB7IHF1ZXVlLCBb
dGhpc10gKCkgeyBtX2NvbXBsZXRlZC5yZXNvbHZlKCk7IH0gfQogewogICAgIExPRyhXZWJNZXRh
bCwgIldlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6V2ViTWV0YWxDb21tYW5kQnVmZmVyKCkiKTsKQEAg
LTY5LDEyICs2OSwxMiBAQCB2b2lkIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdh
YmxlKFdlYk1ldGFsRHJhd2FibGUmIGRyYXdhYmxlKQogCiBSZWY8V2ViTWV0YWxSZW5kZXJDb21t
YW5kRW5jb2Rlcj4gV2ViTWV0YWxDb21tYW5kQnVmZmVyOjpjcmVhdGVSZW5kZXJDb21tYW5kRW5j
b2RlcldpdGhEZXNjcmlwdG9yKFdlYk1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShH
UFVSZW5kZXJDb21tYW5kRW5jb2RlciB7IG1fYnVmZmVyLCBkZXNjcmlwdG9yLmRlc2NyaXB0b3Io
KSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKEdQ
VUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyIHsgbV9idWZmZXIsIGRlc2NyaXB0b3IuZGVzY3Jp
cHRvcigpIH0pOwogfQogCiBSZWY8V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI+IFdlYk1l
dGFsQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkKIHsKLSAgICBy
ZXR1cm4gV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShHUFVDb21wdXRlQ29t
bWFuZEVuY29kZXIgeyBtX2J1ZmZlciB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxDb21wdXRlQ29t
bWFuZEVuY29kZXI6OmNyZWF0ZShHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIgeyBtX2J1
ZmZlciB9KTsKIH0KIAogRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+JiBXZWJNZXRhbENvbW1hbmRC
dWZmZXI6OmNvbXBsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbENvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGIzODRmMmQxMjg3MWY5MWI1ZmIyZmIyNWUwNjAw
NzEwYWFmNjc4N2UuLjI2MWZkZDY0ODIzMzQ0NTNjZWRlNTM0ZTcxNzBhODM5NGMzZmQ5YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCiAjaW5jbHVkZSAi
RE9NUHJvbWlzZVByb3h5LmgiCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1
ZGUgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJNZXRh
bFJlbmRlclBhc3NEZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxDb21tYW5kQnVmZmVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21tYW5kQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgfldl
Yk1ldGFsQ29tbWFuZEJ1ZmZlcigpOwotICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21tYW5kQnVm
ZmVyPiBjcmVhdGUoY29uc3QgR1BVQ29tbWFuZFF1ZXVlJik7CisgICAgc3RhdGljIFJlZjxXZWJN
ZXRhbENvbW1hbmRCdWZmZXI+IGNyZWF0ZShjb25zdCBHUFVMZWdhY3lDb21tYW5kUXVldWUmKTsK
IAogICAgIHZvaWQgY29tbWl0KCk7CiAgICAgdm9pZCBwcmVzZW50RHJhd2FibGUoV2ViTWV0YWxE
cmF3YWJsZSYpOwpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoKIAogICAgIERPTVByb21pc2VQ
cm94eTxJRExWb2lkPiYgY29tcGxldGVkKCk7CiAKLSAgICBjb25zdCBHUFVDb21tYW5kQnVmZmVy
JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IEdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxDb21tYW5kQnVmZmVyKGNvbnN0IEdQVUNvbW1h
bmRRdWV1ZSYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcihjb25zdCBHUFVM
ZWdhY3lDb21tYW5kUXVldWUmKTsKIAotICAgIEdQVUNvbW1hbmRCdWZmZXIgbV9idWZmZXI7Cisg
ICAgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciBtX2J1ZmZlcjsKICAgICBET01Qcm9taXNlUHJveHk8
SURMVm9pZD4gbV9jb21wbGV0ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAKaW5kZXggYTQ5YjIzYjVlMmQ0Y2Y0Mjg1
OGFmNmNhNjgwMmI0MmM4OWI3Mjk2My4uZGE0ZDJjMmQxY2E4MjNjMGFiM2ZmYzRjMTIxMzUzOTEy
ZTdlZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxD
b21tYW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFs
Q29tbWFuZFF1ZXVlLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3Jl
YXRlKEdQVUNvbW1hbmRRdWV1ZSYmIHF1ZXVlKQorUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBX
ZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYmIHF1ZXVl
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFsQ29tbWFuZFF1ZXVlKFdURk1v
dmUocXVldWUpKSk7CiB9CiAKLVdlYk1ldGFsQ29tbWFuZFF1ZXVlOjpXZWJNZXRhbENvbW1hbmRR
dWV1ZShHUFVDb21tYW5kUXVldWUmJiBxdWV1ZSkKK1dlYk1ldGFsQ29tbWFuZFF1ZXVlOjpXZWJN
ZXRhbENvbW1hbmRRdWV1ZShHUFVMZWdhY3lDb21tYW5kUXVldWUmJiBxdWV1ZSkKICAgICA6IG1f
cXVldWUgeyBXVEZNb3ZlKHF1ZXVlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxDb21tYW5kUXVldWUuaAppbmRleCBmNTA3YjIzNjEwNmVlYTJkNTg2
NzA3NWM2OTNiNjQ4Y2M4ZDg0NGI2Li41Y2JiODcyMmVlYThlMDE1NTc5N2E1ODIwN2Y4MGIzZThk
MTNkODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENv
bW1hbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29t
bWFuZFF1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAot
I2luY2x1ZGUgIkdQVUNvbW1hbmRRdWV1ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUNvbW1hbmRR
dWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlcjsKIGNsYXNz
IFdlYk1ldGFsQ29tbWFuZFF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21tYW5k
UXVldWU+IHsKIHB1YmxpYzoKICAgICB+V2ViTWV0YWxDb21tYW5kUXVldWUoKTsKLSAgICBzdGF0
aWMgUmVmPFdlYk1ldGFsQ29tbWFuZFF1ZXVlPiBjcmVhdGUoR1BVQ29tbWFuZFF1ZXVlJiYpOwor
ICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21tYW5kUXVldWU+IGNyZWF0ZShHUFVMZWdhY3lDb21t
YW5kUXVldWUmJik7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVl
LmxhYmVsKCk7IH0KICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsgbV9x
dWV1ZS5zZXRMYWJlbChsYWJlbCk7IH0KQEAgLTQ2LDkgKzQ2LDkgQEAgcHVibGljOgogICAgIFJl
ZjxXZWJNZXRhbENvbW1hbmRCdWZmZXI+IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbENvbW1hbmRRdWV1ZShHUFVDb21tYW5kUXVldWUmJik7
CisgICAgZXhwbGljaXQgV2ViTWV0YWxDb21tYW5kUXVldWUoR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
JiYpOwogCi0gICAgR1BVQ29tbWFuZFF1ZXVlIG1fcXVldWU7CisgICAgR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlIG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5k
RW5jb2Rlci5jcHAKaW5kZXggYjQ2MDNmNDc3NTIxZDU2MjFkZDliNDRiMjIzMGJkZTEyYTlhYjdj
OS4uODQ0MDFkZDg4OGQ0NjI1ZDFjNjNkNjc5OThhMGFlNjgyYjE2ZWVkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmNwcApAQCAtMjgsMjYgKzI4LDI2IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwp
CiAKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmgiCi0jaW5jbHVkZSAiR1BVU2l6ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lTaXplLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbENvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJN
ZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGlubGluZSBHUFVTaXplIEdQVVNpemVNYWtlKFdlYk1ldGFsU2l6ZSBzaXplKQorc3RhdGlj
IGlubGluZSBHUFVMZWdhY3lTaXplIEdQVUxlZ2FjeVNpemVNYWtlKFdlYk1ldGFsU2l6ZSBzaXpl
KQogewogICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoIH07
CiB9CiAKLVJlZjxXZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gV2ViTWV0YWxDb21wdXRl
Q29tbWFuZEVuY29kZXI6OmNyZWF0ZShHUFVDb21wdXRlQ29tbWFuZEVuY29kZXImJiBlbmNvZGVy
KQorUmVmPFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBXZWJNZXRhbENvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6Y3JlYXRlKEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlciYmIGVuY29k
ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVu
Y29kZXIoV1RGTW92ZShlbmNvZGVyKSkpOwogfQogICAgIAotV2ViTWV0YWxDb21wdXRlQ29tbWFu
ZEVuY29kZXI6OldlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKEdQVUNvbXB1dGVDb21tYW5k
RW5jb2RlciYmIGVuY29kZXIpCitXZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlcjo6V2ViTWV0
YWxDb21wdXRlQ29tbWFuZEVuY29kZXIoR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyJiYg
ZW5jb2RlcikKICAgICA6IG1fZW5jb2RlciB7IFdURk1vdmUoZW5jb2RlcikgfQogewogfQpAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRCdWZm
ZXIoV2ViTWV0YWxCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgbwogCiB2b2lkIFdlYk1ldGFsQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaChXZWJNZXRhbFNpemUgdGhyZWFkZ3JvdXBzUGVy
R3JpZCwgV2ViTWV0YWxTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKIHsKLSAgICBtX2VuY29k
ZXIuZGlzcGF0Y2goR1BVU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVyR3JpZCksIEdQVVNpemVNYWtl
KHRocmVhZHNQZXJUaHJlYWRncm91cCkpOworICAgIG1fZW5jb2Rlci5kaXNwYXRjaChHUFVMZWdh
Y3lTaXplTWFrZSh0aHJlYWRncm91cHNQZXJHcmlkKSwgR1BVTGVnYWN5U2l6ZU1ha2UodGhyZWFk
c1BlclRocmVhZGdyb3VwKSk7CiB9CiAKIHZvaWQgV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXI6OmVuZEVuY29kaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlci5oCmluZGV4IGJmYmE4YzVjNDBhZjMw
YjA3MGQ3NTA0NzQ2ODA5MDllZGU2NGJjNjEuLjZmNmFkNzhhZTEwZWJhMDIwMzE5NmE0Mjk2MjFj
MmU1ZjYyOTI3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
LmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCiAjaW5jbHVk
ZSAiV2ViTWV0YWxTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFdlYk1ldGFsQ29tcHV0ZVBpcGVs
aW5lU3RhdGU7CiAKIGNsYXNzIFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29kZXI+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoR1BVQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxDb21wdXRlQ29t
bWFuZEVuY29kZXI+IGNyZWF0ZShHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXImJik7CiAK
ICAgICB2b2lkIHNldENvbXB1dGVQaXBlbGluZVN0YXRlKFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5l
U3RhdGUmKTsKICAgICB2b2lkIHNldEJ1ZmZlcihXZWJNZXRhbEJ1ZmZlciYsIHVuc2lnbmVkLCB1
bnNpZ25lZCk7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZEVuY29kaW5n
KCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXIoR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyJiYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyKEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlciYmKTsKIAot
ICAgIEdQVUNvbXB1dGVDb21tYW5kRW5jb2RlciBtX2VuY29kZXI7CisgICAgR1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyIG1fZW5jb2RlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0
ZVBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKaW5kZXggMTFiNTNiNTVhMDBmNDNlM2IzZGQyNWM5YjNk
Y2ZlZWRjOTY4OTY2OC4uODUzMTA3ZjcwMzAwNGU4YTJmYWM0MzY4MmUzZTM1ZTdlYjM5NGQ2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBXZWJNZXRhbENv
bXB1dGVQaXBlbGluZVN0YXRlOjpjcmVhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0
ZSkKK1JlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBXZWJNZXRhbENvbXB1dGVQaXBl
bGluZVN0YXRlOjpjcmVhdGUoR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRl
KFdURk1vdmUoc3RhdGUpKSk7CiB9CiAKLVdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU6Oldl
Yk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0
ZSkKK1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU6OldlYk1ldGFsQ29tcHV0ZVBpcGVsaW5l
U3RhdGUoR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkKICAgICA6IG1fc3Rh
dGUgeyBXVEZNb3ZlKHN0YXRlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmgKaW5kZXggYmNlNDc4
ZjJiNTI4N2NmYjI3ZTFlYjJjZDc4MDkxM2Y3MzExNTg2OS4uZjA0ZmY1ZmUzNjM0MTBhZmUyOTJl
ZTRlOTJiZjNmNGY2NzAxODQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaApAQCAtMjcsNyArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVQ29tcHV0ZVBpcGVsaW5l
U3RhdGUuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNywx
NCArMzcsMTQgQEAgY2xhc3MgV2ViTWV0YWxGdW5jdGlvbjsKIAogY2xhc3MgV2ViTWV0YWxDb21w
dXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsQ29tcHV0ZVBpcGVs
aW5lU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsQ29tcHV0ZVBpcGVs
aW5lU3RhdGU+IGNyZWF0ZShHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNyZWF0ZShHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSYmKTsKIAotICAgIEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlJiBzdGF0ZSgp
IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYg
c3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
TWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZShHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSYmKTsKKyAg
ICBleHBsaWNpdCBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlKEdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlJiYpOwogCi0gICAgR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUgbV9zdGF0ZTsK
KyAgICBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSBtX3N0YXRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKaW5kZXggMjU5YjcwMzA5
N2QwN2U2YWU2NTFlYjBjOTVlMTMwNTYyYjM0MDY0YS4uNTc3ODA2Mzg3MjcyN2VhYzQxNGFhZTMw
M2ExOGNkOTFiMTIyNmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIFdlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjCiB2b2lkIFdlYk1ldGFsRGVwdGhTdGVuY2ls
RGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oQ29tcGFyZUZ1bmN0aW9uIG5ld0Rl
cHRoQ29tcGFyZUZ1bmN0aW9uKQogewogICAgIG1fZGVwdGhDb21wYXJlRnVuY3Rpb24gPSBuZXdE
ZXB0aENvbXBhcmVGdW5jdGlvbjsKLSAgICBtX2Rlc2NyaXB0b3Iuc2V0RGVwdGhDb21wYXJlRnVu
Y3Rpb24odG9HUFVDb21wYXJlRnVuY3Rpb24obV9kZXB0aENvbXBhcmVGdW5jdGlvbikpOworICAg
IG1fZGVzY3JpcHRvci5zZXREZXB0aENvbXBhcmVGdW5jdGlvbih0b0dQVUxlZ2FjeUNvbXBhcmVG
dW5jdGlvbihtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0
YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKaW5kZXggYTNiNzk1MGI1MmU4ODNmOWJhNWYzN2Yx
OWRhMjA3NTNjYjI1MGQ5My4uODA5YzFlYTg5NjFhNTBkZWQ2NTNmN2M1YThjYWZjOTdkMmZkMWY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0
YWxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2Vi
TWV0YWxFbnVtcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgQ29tcGFyZUZ1bmN0aW9uIGRl
cHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5j
dGlvbihDb21wYXJlRnVuY3Rpb24pOwogCi0gICAgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIEdQVUxlZ2FjeURlcHRo
U3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSB7IHJldHVybiBtX2Rlc2NyaXB0b3I7IH0K
IAogcHJpdmF0ZToKICAgICBXZWJNZXRhbERlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSA9IGRlZmF1
bHQ7CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlcmUgd291bGQgYmUgbm8g
bmVlZCBmb3IgYSBkZWZhdWx0IHZhbHVlIGhlcmUuCiAKICAgICBXZWJNZXRhbENvbXBhcmVGdW5j
dGlvbiBtX2RlcHRoQ29tcGFyZUZ1bmN0aW9uIHsgV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246OkFs
d2F5cyB9OwotICAgIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAg
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcAppbmRleCA2YTk0N2ViNGQ3MDdjMjNh
MTc5YTM5MzNkYjg2NzVjN2YxMmJkOTAwLi4wYTdjN2QyNGViZjQ3NjNkYmVmZDZmYzUzOTNhMzI4
MTg3OWQ0NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bERlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IFdlYk1ldGFs
RGVwdGhTdGVuY2lsU3RhdGU6OmNyZWF0ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQor
UmVmPFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU+IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGU6
OmNyZWF0ZShHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGUoV1RGTW92ZShzdGF0ZSkp
KTsKIH0KIAotV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6V2ViTWV0YWxEZXB0aFN0ZW5jaWxT
dGF0ZShHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYmIHN0YXRlKQorV2ViTWV0YWxEZXB0aFN0ZW5jaWxT
dGF0ZTo6V2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZShHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZSYmIHN0YXRlKQogICAgIDogbV9zdGF0ZSB7IFdURk1vdmUoc3RhdGUpIH0KIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRGVwdGhTdGVuY2lsU3Rh
dGUuaAppbmRleCBmNDVjMmQ2ZDhkNWE5NzI2YzFjOWU2MTUwMDkxZWRjZTU5ODM4Yzk3Li4xYzk2
ZjI5NTQ1ZTRlYTEyNmFjMWUwOWVlNzMzNWRkZjQzMjcyM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZS5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAg
LTM1LDE3ICszNSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYk1ldGFsRGVw
dGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbERlcHRoU3RlbmNpbFN0
YXRlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRl
PiBjcmVhdGUoR1BVRGVwdGhTdGVuY2lsU3RhdGUmJik7CisgICAgc3RhdGljIFJlZjxXZWJNZXRh
bERlcHRoU3RlbmNpbFN0YXRlPiBjcmVhdGUoR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmJik7
CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0
cmluZyYpOwogCi0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUmIHN0YXRlKCkgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlJiBzdGF0ZSgpIHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbERlcHRoU3RlbmNp
bFN0YXRlKEdQVURlcHRoU3RlbmNpbFN0YXRlJiYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsRGVw
dGhTdGVuY2lsU3RhdGUoR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmJik7CiAKLSAgICBHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZSBtX3N0YXRlOworICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
IG1fc3RhdGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEcmF3YWJsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdhYmxlLmNwcAppbmRleCA1N2Y3OTIxNzgx
MDBjOGFhMTc5MjNhM2JiYzNlMzdjZjBjNTQ0YzA1Li41ZWQyZTllYmRhMzgxOWJhY2IxOGNmMmQy
ZjQzNzA5NjhhYjYwMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJNZXRhbERyYXdhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbERyYXdhYmxlLmNwcApAQCAtMjgsMTkgKzI4LDE5IEBACiAKICNpZiBFTkFCTEUoV0VCTUVU
QUwpCiAKLSNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVy
ZS5oIgogI2luY2x1ZGUgIldlYk1ldGFsVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxXZWJNZXRhbERyYXdhYmxlPiBXZWJNZXRhbERyYXdhYmxlOjpjcmVhdGUoR1BVRHJh
d2FibGUmJiBkcmF3YWJsZSkKK1JlZjxXZWJNZXRhbERyYXdhYmxlPiBXZWJNZXRhbERyYXdhYmxl
OjpjcmVhdGUoR1BVTGVnYWN5RHJhd2FibGUmJiBkcmF3YWJsZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJNZXRhbERyYXdhYmxlKFdURk1vdmUoZHJhd2FibGUpKSk7CiB9CiAKLVdl
Yk1ldGFsRHJhd2FibGU6OldlYk1ldGFsRHJhd2FibGUoR1BVRHJhd2FibGUmJiBkcmF3YWJsZSkK
K1dlYk1ldGFsRHJhd2FibGU6OldlYk1ldGFsRHJhd2FibGUoR1BVTGVnYWN5RHJhd2FibGUmJiBk
cmF3YWJsZSkKICAgICA6IG1fZHJhd2FibGUgeyBXVEZNb3ZlKGRyYXdhYmxlKSB9Ci0gICAgLCBt
X3RleHR1cmUgeyBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVUZXh0dXJlIHsgbV9kcmF3YWJs
ZSB9KSB9CisgICAgLCBtX3RleHR1cmUgeyBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVMZWdh
Y3lUZXh0dXJlIHsgbV9kcmF3YWJsZSB9KSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsRHJhd2FibGUuaAppbmRleCA1MzdhYjViODY3NzRhNTUzMDRkNjAw
ZGQ5ZDZlZjdjNzY5YWM0N2FjLi42NDliMjlmN2UyOTBlMWYzZmQ2YzYwNWM0NTI3YzhmN2VkYWZj
M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbERyYXdh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxEcmF3YWJsZS5o
CkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJH
UFVEcmF3YWJsZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDE1ICszOCwx
NSBAQCBjbGFzcyBXZWJNZXRhbFRleHR1cmU7CiBjbGFzcyBXZWJNZXRhbERyYXdhYmxlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViTWV0YWxEcmF3YWJsZT4gewogcHVibGljOgogICAgIH5XZWJNZXRh
bERyYXdhYmxlKCk7Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbERyYXdhYmxlPiBjcmVhdGUoR1BV
RHJhd2FibGUmJik7CisgICAgc3RhdGljIFJlZjxXZWJNZXRhbERyYXdhYmxlPiBjcmVhdGUoR1BV
TGVnYWN5RHJhd2FibGUmJik7CiAKLSAgICBHUFVEcmF3YWJsZSYgZHJhd2FibGUoKSB7IHJldHVy
biBtX2RyYXdhYmxlOyB9CisgICAgR1BVTGVnYWN5RHJhd2FibGUmIGRyYXdhYmxlKCkgeyByZXR1
cm4gbV9kcmF3YWJsZTsgfQogICAgIFdlYk1ldGFsVGV4dHVyZSYgdGV4dHVyZSgpIHsgcmV0dXJu
IG1fdGV4dHVyZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1ldGFsRHJh
d2FibGUoR1BVRHJhd2FibGUmJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxEcmF3YWJsZShHUFVM
ZWdhY3lEcmF3YWJsZSYmKTsKIAotICAgIEdQVURyYXdhYmxlIG1fZHJhd2FibGU7CisgICAgR1BV
TGVnYWN5RHJhd2FibGUgbV9kcmF3YWJsZTsKICAgICBSZWY8V2ViTWV0YWxUZXh0dXJlPiBtX3Rl
eHR1cmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbEVudW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMu
Y3BwCmluZGV4IDZhZDBhNDZlYzI3MmQzNWQ5NTM5MTA4MjMyYmM3ZTA4YmY3MjhlOTIuLmQ3Zjky
NTU4NDZiYmM2M2E1NTc4ZGY2MDdmZDlmYjcyYmI5ZWE0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVFbnVtcy5oIgorI2luY2x1ZGUgIkdQVUxl
Z2FjeUVudW1zLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc5LDI3ICs3OSwyNyBAQCBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rp
b25OYW1lKFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uIHZhbHVlKQogICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogfQogCi1HUFVDb21wYXJlRnVuY3Rpb24gdG9HUFVDb21wYXJlRnVuY3Rpb24oY29u
c3QgV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24gdmFsdWUpCitHUFVMZWdhY3lDb21wYXJlRnVuY3Rp
b24gdG9HUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24oY29uc3QgV2ViTWV0YWxDb21wYXJlRnVuY3Rp
b24gdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IFdlYk1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpO
ZXZlcikKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6TmV2ZXI7CisgICAgICAg
IHJldHVybiBHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb246Ok5ldmVyOwogICAgIGlmICh2YWx1ZSA9
PSBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbjo6TGVzcykKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBh
cmVGdW5jdGlvbjo6TGVzczsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlv
bjo6TGVzczsKICAgICBpZiAodmFsdWUgPT0gV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246OkVxdWFs
KQotICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpFcXVhbDsKKyAgICAgICAgcmV0
dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6RXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdl
Yk1ldGFsQ29tcGFyZUZ1bmN0aW9uOjpMZXNzZXF1YWwpCi0gICAgICAgIHJldHVybiBHUFVDb21w
YXJlRnVuY3Rpb246Okxlc3NFcXVhbDsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVG
dW5jdGlvbjo6TGVzc0VxdWFsOwogICAgIGlmICh2YWx1ZSA9PSBXZWJNZXRhbENvbXBhcmVGdW5j
dGlvbjo6R3JlYXRlcikKLSAgICAgICAgcmV0dXJuIEdQVUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRl
cjsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6R3JlYXRlcjsKICAg
ICBpZiAodmFsdWUgPT0gV2ViTWV0YWxDb21wYXJlRnVuY3Rpb246Ok5vdGVxdWFsKQotICAgICAg
ICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpOb3RFcXVhbDsKKyAgICAgICAgcmV0dXJuIEdQ
VUxlZ2FjeUNvbXBhcmVGdW5jdGlvbjo6Tm90RXF1YWw7CiAgICAgaWYgKHZhbHVlID09IFdlYk1l
dGFsQ29tcGFyZUZ1bmN0aW9uOjpHcmVhdGVyZXF1YWwpCi0gICAgICAgIHJldHVybiBHUFVDb21w
YXJlRnVuY3Rpb246OkdyZWF0ZXJFcXVhbDsKKyAgICAgICAgcmV0dXJuIEdQVUxlZ2FjeUNvbXBh
cmVGdW5jdGlvbjo6R3JlYXRlckVxdWFsOwogICAgIGlmICh2YWx1ZSA9PSBXZWJNZXRhbENvbXBh
cmVGdW5jdGlvbjo6QWx3YXlzKQotICAgICAgICByZXR1cm4gR1BVQ29tcGFyZUZ1bmN0aW9uOjpB
bHdheXM7CisgICAgICAgIHJldHVybiBHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb246OkFsd2F5czsK
ICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gR1BVQ29tcGFyZUZ1
bmN0aW9uOjpOZXZlcjsKKyAgICByZXR1cm4gR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uOjpOZXZl
cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViTWV0YWxFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxFbnVtcy5oCmluZGV4IDI4MmM1MDYzYWZjMTc5MDNkYWQ4ZjRkNDQ5ZDNhYjdj
M2U0NjU5MGQuLjkxMTliMTIzZDBiYzYxMTBjZDIwZDEyOGRiMmFlNmQyZjgyZjMzOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRW51bXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbEVudW1zLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIEdQVUNvbXBhcmVGdW5jdGlv
bjsKK2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uOwogCiBlbnVtIGNsYXNzIFdl
Yk1ldGFsQ29tcGFyZUZ1bmN0aW9uIHsKICAgICBOZXZlciwKQEAgLTQ3LDcgKzQ3LDcgQEAgZW51
bSBjbGFzcyBXZWJNZXRhbENvbXBhcmVGdW5jdGlvbiB7CiAKIHN0ZDo6b3B0aW9uYWw8V2ViTWV0
YWxDb21wYXJlRnVuY3Rpb24+IHRvV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24oY29uc3QgU3RyaW5n
Jik7CiBTdHJpbmcgd2ViM0RDb21wYXJlRnVuY3Rpb25OYW1lKFdlYk1ldGFsQ29tcGFyZUZ1bmN0
aW9uKTsKLUdQVUNvbXBhcmVGdW5jdGlvbiB0b0dQVUNvbXBhcmVGdW5jdGlvbihXZWJNZXRhbENv
bXBhcmVGdW5jdGlvbik7CitHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24gdG9HUFVMZWdhY3lDb21w
YXJlRnVuY3Rpb24oV2ViTWV0YWxDb21wYXJlRnVuY3Rpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFs
RnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlv
bi5jcHAKaW5kZXggNDdiZDNhZGQwZTc2ZTg2ODllMWQ2YTc3MzdlYjQwZTdiNjhiNjg1NC4uNjA3
MjdjOTA1ZThhZGQ2ODRkZTJmYzdhZGMxNmY0NWJmOGI2MzQwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5jcHAKQEAgLTMyLDEyICszMiwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbEZ1bmN0aW9uPiBXZWJNZXRh
bEZ1bmN0aW9uOjpjcmVhdGUoR1BVRnVuY3Rpb24mJiBmdW5jdGlvbikKK1JlZjxXZWJNZXRhbEZ1
bmN0aW9uPiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUoR1BVTGVnYWN5RnVuY3Rpb24mJiBmdW5j
dGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbEZ1bmN0aW9uKFdURk1v
dmUoZnVuY3Rpb24pKSk7CiB9CiAKLVdlYk1ldGFsRnVuY3Rpb246OldlYk1ldGFsRnVuY3Rpb24o
R1BVRnVuY3Rpb24mJiBmdW5jdGlvbikKK1dlYk1ldGFsRnVuY3Rpb246OldlYk1ldGFsRnVuY3Rp
b24oR1BVTGVnYWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICA6IG1fZnVuY3Rpb24geyBXVEZN
b3ZlKGZ1bmN0aW9uKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbEZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbEZ1bmN0aW9uLmgKaW5kZXggMmJhNjkyYzE0MzNiODg3Mzg1MWJkYzU5NTEyNjZhYjdmNDEy
YjhiNy4uNzAyNDVkYzNiMGFlNGVhYTI0NzVhNzhmOTQ5Y2FkM2M5Nzg4YWI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsRnVuY3Rpb24uaApAQCAtMjcsNyArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJHUFVMZWdhY3lGdW5jdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMzYsMTUgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViTWV0
YWxGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsRnVuY3Rpb24+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsRnVuY3Rpb24+IGNyZWF0ZShHUFVGdW5jdGlvbiYm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsRnVuY3Rpb24+IGNyZWF0ZShHUFVMZWdhY3lGdW5j
dGlvbiYmKTsKIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbi5u
YW1lKCk7IH0KLSAgICBjb25zdCBHUFVGdW5jdGlvbiYgZnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uOyB9CisgICAgY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mIGZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdl
Yk1ldGFsRnVuY3Rpb24oR1BVRnVuY3Rpb24mJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxGdW5j
dGlvbihHUFVMZWdhY3lGdW5jdGlvbiYmKTsKIAotICAgIEdQVUZ1bmN0aW9uIG1fZnVuY3Rpb247
CisgICAgR1BVTGVnYWN5RnVuY3Rpb24gbV9mdW5jdGlvbjsKIH07CiAgICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbExpYnJhcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxMaWJy
YXJ5LmNwcAppbmRleCBiNzkxNTZiZWUzODA0ZjhhODE0YmM4ZDQwZjVhNmRjMWU2MjExYzYyLi4z
NjcyMzQ0ZjAyNzY3YTdhMGNkNWVhNDE1MTk3ODY5NzM1ZTYzMjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsTGlicmFyeS5jcHAKQEAgLTMyLDEyICszMiwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbExpYnJhcnk+IFdlYk1ldGFs
TGlicmFyeTo6Y3JlYXRlKEdQVUxpYnJhcnkmJiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUpCitSZWY8V2ViTWV0YWxMaWJyYXJ5PiBXZWJNZXRhbExpYnJhcnk6OmNyZWF0ZShHUFVM
ZWdhY3lMaWJyYXJ5JiYgbGlicmFyeSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1ldGFsTGlicmFyeShXVEZNb3ZlKGxpYnJhcnkpLCBz
b3VyY2VDb2RlKSk7CiB9CiAKLVdlYk1ldGFsTGlicmFyeTo6V2ViTWV0YWxMaWJyYXJ5KEdQVUxp
YnJhcnkmJiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCitXZWJNZXRhbExpYnJh
cnk6OldlYk1ldGFsTGlicmFyeShHUFVMZWdhY3lMaWJyYXJ5JiYgbGlicmFyeSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlKQogICAgIDogbV9zb3VyY2VDb2RlIHsgc291cmNlQ29kZSB9CiAgICAg
LCBtX2xpYnJhcnkgeyBXVEZNb3ZlKGxpYnJhcnkpIH0KIHsKQEAgLTUwLDcgKzUwLDcgQEAgVmVj
dG9yPFN0cmluZz4gV2ViTWV0YWxMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKIAogUmVm
UHRyPFdlYk1ldGFsRnVuY3Rpb24+IFdlYk1ldGFsTGlicmFyeTo6ZnVuY3Rpb25XaXRoTmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgR1BVRnVuY3Rpb24gZnVuY3Rpb24geyBt
X2xpYnJhcnksIG5hbWUgfTsKKyAgICBHUFVMZWdhY3lGdW5jdGlvbiBmdW5jdGlvbiB7IG1fbGli
cmFyeSwgbmFtZSB9OwogICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBXZWJNZXRhbEZ1bmN0aW9uOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxMaWJyYXJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuaAppbmRleCBl
OGUxMWQ5ZWYwOTZmOTZjYTc5YmY0ZjhjMTliOGZhOTdjYjYyMmE4Li45ODc2YzIwYTBlODk5NWFh
YzJjZTQ0ZGJkYmI4OGYxOTE5YWVlYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbExpYnJhcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbExpYnJhcnkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1F
VEFMKQogCi0jaW5jbHVkZSAiR1BVTGlicmFyeS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJh
cnkuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBXZWJNZXRhbEZ1bmN0aW9uOwogCiBjbGFzcyBXZWJN
ZXRhbExpYnJhcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbExpYnJhcnk+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsTGlicmFyeT4gY3JlYXRlKEdQVUxpYnJhcnkmJiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsTGlicmFy
eT4gY3JlYXRlKEdQVUxlZ2FjeUxpYnJhcnkmJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsK
IAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
Q29kZTsgfQogCkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJNZXRh
bEZ1bmN0aW9uPiBmdW5jdGlvbldpdGhOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIFdlYk1ldGFsTGlicmFyeShHUFVMaWJyYXJ5JiYsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSk7CisgICAgV2ViTWV0YWxMaWJyYXJ5KEdQVUxlZ2FjeUxpYnJhcnkmJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKTsKIAogICAgIFN0cmluZyBtX3NvdXJjZUNvZGU7Ci0gICAgR1BV
TGlicmFyeSBtX2xpYnJhcnk7CisgICAgR1BVTGVnYWN5TGlicmFyeSBtX2xpYnJhcnk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IGU4ZTYx
OGM2MjFlNGNjYjdkODM5OTJlMGU3ODM2ZjRkOTI2M2YxMTUuLmNjNjgxYTk5ZjY4ZDQ5MmZkYjA5
ZDdiYjkwMjhlMzk0ZDI2ZTdhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0yOCw4ICsy
OCw4IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVDb21tYW5kQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJH
UFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJNZXRhbEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYk1l
dGFsQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYk1ldGFsRGVwdGhTdGVuY2lsU3RhdGUu
aCIKQEAgLTM4LDEyICszOCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJN
ZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyPiBXZWJNZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpj
cmVhdGUoR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJiBlbmNvZGVyKQorUmVmPFdlYk1ldGFsUmVu
ZGVyQ29tbWFuZEVuY29kZXI+IFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShH
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmIGVuY29kZXIpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIp
KSk7CiB9CiAKLVdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXI6OldlYk1ldGFsUmVuZGVyQ29t
bWFuZEVuY29kZXIoR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImJiBlbmNvZGVyKQorV2ViTWV0YWxS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihHUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2RlciYmIGVuY29kZXIpCiAgICAgOiBtX2VuY29kZXIgeyBXVEZN
b3ZlKGVuY29kZXIpIH0KIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIuaAppbmRleCA5ZGVkN2FiZTQ1NzMy
MTNlYjk1MzNlNjlmNDJiMGI4ZDllNzUxODYwLi5jYmU2NmZjNWE1NDFmYjI4OTk5ZGZmMTNiM2Vl
NGFhMGIyZDE3OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJN
ZXRhbFJlbmRlckNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5o
IgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQwLDcgKzQwLDcg
QEAgY2xhc3MgV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlOwogY2xhc3MgV2ViTWV0YWxSZW5k
ZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsUmVuZGVyQ29tbWFu
ZEVuY29kZXI+IHsKIHB1YmxpYzoKICAgICB+V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcigp
OwotICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKEdQ
VVJlbmRlckNvbW1hbmRFbmNvZGVyJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxSZW5kZXJD
b21tYW5kRW5jb2Rlcj4gY3JlYXRlKEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyJiYpOwog
CiAgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVT
dGF0ZSYpOwogICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoV2ViTWV0YWxEZXB0aFN0ZW5j
aWxTdGF0ZSYpOwpAQCAtNDksMTIgKzQ5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdQcmlt
aXRpdmVzKHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBjb3VudCk7CiAg
ICAgdm9pZCBlbmRFbmNvZGluZygpOwogCi0gICAgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXImIGVu
Y29kZXIoKSB7IHJldHVybiBtX2VuY29kZXI7IH0KKyAgICBHUFVMZWdhY3lSZW5kZXJDb21tYW5k
RW5jb2RlciYgZW5jb2RlcigpIHsgcmV0dXJuIG1fZW5jb2RlcjsgfQogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyQ29tbWFuZEVuY29kZXIoR1BVUmVuZGVyQ29tbWFuZEVu
Y29kZXImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJDb21tYW5kRW5jb2RlcihHUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciYmKTsKIAotICAgIEdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyIG1fZW5jb2RlcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlciBtX2VuY29k
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKaW5kZXggMGZjNGJhYWE2MGZhYzc5ZDViYWJjNGFjMmY5ODYzYjc2
OThhZGYzYi4uM2VlZTc0NWI1YWRiZGZhYjcyZjMyZjQxYWRjMTkyYjA3YWUzOGIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1l
dGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMjgsOCArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIkdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJNZXRhbFRleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKaW5kZXggZWRkNGIw
NTdlNDYyMTAxYmQ4MjdiNjRiYzI2YTcxOGVkZmJmZDViZC4uMzk1OTAwMmJkOTk3NWIwZWI0MDU3
Njk5NzZjMWUyZjhlZjA4MWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOwogY2xhc3MgV2ViTWV0YWxUZXh0dXJlOwogCiBjbGFzcyBX
ZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiB7CkBAIC01NCw3ICs1NCw3
IEBAIHByb3RlY3RlZDoKICAgICBXZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cigpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29u
c3QgPSAwOwogCiAgICAgUmVmUHRyPFdlYk1ldGFsVGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKaW5kZXggNjYy
OGZmOTY3NGI5NjZhNWFkYTQ4YTUzM2VmYjRkNTY1MmIzMTY5YS4uYWNlNDNkZGZkMjRhODk4YTgw
YzBlMDQ3ZDIyMTMzYWNkYTc4NzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTI4LDI1ICsyOCwyNSBAQAogCiAjaWYgRU5BQkxFKFdF
Qk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVRl
eHR1cmUuaCIKICNpbmNsdWRlICJXZWJNZXRhbFRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+IFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OmNyZWF0ZShHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciYmIGRlc2NyaXB0b3IpCitSZWY8V2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcj4gV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3Jl
YXRlKEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZXRhbFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yKFdURk1vdmUoZGVzY3JpcHRvcikpKTsKIH0KIAotV2ViTWV0
YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciYmIGRlc2NyaXB0b3IpCitXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKEdQ
VUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
ICAgICA6IG1fZGVzY3JpcHRvciB7IFdURk1vdmUoZGVzY3JpcHRvcikgfQogewogfQogCiBXZWJN
ZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+V2ViTWV0YWxSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpID0gZGVmYXVsdDsKIAotY29uc3QgR1BVUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkgY29uc3QKK2NvbnN0IEdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvciYgV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVzY3Jp
cHRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFs
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApp
bmRleCBkMTAxZTdiZTUwMTA4NDU3ZDhlNTZkNjcyNGNkYTYzZDFkZmQzMDQ1Li5lNWY4YmFhODRj
ODQwZTkyYmViNzVkNjc1N2E2ZGViZDA5NjMwYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
V0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IgZmluYWwgOiBwdWJsaWMgV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciYmKTsKIAogICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcihHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBleHBs
aWNpdCBXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKEdQVUxlZ2Fj
eVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYpOwogCi0gICAgY29uc3QgR1BV
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7
CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBHUFVSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7CisgICAgR1BVTGVnYWN5UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKaW5kZXggMDVjNWZiMjA0ZTVhZGJlMjQ2ZTg5ZGQ1YTI0OTFiMjgzOTk0
N2MwZi4uMDliMmI4ZWEzNzZkMWMzYmI2NWY0MDAxODc3ZDhiNTFlY2E4NzRkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
TWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTMyLDEyICsz
MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRhbFJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjcmVhdGUoR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3ImJiBkZXNjcmlwdG9yKQorUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+IFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNy
ZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2Ny
aXB0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcihXVEZNb3ZlKGRlc2NyaXB0b3IpKSk7CiB9CiAKLVdlYk1l
dGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OldlYk1ldGFsUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihH
UFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
CiAgICAgOiBtX2Rlc2NyaXB0b3IgeyBXVEZNb3ZlKGRlc2NyaXB0b3IpIH0KIHsKIH0KQEAgLTU0
LDcgKzU0LDcgQEAgdm9pZCBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRDbGVhckRlcHRoKGRvdWJsZSBuZXdDbGVhckQKICAgICBtX2Rlc2NyaXB0b3Iuc2V0
Q2xlYXJEZXB0aChuZXdDbGVhckRlcHRoKTsKIH0KIAotY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yJiBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpkZXNjcmlwdG9yKCkgY29uc3QKK2NvbnN0IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciYgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cjo6ZGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVzY3JpcHRvcjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaAppbmRleCBiYTA5MDI5
M2VlNDBmNmNkOGUxNzkzNTQ2OWU3ODk0MDE1MDkyNGUwLi4yMTc1ODE2MGE1YWFhYzU4YTA1N2Uz
NTI0NjM5YzkzN2I4ZjhiODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAK
LSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwg
OiBwdWJsaWMgV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfldlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+IGNyZWF0ZShHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3I+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ciYmKTsKIAogICAgIGRvdWJsZSBjbGVhckRlcHRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDbGVh
ckRlcHRoKGRvdWJsZSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciYmKTsKKyAgICBleHBsaWNpdCBXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yJiYpOwogCi0gICAgY29uc3QgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgbV9kZXNjcmlw
dG9yOworICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIG1f
ZGVzY3JpcHRvcjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlw
dG9yLmgKaW5kZXggMmUyMzg5YzlhNDczZTY3ZDdjNTBiZTMyNGI2ZWMzNTFjMjYzNDY1Zi4uYmJh
NDk0ZTM3ZDVkMWY3YzgzZGMwNzAxYzAwYmQxMWM3Nzc4YTVjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYk1ldGFsUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJNZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAgICAgV2ViTWV0YWxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciYg
ZGVwdGhBdHRhY2htZW50KCk7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJNZXRhbFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4mIGNvbG9yQXR0YWNobWVudHMoKTsKIAot
ICAgIGNvbnN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXNjcmlwdG9yOyB9CisgICAgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3I7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJNZXRhbFJlbmRlclBhc3NEZXNjcmlwdG9yKCk7CkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJNZXRhbFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xvckF0dGFjaG1lbnRzOwogICAgIFJlZlB0cjxXZWJN
ZXRhbFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPiBtX2RlcHRoQXR0YWNobWVu
dDsKIAotICAgIEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKKyAgICBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7CiB9OwogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwCmluZGV4IDVjNmQ5NjIwZjNhOThlMmI5MWExMTRlMGZkMGZmYzhl
ZmMxYWNlODkuLjBlNTM0YzA5MDNjNzU3NjJmMjY1M2IzOWM0Zjk4OTJjYzQxYjU2YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
QEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJNZXRh
bFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gV2ViTWV0YWxSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNyZWF0ZShHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorUmVmPFdlYk1ldGFsUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBXZWJNZXRhbFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y3JlYXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoV1RGTW92ZShkZXNjcmlwdG9yKSkpOwogfQogCi1XZWJNZXRhbFJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6V2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IoR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yJiYgZGVzY3JpcHRvcikKK1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cihHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3ImJiBkZXNj
cmlwdG9yKQogICAgIDogbV9kZXNjcmlwdG9yIHsgV1RGTW92ZShkZXNjcmlwdG9yKSB9CiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApp
bmRleCBiNjZlZjUyNWM1MTExNzAxYmI1N2Y3MzU1MGU2ZTJmNjY2NGU0NGRlLi5mYjg1NTgxMzE2
NTUxN2M0Zjk2ZTk3OTY2Njk1NDlkYmZmOTUxNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY3JlYXRlKEdQVVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1ldGFs
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjcmVhdGUoR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yJiYpOwogCiAgICAgdW5zaWdu
ZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKICAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVk
KTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZXRhbFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcihHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3ImJik7CisgICAgZXhwbGljaXQgV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yJiYpOwogCi0gICAgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIG1fZGVzY3JpcHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
Yk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRleCAwYzcxMjgwMWRlMjMzMjAw
MTM5Y2M0ZGYxMGMxMWIwMmYyNWVjZDdlLi41NDFkNzExMmFmMzYwZWJhNDBhYmVjNWJjNzdjMjkx
ZmM3MGFiNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRh
bFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2luY2x1ZGUgIkdQVUxlZ2FjeUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmluZGV4IDhhMDYyMDAw
MDFjZmY1NDk4NTE3NzM5MjJmYzE4ZTgyOTVjNjcxMjYuLjlkNzAxODU3OWJhZGQ1ZjQ1ZTcyMzM2
ZTVjZGI4MDQ5ZDc2YTY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBHUFVGdW5jdGlvbjsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK2NsYXNz
IEdQVUxlZ2FjeUZ1bmN0aW9uOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOwogY2xhc3MgV2ViTWV0YWxGdW5jdGlvbjsKIGNsYXNzIFdlYk1ldGFsUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOwogCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIGNvbnN0IEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1f
ZGVzY3JpcHRvcjsgfQogCiBwcml2YXRlOgogICAgIFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKCk7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UmVmUHRy
PFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPj4gbV9jb2xv
ckF0dGFjaG1lbnRzOwogCi0gICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG1fZGVzY3Jp
cHRvcjsKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9y
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKaW5kZXgg
MjEzOGJmZmRmMmQ4MTQyZDMwMzFiZTM4ZjYxMzNkY2RhYjIxOTRkZi4uZGQwZjA1NzZlMzY0OTZi
ZjBlZGY2YmViNzMxYzA0ZTJjODYxZDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBAIC0zMCwx
MiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViTWV0YWxSZW5kZXJQ
aXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlJiYgc3RhdGUpCitSZWY8V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRl
PiBXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU6OmNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlJiYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlKFdURk1vdmUoc3RhdGUpKSk7CiB9CiAKLVdlYk1ldGFsUmVuZGVy
UGlwZWxpbmVTdGF0ZTo6V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0YXRlKEdQVVJlbmRlclBpcGVs
aW5lU3RhdGUmJiBzdGF0ZSkKK1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6V2ViTWV0YWxS
ZW5kZXJQaXBlbGluZVN0YXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUmJiBzdGF0ZSkK
ICAgICA6IG1fc3RhdGUgeyBXVEZNb3ZlKHN0YXRlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCmlu
ZGV4IDg4Zjc5OWRmNGUwYzViODlmYWE1ODM2YjQzNDI0OTAwNGQzNzMwYzIuLmIxN2ZkM2IyMTFi
ZGU1YTI5ZGJiOTgwYTFmZDA3Zjc4ZDQyMGJhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCkBAIC0yNyw3
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZVN0YXRlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBA
IC0zNSwxNyArMzUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJNZXRhbFJl
bmRlclBpcGVsaW5lU3RhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJNZXRhbFJlbmRlclBpcGVs
aW5lU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk1ldGFsUmVuZGVyUGlwZWxp
bmVTdGF0ZT4gY3JlYXRlKEdQVVJlbmRlclBpcGVsaW5lU3RhdGUmJik7CisgICAgc3RhdGljIFJl
ZjxXZWJNZXRhbFJlbmRlclBpcGVsaW5lU3RhdGU+IGNyZWF0ZShHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlJiYpOwogCiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lU3RhdGUm
IHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZShHUFVSZW5k
ZXJQaXBlbGluZVN0YXRlJiYpOworICAgIGV4cGxpY2l0IFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVT
dGF0ZShHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiYpOwogCi0gICAgR1BVUmVuZGVyUGlw
ZWxpbmVTdGF0ZSBtX3N0YXRlOworICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUgbV9z
dGF0ZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCAxNjllYWJkNDdkZjYyYmQ1NmRhMTczYzZkNDI4NTIzNzBlMzZmNjIwLi45MDQxM2VhMjQzNTNm
NmYxZDc0YzdlZDEwMmVjZmE1MDY3NjkxM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0j
aW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTWV0YWxCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJNZXRhbENvbW1hbmRRdWV1ZS5oIgpAQCAtNzIsNyArNzIsNyBA
QCBzdGF0aWMgY29uc3QgaW50IGtNYXhUZXh0dXJlU2l6ZSA9IDQwOTY7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKIHsKLSAgICBHUFVEZXZpY2UgZGV2aWNlOworICAg
IEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CiAKICAgICBpZiAoIWRldmljZSkgewogICAgICAgICAv
LyBGSVhNRTogV2ViTWV0YWwgLSBkaXNwYXRjaCBhbiBldmVudCBoZXJlIGZvciB0aGUgZmFpbHVy
ZS4KQEAgLTg3LDcgKzg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk1ldGFsUmVuZGVyaW5nQ29u
dGV4dD4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmEKICAgICByZXR1cm4g
cmVuZGVyaW5nQ29udGV4dDsKIH0KIAotV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpXZWJNZXRh
bFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBHUFVEZXZpY2UmJiBkZXZpY2Up
CitXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OldlYk1ldGFsUmVuZGVyaW5nQ29udGV4dChDYW52
YXNCYXNlJiBjYW52YXMsIEdQVUxlZ2FjeURldmljZSYmIGRldmljZSkKICAgICA6IEdQVUJhc2Vk
Q2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX2RldmljZShXVEZNb3ZlKGRl
dmljZSkpCiB7CkBAIC0xNTMsNDIgKzE1Myw0MiBAQCB2b2lkIFdlYk1ldGFsUmVuZGVyaW5nQ29u
dGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKIFJlZjxXZWJNZXRhbExpYnJh
cnk+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlTGlicmFyeShjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsTGlicmFyeTo6Y3JlYXRlKEdQVUxp
YnJhcnkgeyBtX2RldmljZSwgc291cmNlQ29kZSB9LCBzb3VyY2VDb2RlKTsKKyAgICByZXR1cm4g
V2ViTWV0YWxMaWJyYXJ5OjpjcmVhdGUoR1BVTGVnYWN5TGlicmFyeSB7IG1fZGV2aWNlLCBzb3Vy
Y2VDb2RlIH0sIHNvdXJjZUNvZGUpOwogfQogCiBSZWY8V2ViTWV0YWxSZW5kZXJQaXBlbGluZVN0
YXRlPiBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUo
V2ViTWV0YWxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0
dXJuIFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKEdQVVJlbmRlclBpcGVsaW5l
U3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9yKCkgfSk7CisgICAgcmV0dXJu
IFdlYk1ldGFsUmVuZGVyUGlwZWxpbmVTdGF0ZTo6Y3JlYXRlKEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9yKCkgfSk7CiB9CiAKIFJl
ZjxXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlPiBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYk1ldGFsRGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICByZXR1cm4gV2ViTWV0YWxEZXB0aFN0ZW5jaWxTdGF0ZTo6Y3JlYXRl
KEdQVURlcHRoU3RlbmNpbFN0YXRlIHsgbV9kZXZpY2UsIGRlc2NyaXB0b3IuZGVzY3JpcHRvcigp
IH0pOworICAgIHJldHVybiBXZWJNZXRhbERlcHRoU3RlbmNpbFN0YXRlOjpjcmVhdGUoR1BVTGVn
YWN5RGVwdGhTdGVuY2lsU3RhdGUgeyBtX2RldmljZSwgZGVzY3JpcHRvci5kZXNjcmlwdG9yKCkg
fSk7CiB9CiAKIFJlZjxXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlPiBXZWJNZXRhbFJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZVN0YXRlKFdlYk1ldGFsRnVuY3Rpb24m
IGZ1bmN0aW9uKQogewotICAgIHJldHVybiBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlOjpj
cmVhdGUoR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUgeyBtX2RldmljZSwgZnVuY3Rpb24uZnVuY3Rp
b24oKSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZTo6Y3JlYXRl
KEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlIHsgbV9kZXZpY2UsIGZ1bmN0aW9uLmZ1bmN0
aW9uKCkgfSk7CiB9CiAKIFJlZjxXZWJNZXRhbENvbW1hbmRRdWV1ZT4gV2ViTWV0YWxSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVDb21tYW5kUXVldWUoKQogewotICAgIHJldHVybiBXZWJNZXRhbENv
bW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUNvbW1hbmRRdWV1ZSB7IG1fZGV2aWNlIH0pOworICAgIHJl
dHVybiBXZWJNZXRhbENvbW1hbmRRdWV1ZTo6Y3JlYXRlKEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSB7
IG1fZGV2aWNlIH0pOwogfQogCiBSZWY8V2ViTWV0YWxEcmF3YWJsZT4gV2ViTWV0YWxSZW5kZXJp
bmdDb250ZXh0OjpuZXh0RHJhd2FibGUoKQogewotICAgIHJldHVybiBXZWJNZXRhbERyYXdhYmxl
OjpjcmVhdGUoR1BVRHJhd2FibGUgeyBtX2RldmljZSB9KTsKKyAgICByZXR1cm4gV2ViTWV0YWxE
cmF3YWJsZTo6Y3JlYXRlKEdQVUxlZ2FjeURyYXdhYmxlIHsgbV9kZXZpY2UgfSk7CiB9CiAKIFJl
ZlB0cjxXZWJNZXRhbEJ1ZmZlcj4gV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVCdWZm
ZXIoSlNDOjpBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdlYk1ldGFsQnVm
ZmVyOjpjcmVhdGUoR1BVQnVmZmVyIHsgbV9kZXZpY2UsIGRhdGEgfSk7CisgICAgcmV0dXJuIFdl
Yk1ldGFsQnVmZmVyOjpjcmVhdGUoR1BVTGVnYWN5QnVmZmVyIHsgbV9kZXZpY2UsIGRhdGEgfSk7
CiB9CiAKIFJlZjxXZWJNZXRhbFRleHR1cmU+IFdlYk1ldGFsUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlVGV4dHVyZShXZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAg
IHJldHVybiBXZWJNZXRhbFRleHR1cmU6OmNyZWF0ZShHUFVUZXh0dXJlIHsgbV9kZXZpY2UsIGRl
c2NyaXB0b3IuZGVzY3JpcHRvcigpIH0pOworICAgIHJldHVybiBXZWJNZXRhbFRleHR1cmU6OmNy
ZWF0ZShHUFVMZWdhY3lUZXh0dXJlIHsgbV9kZXZpY2UsIGRlc2NyaXB0b3IuZGVzY3JpcHRvcigp
IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGNmYzcwYmQw
OTZhZmQ5MTE4MWQzYzVmZGQ0YTE3NTJjMDU2MWNjMDMuLjUwY2NkNDY0MTc0ZTg1ZjhhY2E0ZTk2
Yjc2ODI2Y2M3NmU5YTVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5B
QkxFKFdFQk1FVEFMKQogCiAjaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwpAQCAtNjYsMTAgKzY2
LDEwIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViTWV0YWxCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihK
U0M6OkFycmF5QnVmZmVyVmlldyYpOwogICAgIFJlZjxXZWJNZXRhbFRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvciYpOwogCi0gICAgY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZTsgfQorICAgIGNvbnN0IEdQVUxlZ2Fj
eURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIEdQVURldmljZSYmKTsK
KyAgICBXZWJNZXRhbFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIEdQVUxlZ2FjeURldmlj
ZSYmKTsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBzdG9wKCkgZmluYWw7CkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBt
YXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOwogCi0gICAgR1BVRGV2aWNlIG1fZGV2aWNlOworICAgIEdQVUxl
Z2FjeURldmljZSBtX2RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmUuY3BwCmluZGV4IGNkYzNl
MTZkM2U4ZjBlNjc4OTNkY2Y2N2I4ODBmNWU1YzMxMWFmM2IuLmU3MDk5OTgzNWU3NWY4NjE0M2Yy
OGRlZGEwYmNkN2U3MzIwNmQ0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxUZXh0dXJlLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFdlYk1ldGFsVGV4dHVyZT4gV2ViTWV0YWxUZXh0dXJlOjpjcmVhdGUoR1BV
VGV4dHVyZSYmIHRleHR1cmUpCitSZWY8V2ViTWV0YWxUZXh0dXJlPiBXZWJNZXRhbFRleHR1cmU6
OmNyZWF0ZShHUFVMZWdhY3lUZXh0dXJlJiYgdGV4dHVyZSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJNZXRhbFRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkpOwogfQogCi1XZWJNZXRh
bFRleHR1cmU6OldlYk1ldGFsVGV4dHVyZShHUFVUZXh0dXJlJiYgdGV4dHVyZSkKK1dlYk1ldGFs
VGV4dHVyZTo6V2ViTWV0YWxUZXh0dXJlKEdQVUxlZ2FjeVRleHR1cmUmJiB0ZXh0dXJlKQogICAg
IDogbV90ZXh0dXJlIHsgV1RGTW92ZSh0ZXh0dXJlKSB9CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5oCmluZGV4IGJlY2I0YWEzZjFiMDk3ZjM0ZGQ5
ZDZlMjQ3ZmExOGZmZmUwZTliZjcuLjMwYjdmNmNiNWRlMTA1MTg0NmFiZDA3OTgyODM4MWYzYTI5
N2U2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsVGV4dHVyZS5o
CkBAIC0yNywyNyArMjcsMjcgQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUg
IkdQVVRleHR1cmUuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lUZXh0dXJlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7CitjbGFzcyBHUFVMZWdhY3lUZXh0
dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViTWV0YWxUZXh0dXJlIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViTWV0YWxUZXh0dXJlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZXRhbFRl
eHR1cmU+IGNyZWF0ZShHUFVUZXh0dXJlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViTWV0YWxUZXh0
dXJlPiBjcmVhdGUoR1BVTGVnYWN5VGV4dHVyZSYmKTsKIAogICAgIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlLndpZHRoKCk7IH0KICAgICB1bnNpZ25lZCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUuaGVpZ2h0KCk7IH0KIAotICAgIGNvbnN0IEdQVVRl
eHR1cmUmIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmU7IH0KKyAgICBjb25zdCBH
UFVMZWdhY3lUZXh0dXJlJiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWV0YWxUZXh0dXJlKEdQVVRleHR1cmUmJik7Cisg
ICAgZXhwbGljaXQgV2ViTWV0YWxUZXh0dXJlKEdQVUxlZ2FjeVRleHR1cmUmJik7CiAKLSAgICBH
UFVUZXh0dXJlIG1fdGV4dHVyZTsKKyAgICBHUFVMZWdhY3lUZXh0dXJlIG1fdGV4dHVyZTsKIH07
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFRleHR1cmVEZXNjcmlwdG9yLmgKaW5kZXggYzQ1MDAyMjNl
MWE1NGE2ZjZkNmVhNGNhNDEyMTZjYjgyNjY0YWI0Ny4uYzgzMjhkYTMyODJjYTk3YmZiMmY3ZGFk
YmI5MDA1MzgwYzkzMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsVGV4dHVyZURlc2NyaXB0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKFdFQk1FVEFMKQogCi0jaW5jbHVkZSAiR1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlICJHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01NSwxMiArNTUsMTIgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIHVzYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2FnZSh1bnNp
Z25lZCk7CiAKLSAgICBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIHsg
cmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIGNvbnN0IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9kZXNjcmlwdG9yOyB9CiAKIHByaXZhdGU6CiAg
ICAgV2ViTWV0YWxUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBwaXhlbEZvcm1hdCwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpOwogCi0gICAgR1BVVGV4
dHVyZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAgIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yIG1fZGVzY3JpcHRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIu
aAppbmRleCA5MmMxNmZiNmYzNWI3MzM3ODNhYTk5NzkxMGY0ZTkxMTdlYTY1OWQ0Li5hMDljNGEy
MmZhMDkwYjEzOTI3MmYzOWZlNGViNGM4N2M4MmNkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTWV0YWxMYXllci5oCkBAIC0zMSw3
ICszMSw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgR1BVRGV2aWNlOworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOwogfQog
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtMzksMTMgKzM5LDEzIEBA
IGNsYXNzIEdQVURldmljZTsKICNlbHNlCiBAaW50ZXJmYWNlIFdlYk1ldGFsTGF5ZXIgOiBDQUxh
eWVyIHsgLy8gRklYTUU6IFdlYk1ldGFsIC0gRGlzYWJsZSBXZWJNZXRhbCBvbiBpT1Mgc2ltdWxh
dG9yPwogI2VuZGlmCi0gICAgV2ViQ29yZTo6R1BVRGV2aWNlKiBfY29udGV4dDsKKyAgICBXZWJD
b3JlOjpHUFVMZWdhY3lEZXZpY2UqIF9jb250ZXh0OwogICAgIGZsb2F0IF9kZXZpY2VQaXhlbFJh
dGlvOwogfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYykgV2ViQ29yZTo6R1BVRGV2aWNlKiBjb250
ZXh0OworQHByb3BlcnR5IChub25hdG9taWMpIFdlYkNvcmU6OkdQVUxlZ2FjeURldmljZSogY29u
dGV4dDsKIAotLSAoaWQpaW5pdFdpdGhHUFVEZXZpY2U6KFdlYkNvcmU6OkdQVURldmljZSopY29u
dGV4dDsKKy0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3JlOjpHUFVMZWdhY3lEZXZpY2Uq
KWNvbnRleHQ7CiAKIC0gKENHSW1hZ2VSZWYpY29weUltYWdlU25hcHNob3RXaXRoQ29sb3JTcGFj
ZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNZXRhbExheWVyLm1tCmluZGV4IDkxYzAy
MzM1NzM3Njg0MDEzMjFjZDM4ZGNhODk2Njc5N2UzZmFkYzQuLjNmZmRmMTlmNzdjM2Y5YmIzYTNk
MTQyYTdhODJjNjgxNzEwNDlmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYk1ldGFsTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTWV0YWxMYXllci5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQk1FVEFMKQogCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQg
IkdQVUxlZ2FjeURldmljZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zOCw3
ICszOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJNZXRhbExheWVyCiAKIEBzeW50aGVzaXplIGNv
bnRleHQ9X2NvbnRleHQ7CiAKLS0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3JlOjpHUFVE
ZXZpY2UqKWNvbnRleHQKKy0gKGlkKWluaXRXaXRoR1BVRGV2aWNlOihXZWJDb3JlOjpHUFVMZWdh
Y3lEZXZpY2UqKWNvbnRleHQKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIF9jb250
ZXh0ID0gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ODEwYjY2
MmY3ODQxZDdiYzU0MTUyZDA3YmUzZDdmZDFlZTljYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkKLXsKLSAg
ICBMT0coV2ViTWV0YWwsICJHUFVCdWZmZXI6On5HUFVCdWZmZXIoKSIpOwotfQotCi11bnNpZ25l
ZCBHUFVCdWZmZXI6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGVudHMgPyBt
X2NvbnRlbnRzLT5ieXRlTGVuZ3RoKCkgOiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODJlNjk0YTIxOTcyNjcy
MjlhYjcyYTdmMGQ2M2M3MGVkMzhhZTFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKLQotbmFtZXNwYWNlIEpTQyB7Ci1j
bGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEFycmF5QnVmZmVyVmlldzsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLWNsYXNzIEdQVUJ1ZmZlciB7Ci1wdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgR1BVQnVmZmVyKGNvbnN0IEdQVURldmljZSYsIGNvbnN0
IEpTQzo6QXJyYXlCdWZmZXJWaWV3Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUJ1ZmZlcigp
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgSlND
OjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgp
OyB9Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQnVmZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkK
LSAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21ldGFsOwotI2VuZGlmCi0gICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDIxZGZiMmM1YzY4M2FlZWRkNjIzYzkxMWJlY2QwYzM4YzBhOGQ5Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHku
a2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIK
LQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVDb21tYW5kQnVmZmVyOjp+R1BVQ29tbWFuZEJ1ZmZlcigpCi17
Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIo
KSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZTY1OWZkZmJjYzcwNzQwOTY1MmVhNjJj
Y2NiOWQzNjBiZjkyMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZm
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVDb21tYW5kUXVldWU7Ci1jbGFzcyBHUFVEcmF3YWJsZTsK
LQotY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR1BVQ29t
bWFuZEJ1ZmZlcihjb25zdCBHUFVDb21tYW5kUXVldWUmLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGVkQ2FsbGJhY2spOwotICAgIH5HUFVDb21tYW5kQnVmZmVyKCk7Ci0KLSAgICB2b2lkIGNv
bW1pdCgpIGNvbnN0OwotICAgIHZvaWQgcHJlc2VudERyYXdhYmxlKEdQVURyYXdhYmxlJikgY29u
c3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQ29tbWFuZEJ1ZmZlciAqbWV0YWwoKSBjb25z
dCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXBy
aXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+IG1fbWV0YWw7Ci0jZW5kaWYK
LX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZFF1ZXVlLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlMTQ4ZWViZjBjYjBlYTg2ZmY2ZDkw
NWNiNDE4YmI4ZmQ1ZDYzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZFF1
ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVQ29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQ29tbWFuZFF1ZXVlOjp+
R1BVQ29tbWFuZFF1ZXVlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kUXVldWU6
On5HUFVDb21tYW5kUXVldWUoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRRdWV1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmQ5NmI2ODUw
ZWFiNzQ0YmE3ZjRjNDEzZGM5YWJiYjJkYzE3NTE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVDb21tYW5kUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JK
Q19QUk9UT0NPTChNVExDb21tYW5kUXVldWUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEdQVURldmljZTsKLQotY2xhc3MgR1BVQ29tbWFuZFF1ZXVlIHsKLXB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHUFVDb21tYW5kUXVldWUoY29uc3QgR1BVRGV2aWNlJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUNvbW1hbmRRdWV1ZSgpOwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRM
YWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExDb21t
YW5kUXVldWUgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQotI2VuZGlm
Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExDb21tYW5kUXVl
dWU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTUxNmVjNDcxNjM1ZGRmZmQ0NWRmMjcxZWE3NzU1Y2Y5ZmE0MTMxYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
WXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotR1BVQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjp+R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6On5HUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXIoKSIpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRl
Q29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzEwN2UzMDhmM2Q5NTFkYTBlNjMxODhhZGFmNDg4MWJhNWY0YjEwMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAo
eS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXIpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBHUFVCdWZmZXI7Ci1jbGFz
cyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGU7Ci0KLXN0
cnVjdCBHUFVTaXplOwotCi1jbGFzcyBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IEdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5k
QnVmZmVyJik7Ci0gICAgfkdQVUNvbXB1dGVDb21tYW5kRW5jb2RlcigpOwotCi0gICAgdm9pZCBz
ZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSYpIGNv
bnN0OwotICAgIHZvaWQgc2V0QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNp
Z25lZCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNwYXRjaChHUFVTaXplLCBHUFVTaXplKSBjb25zdDsK
LSAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRl
OgotICAgIFJldGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0YWw7Ci0jZW5k
aWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGlu
ZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21w
dXRlUGlwZWxpbmVTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYjY2
NzIzYjgzYjIyNmNjZWZkZWVkNmE3ODgyM2Q1YTIxYjA1ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtp
a3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmVTdGF0
ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZTo6fkdQVUNv
bXB1dGVQaXBlbGluZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6fkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlKCkiKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRjNTE4MjRiNDE0N2E2ZDVhM2I1YTc4MjE3OTA0
ZWM1ZjI3NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbXB1dGVQaXBlbGluZVN0
YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NP
TChNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR1BVRGV2aWNlOwotY2xhc3MgR1BVRnVuY3Rpb247Ci0KLWNsYXNzIEdQVUNvbXB1dGVQaXBl
bGluZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSgpID0gZGVm
YXVsdDsKLSAgICBHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25z
dCBHUFVGdW5jdGlvbiYpOwotICAgIH5HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSgpOwotCi0jaWYg
VVNFKE1FVEFMKQotICAgIE1UTENvbXB1dGVQaXBlbGluZVN0YXRlICptZXRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0
ZToKLSAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IG1fbWV0YWw7Ci0jZW5k
aWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyOGIy
MDQ1NWRhOTdiNmNhYjJmMDA2OGEwZTBlODU0YzQ3ZjBiNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fkdQVURlcHRo
U3RlbmNpbERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVURlcHRoU3RlbmNp
bERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkiKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmEwMTk5ZTY0MTYxYzkzMzViODYwODgz
NGNiOGE4MjliYTE1NGZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xB
U1MgTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1l
bnVtIGNsYXNzIEdQVUNvbXBhcmVGdW5jdGlvbjsKLQotY2xhc3MgR1BVRGVwdGhTdGVuY2lsRGVz
Y3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOwotICAg
IH5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7Ci0KLSAgICBib29sIGRlcHRoV3JpdGVFbmFi
bGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChib29sKSBjb25zdDsK
LQotICAgIEdQVUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5jdGlvbigpIGNvbnN0Owot
ICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVQ29tcGFyZUZ1bmN0aW9uKSBjb25z
dDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yICptZXRh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1F
VEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4g
bV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGVwdGhTdGVuY2lsU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmMwMGY5Nzg1NTlmMmI0OTU1NmFjZDQ0ZmYwZWUwNjJhODJjNGUwMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5o
IgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURlcHRoU3RlbmNpbFN0YXRlOjp+R1BVRGVwdGhTdGVuY2ls
U3RhdGUoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVURlcHRoU3RlbmNpbFN0YXRlOjp+R1BV
RGVwdGhTdGVuY2lsU3RhdGUoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURlcHRoU3RlbmNpbFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDViZjNlMzIyYjcyMDE0YTMwNTgwMTg3MTc3ZjMzOGYyZDE3NDI1MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERl
cHRoU3RlbmNpbFN0YXRlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZp
Y2U7Ci1jbGFzcyBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSB7Ci1wdWJsaWM6Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1
bHQ7Ci0gICAgR1BVRGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYpOwotICAgIH5HUFVEZXB0aFN0ZW5jaWxTdGF0ZSgpOwot
Ci0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
bWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVT
RShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiBt
X21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmlj
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZmI1NTE2YTQ2YmQ4MmQwMjk4
NzcwNTA1Mjc3Y2MyMDU4NWQ0OTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmlj
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVURldmljZTo6fkdQVURldmljZSgpCi17
Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRGV2aWNlOjp+R1BVRGV2aWNlKCkiKTsKLSAgICBkaXNj
b25uZWN0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMmZlMWEzZTg3ZGIyN2M3ZmYyOTFlMjgwZjM0MzFiZTk4
MTU5NjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdl
Yk1ldGFsTGF5ZXI7Ci0KLU9CSkNfUFJPVE9DT0woTVRMRGV2aWNlKTsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2UgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IEdQVURldmljZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVEZXZpY2UoKTsKLQotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBXZWJN
ZXRhbExheWVyICpsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KLSAgICBX
RUJDT1JFX0VYUE9SVCBDQUxheWVyICpwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0gICAgTVRMRGV2
aWNlICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0g
ICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgeyB9Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBkaXNjb25uZWN0KCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgUmV0YWluUHRyPFdlYk1l
dGFsTGF5ZXI+IG1fbGF5ZXI7Ci0gICAgUmV0YWluUHRyPE1UTERldmljZT4gbV9tZXRhbDsKLSNl
bmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2FibGUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmZhNzUwYWJmMTkzMTBiZGFmNWViZTRlNGRmMjI2
YTIzZTI2NmZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVURyYXdh
YmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRHJhd2FibGU6On5HUFVEcmF3YWJsZSgpCi17Ci0g
ICAgTE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6On5HUFVEcmF3YWJsZSgpIik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiNjc5OGNlZGJiNGE5MjI4YzM2YjM0ZmQ3MjBlYzc5ODc3OTFjZWI1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEcmF3YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERyYXdhYmxlKTsKLU9CSkNfUFJPVE9DT0woTVRM
VGV4dHVyZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotCi1j
bGFzcyBHUFVEcmF3YWJsZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR1BVRHJhd2FibGUoY29u
c3QgR1BVRGV2aWNlJik7Ci0gICAgfkdQVURyYXdhYmxlKCk7Ci0KLSAgICB2b2lkIHJlbGVhc2Uo
KTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEcmF3YWJsZSAqbWV0YWwoKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIG5vdCBhbGwgZHJhd2FibGVzIHNob3VsZCBoYXZlIHRo
aXMuIE9ubHkgdGhlIGZyYW1lYnVmZmVyLgotICAgIE1UTFRleHR1cmUgKnRleHR1cmUoKSBjb25z
dDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRM
RHJhd2FibGU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVudW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNGZmNDNkYTYzMjY5YTNh
Mjc1YmIzZjIwMTU1MmZlYzc0OTBiOWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVu
dW1zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVDb21wYXJlRnVu
Y3Rpb24gewotICAgIE5ldmVyID0gMCwKLSAgICBMZXNzID0gMSwKLSAgICBFcXVhbCA9IDIsCi0g
ICAgTGVzc0VxdWFsID0gMywKLSAgICBHcmVhdGVyID0gNCwKLSAgICBOb3RFcXVhbCA9IDUsCi0g
ICAgR3JlYXRlckVxdWFsID0gNiwKLSAgICBBbHdheXMgPSA3Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVGdW5jdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDljODA3Nzc0MzMzM2ZjOGRiZTg2MDA1OGI0YzQyOGFkZDQ1MGY3N2EuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUZ1bmN0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVRnVuY3Rpb24uaCIKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1H
UFVGdW5jdGlvbjo6fkdQVUZ1bmN0aW9uKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVGdW5j
dGlvbjo6fkdQVUZ1bmN0aW9uKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUZ1
bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NjA0MDIwYjc5ZDhhNzli
Yjk2MGU3NDEwNThlZTFkMzhhMzJjM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUZ1
bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0wo
TVRMRnVuY3Rpb24pOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxpYnJhcnk7
Ci0KLWNsYXNzIEdQVUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBHUFVG
dW5jdGlvbihjb25zdCBHUFVMaWJyYXJ5JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB+R1BVRnVuY3Rpb24oKTsKLQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbmFtZSgpIGNvbnN0OwotCi0jaWYgVVNFKE1F
VEFMKQotICAgIE1UTEZ1bmN0aW9uICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0
KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8
TVRMRnVuY3Rpb24+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTQ1ZTM1MGFlZmI1
ZmY1YTc2NzBkYTE4MmNhZjE1MjgxMmU4NTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lCdWZmZXIuaCIKKworI2lmIEVO
QUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2Fj
eUJ1ZmZlcjo6fkdQVUxlZ2FjeUJ1ZmZlcigpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVQnVm
ZmVyOjp+R1BVQnVmZmVyKCkiKTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5QnVmZmVyOjpsZW5n
dGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzID8gbV9jb250ZW50cy0+Ynl0ZUxl
bmd0aCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZm
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Mzg5MTgxN2JiOTRiN2RhOTc5MTMwMzUwYzJlMGZjZDk3NTQ2NTgy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeUJ1ZmZlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK09CSkNfUFJPVE9DT0woTVRMQnVmZmVyKTsKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2NsYXNzIEdQVUxlZ2FjeUJ1ZmZl
ciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVnYWN5QnVmZmVyKGNvbnN0IEdQ
VUxlZ2FjeURldmljZSYsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkdQVUxlZ2FjeUJ1ZmZlcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgSlNDOjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgpOyB9CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRM
QnVmZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KKyNlbmRpZgor
Citwcml2YXRlOgorI2lmIFVTRShNRVRBTCkKKyAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21l
dGFsOworI2VuZGlmCisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Cit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21t
YW5kQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTIxZDY1YjkwODNhNTAyMTcyOTVmYmE4Y2U4MWI3
ZmMwMmI3ZTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29t
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5B
QkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6On5HUFVMZWdhY3lDb21tYW5kQnVmZmVyKCkK
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kQnVmZmVyOjp+R1BVQ29tbWFuZEJ1ZmZl
cigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNv
bW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2EzZTA4YzIzNTM2ZWYwOWNkZDM5MzIxNWQ0ZTcx
NjBlMDcyZTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEJ1ZmZl
cik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
OworY2xhc3MgR1BVTGVnYWN5RHJhd2FibGU7CisKK2NsYXNzIEdQVUxlZ2FjeUNvbW1hbmRCdWZm
ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3Qg
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxi
YWNrKTsKKyAgICB+R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcigpOworCisgICAgdm9pZCBjb21taXQo
KSBjb25zdDsKKyAgICB2b2lkIHByZXNlbnREcmF3YWJsZShHUFVMZWdhY3lEcmF3YWJsZSYpIGNv
bnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRCdWZmZXIgKm1ldGFsKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPiBtX21ldGFsOworI2VuZGlm
Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNv
bW1hbmRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwNTI4MTgyYTBmZWVmOWZiMzcyMDVhYjYyYTc4
Y2EwZjY5ZWI4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjp+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCkKK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lDb21tYW5kUXVldWU6On5HUFVMZWdhY3lDb21tYW5k
UXVldWUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1h
bmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eUNvbW1hbmRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNmY4ZTJhODM0MjBhNDcxMDQ4ZDNjYjcwNDk5
OTE0MDY5YzUxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR1BVTGVnYWN5RGV2aWNlOworCitjbGFzcyBHUFVMZWdhY3lDb21tYW5kUXVldWUgewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbW1hbmRRdWV1
ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5
Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0
OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRRdWV1ZSAqbWV0YWwoKSBjb25zdCB7
IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiN2M5ZTdlNWIzNDM4NjI5
ZjM4Y2RiZjdhZGYyZmY5NzVjYWIyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNw
cApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtp
a3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0dQVUxlZ2FjeUNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlcigpCit7Cisg
ICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp+R1BVTGVn
YWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTdhN2E5Njc3Y2ZkNmY1NTUwMDY5OWYzNmNlYzE3MzlkOGFmY2EzYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JK
Q19QUk9UT0NPTChNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgCitjbGFzcyBHUFVMZWdhY3lCdWZmZXI7CitjbGFzcyBHUFVMZWdhY3lDb21tYW5k
QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU7CisKK3N0cnVjdCBH
UFVMZWdhY3lTaXplOworCitjbGFzcyBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25z
dCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJik7CisgICAgfkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5k
RW5jb2RlcigpOworCisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVM
ZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0QnVmZmVyKGNv
bnN0IEdQVUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgY29uc3Q7CisgICAgdm9p
ZCBkaXNwYXRjaChHUFVMZWdhY3lTaXplLCBHUFVMZWdhY3lTaXplKSBjb25zdDsKKyAgICB2b2lk
IGVuZEVuY29kaW5nKCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0YWw7CisjZW5kaWYKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI3MDRmY2U1NWVkZWFjYzFjZmM0
YTc4OWI4MzU1MWRiMjY2Y2RjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEg
KHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0dQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKQoreworICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmI5
MzAzNzAwOWZiODc1MDZhNjMzODUxNzJlZjUwNzc1ZmEzNmFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVU
QUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQ29t
cHV0ZVBpcGVsaW5lU3RhdGUpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxl
Z2FjeURldmljZTsKK2NsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZSB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUo
Y29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mKTsKKyAgICB+
R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKTsKKworI2lmIFVTRShNRVRBTCkKKyAgICBN
VExDb21wdXRlUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdl
dCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRy
PE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYzc5ZDZkZDYzMTNjMmEzZDg3ZDI0NzkxZDc2
YzgzODA1NDMxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
fkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwg
IkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCki
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Y2JmMTgyNWQwOTA1NzM1
ZTRlNDUwOWQxOTJiZTRhZTgyNjY3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1
bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIHsKK3B1Ymxp
YzoKKyAgICBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisgICAgfkdQVUxlZ2Fj
eURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKworICAgIGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQo
KSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoV3JpdGVFbmFibGVkKGJvb2wpIGNvbnN0OworCisg
ICAgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihHUFVMZWdhY3lDb21wYXJlRnVuY3Rp
b24pIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTERlcHRoU3RlbmNpbERlc2NyaXB0
b3IgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNp
ZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAyN2Y1NGY3Y2JhODA2NGFhMjU5ZmU3NjJjOGRhZGRkMjUyNDQ1NDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkKK3sKKyAgICBM
T0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRo
U3RlbmNpbFN0YXRlKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY0ZmY1NWE4NDY1
OTk4MzZiZjg1ZDhmMzk5NDhlZTI2NmVmMzcxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RP
Q09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSB7CitwdWJsaWM6CisgICAgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvciYpOworICAgIH5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSgpOwor
CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
bWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVT
RShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiBt
X21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRlZmI2NzRmZDY0ZmIyYzQ5NWQzOWViODlj
OGNkZDZhOGZhYzRlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVn
YWN5RGV2aWNlOjp+R1BVTGVnYWN5RGV2aWNlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVM
ZWdhY3lEZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UoKSIpOworICAgIGRpc2Nvbm5lY3QoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NDZkMzViYTUxZjZjZTA2NWI2YjBjY2RiMTllZjE0ZjQ3OGU1MWU2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURldmlj
ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBX
ZWJNZXRhbExheWVyOworCitPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JF
X0VYUE9SVCBHUFVMZWdhY3lEZXZpY2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5
RGV2aWNlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yISgpIGNvbnN0Owor
CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgV2ViTWV0YWxMYXllciAqbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyLmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgQ0FMYXllciAqcGxhdGZvcm1MYXllcigp
IGNvbnN0OworICAgIE1UTERldmljZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdl
dCgpOyB9CisjZW5kaWYKKworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGNvbnN0IHsg
fQorCitwcml2YXRlOgorICAgIHZvaWQgZGlzY29ubmVjdCgpOworCisjaWYgVVNFKE1FVEFMKQor
ICAgIFJldGFpblB0cjxXZWJNZXRhbExheWVyPiBtX2xheWVyOworICAgIFJldGFpblB0cjxNVExE
ZXZpY2U+IG1fbWV0YWw7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5RHJhd2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDJmZGM1OWI0YTAwOTRkZmEw
YWFkODI1YTY5ZGMwNjU3ZjFmMDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgpCit7CisgICAgTE9H
KFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgpIik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhYmZmZTJlOWQ1OTkwZTZlMTgxNzk4YjAyYTNiMzFhYWYxYjM5YjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RHJhd2FibGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisK
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMRHJhd2FibGUp
OworT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2NsYXNzIEdQVUxlZ2FjeURyYXdhYmxlIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lEcmF3YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2Um
KTsKKyAgICB+R1BVTGVnYWN5RHJhd2FibGUoKTsKKworICAgIHZvaWQgcmVsZWFzZSgpOworCisj
aWYgVVNFKE1FVEFMKQorICAgIE1UTERyYXdhYmxlICptZXRhbCgpIGNvbnN0OworCisgICAgLy8g
RklYTUU6IFdlYk1ldGFsIC0gbm90IGFsbCBkcmF3YWJsZXMgc2hvdWxkIGhhdmUgdGhpcy4gT25s
eSB0aGUgZnJhbWVidWZmZXIuCisgICAgTVRMVGV4dHVyZSAqdGV4dHVyZSgpIGNvbnN0OworI2Vu
ZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExEcmF3YWJs
ZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeUVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5RW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWUxOGQ0MjMwMzUwYzhjZjU5MTg5YjQ0ZTAxMmZl
OTIzMTM5OTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUVudW1zLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQk1FVEFMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgR1BVTGVn
YWN5Q29tcGFyZUZ1bmN0aW9uIHsKKyAgICBOZXZlciA9IDAsCisgICAgTGVzcyA9IDEsCisgICAg
RXF1YWwgPSAyLAorICAgIExlc3NFcXVhbCA9IDMsCisgICAgR3JlYXRlciA9IDQsCisgICAgTm90
RXF1YWwgPSA1LAorICAgIEdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQWx3YXlzID0gNworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc0ZDU0MjU4MGFjZDdkZTAwMTY3OGYwNzQ1YjE0YzQ4NmVhMzIxZGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVn
YWN5RnVuY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxl
Z2FjeUZ1bmN0aW9uKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lGdW5jdGlvbjo6
fkdQVUxlZ2FjeUZ1bmN0aW9uKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeUZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY5NjkwYzU3OGFjNmExZWY2NzQ1Mzgx
OGE3NzRhZDhkN2I1NmQwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
T0JKQ19QUk9UT0NPTChNVExGdW5jdGlvbik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR1BVTGVnYWN5TGlicmFyeTsKKworY2xhc3MgR1BVTGVnYWN5RnVuY3Rpb24geworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIEdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxp
YnJhcnkmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdh
Y3lGdW5jdGlvbigpOworCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRM
RnVuY3Rpb24gKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlm
CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExGdW5jdGlvbj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5TGlicmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5TGlicmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMyYjM5NjJkNzg1ZmUyNTAzOWVkZmM0
MDQ1ZDUxNTA0NGZlMjdhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJhcnkuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
UFVMZWdhY3lMaWJyYXJ5Ojp+R1BVTGVnYWN5TGlicmFyeSgpCit7CisgICAgTE9HKFdlYk1ldGFs
LCAiR1BVTGVnYWN5TGlicmFyeTo6fkdQVUxlZ2FjeUxpYnJhcnkoKSIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUwZGYz
MTIyYmIyMDI1ZDEwOWU0NjRkYjEwMGYyZDdiOTY4YTZiMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKKworY2xhc3MgR1BVTGVnYWN5TGli
cmFyeSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVnYWN5TGlicmFyeShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5HUFVMZWdhY3lMaWJyYXJ5KCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgbGFiZWwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNvbnN0
IFN0cmluZyYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZnVu
Y3Rpb25OYW1lcygpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTExpYnJhcnkgKm1l
dGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0Uo
TUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBtX21ldGFsOworI2Vu
ZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZTc0ODc1ZDdh
OWJhMjlmMmIxMDE4OGVmMWU4ZTFmMDgxMTZjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVu
ZGVyQ29tbWFuZEVuY29kZXIuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNl
NjFlMDM3NWI1MjNjNjBhMDAxMDA3MGI1NTNiY2Y1ZDMwMDQ1NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJD
b21tYW5kRW5jb2Rlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5
QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjsKK2NsYXNzIEdQVUxlZ2FjeURl
cHRoU3RlbmNpbFN0YXRlOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I7Citj
bGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOworCitjbGFzcyBHUFVMZWdhY3lSZW5k
ZXJDb21tYW5kRW5jb2RlciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVu
Y29kZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciYsIGNvbnN0IEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yJik7CisgICAgfkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCk7
CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29u
c3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFZlcnRl
eEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXImLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKKyAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IEdQVUxlZ2Fj
eUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIHZv
aWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGNvdW50KSBjb25zdDsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7CisKKyNpZiBVU0Uo
TUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYWY1ODEwN2MzZTNkYTAxMjhjZmMwODM4ODkxODk5YTM1
ZmNlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BV
TGVnYWN5VGV4dHVyZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwg
IkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzYzc1MGQ0YjMxMWE0ZWEyOTUyZDk3YzczZjg4
MTA0MmQ0MDk3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVRleHR1cmU7CisK
K2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6
CisgICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAg
dW5zaWduZWQgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0TG9hZEFjdGlvbih1bnNp
Z25lZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBzdG9yZUFjdGlvbigpIGNvbnN0OworICAgIHZv
aWQgc2V0U3RvcmVBY3Rpb24odW5zaWduZWQpIGNvbnN0OworCisgICAgdm9pZCBzZXRUZXh0dXJl
KGNvbnN0IEdQVUxlZ2FjeVRleHR1cmUmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBN
VExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYK
KworI2lmIFVTRShNRVRBTCkKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yICopOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I+IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E4MmU5NGQwODM2
MjkzMjU1NTIxYWUwYzRlOTRmNThmZjVhZWQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+
R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQoreworICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
Ojp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lN2U4NDFjOTFiZDI0NzNiMWM5N2ZkMjJlODUyNjY5MTBiZjk3MzRmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVTGVnYWN5UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyNpZiBVU0UoTUVUQUwpCisg
ICAgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKik7CisjZW5kaWYKKyAgICB+R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIFZlY3RvcjxmbG9h
dD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0
b3I8ZmxvYXQ+JikgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWU5YThiNzNiM2U2OTg5YmM2NmIzZDM1NTZiMDcxMDMxMDFiMmJlYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNmMxYWY3OTA1M2U2YzFmNjU2NzVlYzg4MWVjYjZjMjg5NTdjOGQwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyNpZiBVU0UoTUVU
QUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoTVRM
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKik7CisjZW5kaWYKKyAgICB+R1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIGRvdWJs
ZSBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVhckRlcHRoKGRvdWJsZSkgY29u
c3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIE1UTFJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MzZhN2I3MjNlZDQxMjdlZDUzNGUwM2NmNTE3
OWE5ZTIyYTIxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWU4MTY5MGJlZTFjMjE3NjIwM2E1OTJhZDIyNjcx
ZmI0ZTRjOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7
CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworICAgIH5HUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvcigpOworCisgICAgVmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisgICAgR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZGVwdGhBdHRhY2htZW50KCkgY29u
c3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgKm1ldGFs
KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWlu
UHRyPE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYThlNmUxMjJhMzVjMjg3MjEyNzRmOGJjZDVmNDNiNDY3NTZhM2ZlOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyYzYwMzQ2ODYzNzNkMTI5MDJkYjYyOTIwNzcwYmZiMDFjMWM1ZDAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorI2lmIFVTRShNRVRBTCkKKyAgICBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICopOworI2VuZGlmCisgICAgfkdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAgdW5zaWdu
ZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVk
KSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRB
TCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMWZkNjBjM2Y1YWI4YmI4NjYwOWJjMjc1ZTAxOTJh
NTI1YmE2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzA5
MDdlODFmMGQxYzM0OTI0MmVkNWY4MjllM2VlMzNjODg5ZGYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVn
YWN5RnVuY3Rpb247CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7
CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAg
fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOworCisgICAgdm9pZCBzZXRWZXJ0
ZXhGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNvbnN0OworICAgIHZvaWQgc2V0
RnJhZ21lbnRGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNvbnN0OworCisgICAg
dW5zaWduZWQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsKKworICAgIFZlY3Rv
cjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9y
QXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIHZvaWQgcmVzZXQoKSBjb25zdDsKKworI2lmIFVT
RShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7
CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0
YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZTRmOWM2ZDgwOTU4M2E0NzI0MzJhMWI2NjJkYjgzYzcwZmQx
YTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6On5HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZVN0YXRlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYTA5ZTZhNDhhMzQ4OGE0ZTliYTI1ZmFmMjhlZTI3NzM4OGM1
MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaApAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUg
eworcHVibGljOgorICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKSA9IGRlZmF1bHQ7
CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2Um
LCBjb25zdCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKKyAgICB+R1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkK
KyAgICBNVExSZW5kZXJQaXBlbGluZVN0YXRlICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNp
ZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0
YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5U2l6ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MGNlYTM1MWZiOWQ2YTM4Y2FiMzY0Y2NjZTk3
MWFkZTI4NDMyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5U2l6ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdHJ1Y3Qg
R1BVTGVnYWN5U2l6ZSB7CisgICAgdW5zaWduZWQgd2lkdGg7CisgICAgdW5zaWduZWQgaGVpZ2h0
OworICAgIHVuc2lnbmVkIGRlcHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lUZXh0dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDljYzJjODk0MWZhNzRhNmY3N2Jk
MjUxODc1ZTY5ZmU5OTA1MzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdF
Qk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dQVUxlZ2FjeVRleHR1cmU6On5HUFVMZWdhY3lUZXh0dXJlKCkKK3sKKyAgICBMT0coV2ViTWV0
YWwsICJHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSgpIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWZl
YzJlMjA3NmUxZmI3ODAzMmVlOWU3ODAyNWEyNzBhZjkwNDFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOworY2xhc3MgR1BVTGVnYWN5RHJh
d2FibGU7CitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjsKKworY2xhc3MgR1BVTGVn
YWN5VGV4dHVyZSB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdh
Y3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIGV4cGxp
Y2l0IEdQVUxlZ2FjeVRleHR1cmUoY29uc3QgR1BVTGVnYWN5RHJhd2FibGUmKTsKKyAgICB+R1BV
TGVnYWN5VGV4dHVyZSgpOworCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBoZWlnaHQoKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExUZXh0dXJlICpt
ZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxNVExUZXh0dXJlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY5YmI1MDY5MjQxNWRlMzJjYTA2ZTQ1YjI2OWJiOTQ4NjExOGZkYWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
KCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVVRleHR1
cmVEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY0Nzk3M2U5MzJh
NDhiNjIwNzUwODY3MWMzYTg1MTZhYTI2ZjIyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExUZXh0dXJlRGVzY3JpcHRvcjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvciB7
CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgcGl4ZWxG
b3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsK
KyAgICB+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IoKTsKKworICAgIHVuc2lnbmVkIHdpZHRo
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1bnNp
Z25lZCBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCkgY29uc3Q7
CisKKyAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2FtcGxl
Q291bnQodW5zaWduZWQpIGNvbnN0OworCisgICAgdW5zaWduZWQgdGV4dHVyZVR5cGUoKSBjb25z
dDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkKSBjb25zdDsKKworICAgIHVuc2ln
bmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNpZ25l
ZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VXNh
Z2UodW5zaWduZWQpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTFRleHR1cmVEZXNj
cmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRl
OgorICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpYnJhcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxpYnJhcnkuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OGM2YzNjMzZmNDFkYzQ3ZTRjNGE1OWIyMDY5MmYwNDRmYTc1
NTM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMaWJyYXJ5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGlicmFyeS5oIgot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUxpYnJhcnk6On5HUFVMaWJyYXJ5KCkKLXsKLSAgICBMT0coV2Vi
TWV0YWwsICJHUFVMaWJyYXJ5Ojp+R1BVTGlicmFyeSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGlicmFyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxpYnJhcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhYzQ0
NjRlODQyYmM3ZjRkMDI3YjJiZjA0NTQ5NGUyZGFiNTdmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGlicmFyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpD
X1BST1RPQ09MKE1UTExpYnJhcnkpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VURldmljZTsKLQotY2xhc3MgR1BVTGlicmFyeSB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgR1BVTGlicmFyeShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMaWJyYXJ5KCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVs
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmlu
Zz4gZnVuY3Rpb25OYW1lcygpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTExpYnJh
cnkgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQotI2VuZGlmCi0KLSNp
ZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBtX21ldGFs
OwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NzQ2MWE4ZmVjNDRiOTM3OTZhZjI4NjAyNzEzMzQ3NWY0MTIwZDVkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVSZW5k
ZXJDb21tYW5kRW5jb2RlcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXI6On5HUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWUyMDRhOGY5ZTMyNmE0M2MxZWNiZTg5MTYzYmM4MzBh
Nzk0MTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJDb21tYW5kRW5jb2Rl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1F
VEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFJl
bmRlckNvbW1hbmRFbmNvZGVyKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVC
dWZmZXI7Ci1jbGFzcyBHUFVDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BVRGVwdGhTdGVuY2lsU3Rh
dGU7Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLWNsYXNzIEdQVVJlbmRlclBpcGVs
aW5lU3RhdGU7Ci0KLWNsYXNzIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyIHsKLXB1YmxpYzoKLSAg
ICBHUFVSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiwgY29uc3Qg
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKLSAgICB+R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIo
KTsKLQotICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVSZW5kZXJQaXBl
bGluZVN0YXRlJikgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBH
UFVEZXB0aFN0ZW5jaWxTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNv
bnN0IEdQVUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgR1BVQnVmZmVyJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNp
Z25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNvbnN0OwotICAgIHZv
aWQgZW5kRW5jb2RpbmcoKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAg
UmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiBtX21ldGFsOwotI2VuZGlmCi19Owot
ICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDcxNjJmN2ZlNzczZjViMjA5OWVhNDZkOGJjOWQwMDllYTk5NzdkZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQ
VVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDkyMzg1YTM4NjM1OWQzNTEyMzZiOTg5ODc4YmVhNDgzYzBm
MjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1U
TFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHUFVUZXh0dXJlOwotCi1jbGFzcyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IgewotcHVibGljOgotICAgIH5HUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Io
KTsKLQotICAgIHVuc2lnbmVkIGxvYWRBY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldExvYWRB
Y3Rpb24odW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgc3RvcmVBY3Rpb24oKSBjb25z
dDsKLSAgICB2b2lkIHNldFN0b3JlQWN0aW9uKHVuc2lnbmVkKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0VGV4dHVyZShjb25zdCBHUFVUZXh0dXJlJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0g
ICAgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2Vu
ZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgR1BVUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ciAqKTsKLQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmIxNTU5
YTZiYTdiY2Q4ODg2YmFhMmYyNjYwMDBhZDJkYzAxN2IyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNp
bmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3MjQ0NjEzZWY2YzBiODYwYjBlN2Y3MDVlN2U3MzY3MzBkZGJm
ZDk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCi0KLU9CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yIHsKLXB1YmxpYzoKLSNpZiBVU0UoTUVUQUwpCi0gICAgR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgKik7Ci0jZW5kaWYKLSAgICB+R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKLQotICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OwotICAgIHZvaWQg
c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVU
QUwpCi0gICAgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkg
Y29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NDU3ZTcyMzRmY2E1Nzg3Yzk5
MTM2MmQ1ZjcwMDAyNzU4YWViNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkK
LXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDcyZmQ3OTIwMmQ3YzI2YmYyMDRmMDU2MmMwYWNhMzlhOGIyYzkwZTcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbmNsdWRlICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQot
T0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvciA6IHB1YmxpYyBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgewotcHVi
bGljOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcihNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciAqKTsKLSNlbmRp
ZgotICAgIH5HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpOwotCi0gICAg
ZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKLSAgICB2b2lkIHNldENsZWFyRGVwdGgoZG91Ymxl
KSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgTVRMUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOTcxYmZmODc4YWRjZTYx
YmJkYmRhY2JkNmEwNTVjNTQ4Mzc5NTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQotewot
ICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjlkNGUzZGQ5ODUwYWViOGNiNjk4YmNiMDEwMjQ3YWEyNGNkODI3OS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjsKLWNsYXNzIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOwot
Ci1jbGFzcyBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IoKTsKLSAgICB+R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLQotICAg
IFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRh
Y2htZW50cygpIGNvbnN0OwotICAgIEdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTFJl
bmRlclBhc3NEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVU
QUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbV9t
ZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODNiYTExMWQzNmQz
YTA4MjM5NmMzOGMzY2ZiNDdkMmRlZTAzMWFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MzZjZmYxNTU2
MGY3ZGQ3Y2E2OWM1NjQzOTE2ZGRhYWYwNjYzMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgewotcHVibGljOgotI2lmIFVT
RShNRVRBTCkKLSAgICBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
TVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICopOwotI2VuZGlmCi0g
ICAgfkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOwotCi0gICAg
dW5zaWduZWQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVu
c2lnbmVkKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVT
RShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGMxYzRjOWZiMTAxNDExOGFi
ZGJkYjEzZDdkOTc3YTliMTM2OWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5HUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YzVlNjhhN2Y3MDIzNzg5MzM1ZmJk
MmUwZTI1YzhkN2E4NmMxMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpD
X0NMQVNTIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVGdW5jdGlvbjsKLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsK
LXB1YmxpYzoKLSAgICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKLSAgICB+R1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICB2b2lkIHNldFZlcnRleEZ1bmN0aW9uKGNv
bnN0IEdQVUZ1bmN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRGcmFnbWVudEZ1bmN0aW9uKGNv
bnN0IEdQVUZ1bmN0aW9uJikgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3Jt
YXQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgVmVjdG9yPEdQVVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50cygpIGNvbnN0OwotCi0gICAgdm9p
ZCByZXNldCgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJp
dmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtX21ldGFs
OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVs
aW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBpcGVsaW5lU3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWIy
YjNlODIzNDJjZGI1OWM3ZDk3YmVlODM5MTNiOTlkNjk4ODIzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lU3RhdGU6On5HUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjp+
R1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lU3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY0YWZlZDE3MGRkY2M4ODFiYmE0MmVmZTI1MDY0ZDgzYWU3YTcyZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGlu
ZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkgPSBkZWZhdWx0
OwotICAgIEdQVVJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAgfkdQVVJlbmRlclBpcGVsaW5lU3RhdGUo
KTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
U3RyaW5nJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMUmVuZGVyUGlwZWxpbmVT
dGF0ZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToK
LSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9tZXRhbDsKLSNlbmRpZgot
fTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2l6ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNpemUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDY1OGYwODc4ZTVkN2E3YjJmMWFlODdjYzYxZjNmN2UzOGRlYzkyMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2l6ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lr
dXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICAKLXN0cnVjdCBHUFVTaXplIHsKLSAgICB1bnNpZ25lZCB3aWR0aDsKLSAgICB1
bnNpZ25lZCBoZWlnaHQ7Ci0gICAgdW5zaWduZWQgZGVwdGg7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVRleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ZjExNDY5ZDRmMmExYTM4ODNlNGZhZWY2MTg0Y2U4MzRiMzQ5Mjk0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVUZXh0dXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFM
KQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVRl
eHR1cmU6On5HUFVUZXh0dXJlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlOjp+
R1BVVGV4dHVyZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVy
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3YTMxN2IyMmUyZmVhOTI2NmEzOGQwNDc1
ODA3YzVmYmFmZDk5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFRleHR1cmUp
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQVURy
YXdhYmxlOwotY2xhc3MgR1BVVGV4dHVyZURlc2NyaXB0b3I7Ci0KLWNsYXNzIEdQVVRleHR1cmUg
ewotcHVibGljOgotICAgIEdQVVRleHR1cmUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVVGV4
dHVyZURlc2NyaXB0b3ImKTsKLSAgICBleHBsaWNpdCBHUFVUZXh0dXJlKGNvbnN0IEdQVURyYXdh
YmxlJik7Ci0gICAgfkdQVVRleHR1cmUoKTsKLQotICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7
Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRM
VGV4dHVyZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0
ZToKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJjY2Y0MjMxNjU2NDhlMDRlODY0YmVi
YzExYmQzNWM5OTU2MjdjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVRleHR1
cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRh
bCwgIkdQVVRleHR1cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURlc2NyaXB0b3IoKSIpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1ODcxZDY2ZWQ5YTIxNjc3NWIyMjkwYmQ2
OGUwZTMxYWIyZjUwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExU
ZXh0dXJlRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVUZXh0
dXJlRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVVGV4dHVyZURlc2NyaXB0b3IodW5zaWdu
ZWQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIGJvb2wgbWlw
bWFwcGVkKTsKLSAgICB+R1BVVGV4dHVyZURlc2NyaXB0b3IoKTsKLQotICAgIHVuc2lnbmVkIHdp
ZHRoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1
bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCkgY29u
c3Q7Ci0KLSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2Ft
cGxlQ291bnQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgdGV4dHVyZVR5cGUoKSBj
b25zdDsKLSAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkKSBjb25zdDsKLQotICAgIHVu
c2lnbmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNp
Z25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCB1c2FnZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
VXNhZ2UodW5zaWduZWQpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTFRleHR1cmVE
ZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2
YXRlOgotICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRp
ZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVQnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVCdWZmZXJNZXRhbC5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzMGQ5MzAzYjI2YTcwYWExMWYyNDk5
NGMzMmJjZDdlMDI5ZGFhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVCdWZmZXJN
ZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkdQVUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZp
Y2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyVmlldy5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9HaWdh
Y2FnZS5oPgotI2ltcG9ydCA8d3RmL1BhZ2VCbG9jay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUdQVUJ1ZmZlcjo6R1BVQnVmZmVyKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBK
U0M6OkFycmF5QnVmZmVyVmlldyYgZGF0YSkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVCdWZm
ZXI6OkdQVUJ1ZmZlcigpIik7Ci0KLSAgICBpZiAoIWRldmljZS5tZXRhbCgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHBhZ2VTaXplID0gV1RGOjpwYWdlU2l6ZSgpOwotICAg
IHNpemVfdCBwYWdlQWxpZ25lZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplLCBk
YXRhLmJ5dGVMZW5ndGgoKSk7Ci0gICAgdm9pZCogcGFnZUFsaWduZWRDb3B5ID0gR2lnYWNhZ2U6
OnRyeUFsaWduZWRNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcGFnZVNpemUsIHBhZ2VBbGln
bmVkU2l6ZSk7Ci0gICAgaWYgKCFwYWdlQWxpZ25lZENvcHkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtZW1jcHkocGFnZUFsaWduZWRDb3B5LCBkYXRhLmJhc2VBZGRyZXNzKCksIGRhdGEuYnl0ZUxl
bmd0aCgpKTsKLSAgICBtX2NvbnRlbnRzID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhw
YWdlQWxpZ25lZENvcHksIGRhdGEuYnl0ZUxlbmd0aCgpLCBbXSAodm9pZCogcHRyKSB7Ci0gICAg
ICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIpOwotICAg
IH0pOwotICAgIG1fY29udGVudHMtPnJlZigpOwotICAgIEFycmF5QnVmZmVyKiBjYXB0dXJlZENv
bnRlbnRzID0gbV9jb250ZW50cy5nZXQoKTsKLSAgICBtX21ldGFsID0gYWRvcHROUyhbZGV2aWNl
Lm1ldGFsKCkgbmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5Om1fY29udGVudHMtPmRhdGEoKSBsZW5n
dGg6cGFnZUFsaWduZWRTaXplIG9wdGlvbnM6TVRMUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVE
ZWZhdWx0IGRlYWxsb2NhdG9yOl4odm9pZCosIE5TVUludGVnZXIpIHsKLSAgICAgICAgY2FwdHVy
ZWRDb250ZW50cy0+ZGVyZWYoKTsKLSAgICB9XSk7Ci0gICAgaWYgKCFtX21ldGFsKSB7Ci0gICAg
ICAgIG1fY29udGVudHMtPmRlcmVmKCk7Ci0gICAgICAgIG1fY29udGVudHMgPSBudWxscHRyOwot
ICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbW1hbmRCdWZmZXJN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUNvbW1h
bmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkM2RjMjM2
ZTEyM2ZkNzhmZTU1NjE4ZDIwMzg4MDdjMTQ1ZTBmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVDb21tYW5kQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUNvbW1hbmRRdWV1ZS5oIgotI2ltcG9ydCAiR1BVRHJh
d2FibGUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcihj
b25zdCBHUFVDb21tYW5kUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGVk
Q2FsbGJhY2spCi0gICAgOiBtX21ldGFsIHsgW3F1ZXVlLm1ldGFsKCkgY29tbWFuZEJ1ZmZlcl0g
fQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZm
ZXIoKSIpOwotCi0gICAgW21fbWV0YWwgYWRkQ29tcGxldGVkSGFuZGxlcjpCbG9ja1B0cjx2b2lk
IChpZDxNVExDb21tYW5kQnVmZmVyPik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRlZENhbGxiYWNr
ID0gV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFjayldIChpZDxNVExDb21tYW5kQnVmZmVyPikgbXV0
YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFj
aykpOwotICAgIH0pLmdldCgpXTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpwcmVzZW50
RHJhd2FibGUoR1BVRHJhd2FibGUmIGRyYXdhYmxlKSBjb25zdAotewotICAgIGlmICghbV9tZXRh
bCB8fCAhZHJhd2FibGUubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwg
cHJlc2VudERyYXdhYmxlOmRyYXdhYmxlLm1ldGFsKCldOwotICAgIGRyYXdhYmxlLnJlbGVhc2Uo
KTsKLX0KLQotdm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb21taXQoKSBjb25zdAotewotICAgIFtt
X21ldGFsIGNvbW1pdF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21t
YW5kUXVldWVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
ZTJhMDBhN2ZmODcwYmQ4ZDNmOTI4OTYzMWEyNmVmZDhhMjU0ZmQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUNvbW1hbmRRdWV1ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
NzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNv
bW1hbmRRdWV1ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldlYktpdCI7Ci1zdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9IEAiY29tLmFwcGxlLldlYktp
dC4iOwotCi1HUFVDb21tYW5kUXVldWU6OkdQVUNvbW1hbmRRdWV1ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdDb21t
YW5kUXVldWVdKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZFF1ZXVlOjpHUFVD
b21tYW5kUXVldWUoKSIpOwotCi0gICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVm
YXVsdExhYmVsXTsKLX0KLQotU3RyaW5nIEdQVUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25zdAot
ewotICAgIGlmICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAg
ICBOU1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxhYmVsXTsKLQotICAgIGlmIChb
cHJlZml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXSkK
LSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQocHJlZml4ZWRMYWJl
bC5sZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgpOwotICAgIHJldHVybiBb
cHJlZml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgu
bGVuZ3RoXTsKLX0KLQotdm9pZCBHUFVDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmlu
ZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21f
bWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLSAgICBlbHNlCi0gICAg
ICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZpeCBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpsYWJlbF1dOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5NDRkN2Y4NGE1Yjk1MTQxODgwYWM0MjJmNGI4NmE0
Zjg2YjVkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlQ29tbWFuZEVu
Y29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZl
ci5oIgotI2ltcG9ydCAiR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCIKLSNpbXBvcnQgIkdQVVNp
emUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBNVExTaXplIE1UTFNpemVNYWtlKEdQ
VVNpemUgc2l6ZSkKLXsKLSAgICByZXR1cm4geyBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6
ZS5kZXB0aCB9OwotfQotCi1HUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OkdQVUNvbXB1dGVDb21t
YW5kRW5jb2Rlcihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIpCi0gICAgOiBtX21ldGFs
IHsgW2J1ZmZlci5tZXRhbCgpIGNvbXB1dGVDb21tYW5kRW5jb2Rlcl0gfQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKCkiKTsKLX0KLQotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldENvbXB1dGVQ
aXBlbGluZVN0YXRlKGNvbnN0IEdQVUNvbXB1dGVQaXBlbGluZVN0YXRlJiBjb21wdXRlUGlwZWxp
bmVTdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIWNvbXB1dGVQaXBlbGluZVN0YXRlLm1ldGFsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldENvbXB1dGVQaXBlbGluZVN0YXRl
OmNvbXB1dGVQaXBlbGluZVN0YXRlLm1ldGFsKCldOwotfQotICAgIAotdm9pZCBHUFVDb21wdXRl
Q29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBHUFVCdWZmZXImIGJ1ZmZlciwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1ZmZlci5tZXRh
bCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXRCdWZmZXI6YnVmZmVyLm1l
dGFsKCkgb2Zmc2V0Om9mZnNldCBhdEluZGV4OmluZGV4XTsKLX0KLSAgICAKLXZvaWQgR1BVQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaChHUFVTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQs
IEdQVVNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKSBjb25zdAotewotICAgIFttX21ldGFsIGRp
c3BhdGNoVGhyZWFkZ3JvdXBzOk1UTFNpemVNYWtlKHRocmVhZGdyb3Vwc1BlckdyaWQpIHRocmVh
ZHNQZXJUaHJlYWRncm91cDpNVExTaXplTWFrZSh0aHJlYWRzUGVyVGhyZWFkZ3JvdXApXTsKLX0K
LQotdm9pZCBHUFVDb21wdXRlQ29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkgY29uc3QKLXsK
LSAgICBbbV9tZXRhbCBlbmRFbmNvZGluZ107Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVQ29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3ODJlOTc3ZmRiMGUxNGM3M2ZkNjFkMTgyZGE0
ZGVjZGYwNWZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUZ1bmN0aW9uLmgi
Ci0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVRnVuY3Rpb24mIGZ1bmN0
aW9uKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVD
b21wdXRlUGlwZWxpbmVTdGF0ZSgpIik7Ci0KLSAgICBpZiAoIWZ1bmN0aW9uLm1ldGFsKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpmdW5jdGlvbi5tZXRhbCgpIGVycm9y
Om5pbF0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRGVwdGhTdGVuY2ls
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1ZTg1YmM3MWM5N2E4NjUzMTM4NmVlMDQyZWVhMzVhYjczY2Q5NDgyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9y
dCAiR1BVRW51bXMuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFs
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRM
RGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpIik7Ci19
Ci0KLWJvb2wgR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhXcml0ZUVuYWJsZWQoKSBj
b25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3JpdGVFbmFibGVkXTsKLX0KLQot
dm9pZCBHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxlZChib29s
IG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAotewotICAgIFttX21ldGFsIHNldERlcHRoV3Jp
dGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKLX0KLQotR1BVQ29tcGFyZUZ1bmN0aW9u
IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQ29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBk
ZXB0aENvbXBhcmVGdW5jdGlvbl0pOwotfQotCi12b2lkIEdQVURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKEdQVUNvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlv
bikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVu
Y3Rpb24gdmFsdWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRMQ29tcGFyZUZ1bmN0
aW9uPwotICAgIFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1U
TENvbXBhcmVGdW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTgwYzc0Y2U1NDY3ZGI5YjU5Mjc1OTlhMzcxMTQz
N2FjZmM4NTM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURlcHRoU3RlbmNpbFN0
YXRlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0j
aW1wb3J0ICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVEZXZpY2Uu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVEZXB0
aFN0ZW5jaWxTdGF0ZTo6R1BVRGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UsIGNvbnN0IEdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi0gICAgOiBt
X21ldGFsIHsgYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRo
RGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVRGVwdGhTdGVuY2lsU3RhdGU6OkdQVURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKLX0KLQotU3Ry
aW5nIEdQVURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21l
dGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiBbbV9tZXRh
bCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVRGVwdGhTdGVuY2lsU3RhdGU6OnNldExhYmVsKGNvbnN0
IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBNVExEZXB0aFN0ZW5jaWxTdGF0
ZSBwcm90b2NvbCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJlbC4KLSAgICAvLyBUaGUg
bGFiZWwgaGFzIHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3aGVuIGNyZWF0aW5nIHRoZSBz
dGF0ZSBvYmplY3QuCi0gICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBXZWJN
ZXRhbCBpbnRlcmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKLX0KLSAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVURldmljZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiY2VhM2Y3NzQ0NjRkZTM3ODU0N2NjNzU2MjczMWJjZmNlNzYxMjFkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURldmljZU1ldGFsLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIldlYk1ldGFs
TGF5ZXIuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVEZXZpY2U6OkdQVURldmljZSgpCi0gICAgOiBtX21l
dGFsIHsgYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpIH0KLXsKLQotICAg
IGlmICghbV9tZXRhbCkgewotICAgICAgICBMT0coV2ViTWV0YWwsICJHUFVEZXZpY2U6OkdQVURl
dmljZSAtLSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkZXZpY2UuIFRoaXMgdXN1YWxseSBtZWFucyBN
ZXRhbCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaGFyZHdhcmUuIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBMT0coV2ViTWV0YWwsICJHUFVEZXZpY2U6OkdQVURldmljZSBNZXRh
bCBkZXZpY2UgaXMgJXAiLCBtX21ldGFsLmdldCgpKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgbV9sYXllciA9IGFkb3B0TlMoW1tXZWJNZXRhbExheWVyIGFsbG9j
XSBpbml0V2l0aEdQVURldmljZTp0aGlzXSk7Ci0gICAgW21fbGF5ZXIgc2V0T3BhcXVlOjBdOwot
ICAgIFttX2xheWVyIHNldE5hbWU6QCJXZWJNZXRhbCBMYXllciJdOwotCi0gICAgLy8gRklYTUU6
IFdlYk1ldGFsIC0gU2hvdWxkIHRoaXMgYmUgaW4gdGhlIFdlYk1ldGFsTGF5ZXIgaW5pdGlhbGl6
ZXI/Ci0gICAgW21fbGF5ZXIgc2V0RGV2aWNlOm1fbWV0YWwuZ2V0KCldOwotICAgIFttX2xheWVy
IHNldFBpeGVsRm9ybWF0Ok1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybV07Ci0gICAgW21fbGF5ZXIg
c2V0RnJhbWVidWZmZXJPbmx5OllFU107Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci19Ci0KLXZvaWQgR1BVRGV2aWNlOjpkaXNjb25uZWN0KCkKLXsKLSAgICBtX2xheWVyLmdldCgp
LmNvbnRleHQgPSBudWxscHRyOwotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWxzbyBjbGVhciBv
dXQgdGhlIGRldmljZSBwcm9wZXJ0eSwgd2hpY2ggaGFzIHRoZSBNVExEZXZpY2U/Ci19Ci0KLXZv
aWQgR1BVRGV2aWNlOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QKLXsKLSAg
ICBbbV9sYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07Ci0g
ICAgW21fbGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwot
Ci0gICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gTG90cyBvZiByZXNoYXBlIHN0dWZmIHNob3VsZCBn
byBoZXJlLiBTZWUgR0MzRC4KLX0KLQotQ0FMYXllciAqR1BVRGV2aWNlOjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKLX0KLQotYm9vbCBHUFVEZXZp
Y2U6Om9wZXJhdG9yISgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX21ldGFsOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJhd2FibGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVURyYXdhYmxlTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYWQ5OGFjYWMwMTRhMWRhZDYyNzYzMDliNDcyYmUxYTAx
YzdiZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRHJhd2FibGVNZXRhbC5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVURyYXdh
YmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViTWV0YWxMYXllci5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVURyYXdhYmxlOjpHUFVEcmF3YWJsZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBbZGV2aWNlLmxheWVyKCkgbmV4dERyYXdhYmxlXSB9
Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVRHJhd2FibGU6OkdQVURyYXdhYmxlKCkiKTsKLX0K
LQotdm9pZCBHUFVEcmF3YWJsZTo6cmVsZWFzZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
RHJhd2FibGU6OnJlbGVhc2UoKSIpOwotICAgIG1fbWV0YWwgPSBuaWw7Ci19Ci0gICAgCi1NVExE
cmF3YWJsZSAqR1BVRHJhd2FibGU6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKLX0KLQotTVRMVGV4dHVyZSAqR1BVRHJhd2FibGU6OnRleHR1cmUoKSBjb25zdAot
ewotICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChDQU1ldGFs
RHJhd2FibGUpXSkgewotICAgICAgICBBU1NFUlQoIW1fbWV0YWwpOwotICAgICAgICByZXR1cm4g
bmlsOwotICAgIH0KLSAgICByZXR1cm4gWyhpZDxDQU1ldGFsRHJhd2FibGU+KW1fbWV0YWwuZ2V0
KCkgdGV4dHVyZV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVGdW5jdGlv
bk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVRnVu
Y3Rpb25NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E0YmUzYmYzYWE4
MjRlNzBkNzZlNjc0YzhjZTYwOTE2OTBkMWJmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVGdW5jdGlvbk1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVRnVuY3Rpb24uaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2ltcG9ydCAiR1BVTGlicmFyeS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVUZ1bmN0aW9uOjpHUFVGdW5jdGlvbihjb25zdCBHUFVMaWJyYXJ5JiBs
aWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbbGli
cmFyeS5tZXRhbCgpIG5ld0Z1bmN0aW9uV2l0aE5hbWU6bmFtZV0pIH0KLXsKLSAgICBMT0coV2Vi
TWV0YWwsICJHUFVGdW5jdGlvbjo6R1BVRnVuY3Rpb24oKSIpOwotfQotCi1TdHJpbmcgR1BVRnVu
Y3Rpb246Om5hbWUoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW21fbWV0YWwgbmFtZV07Ci19Ci0KLWJvb2wg
R1BVRnVuY3Rpb246Om9wZXJhdG9yISgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX21ldGFsOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lCdWZmZXJN
ZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYmMzZTM0YTQyNDgxOWIxOGNmZTA3YWEyMWMwNmE0NjIxZmIz
Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNp
bXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgorI2ltcG9ydCA8d3RmL0dpZ2FjYWdlLmg+CisjaW1wb3J0IDx3dGYvUGFnZUJsb2NrLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5QnVmZmVyOjpHUFVMZWdhY3lCdWZmZXIo
Y29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3
JiBkYXRhKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUJ1ZmZlcjo6R1BVQnVmZmVyKCkiKTsK
KworICAgIGlmICghZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBz
aXplX3QgcGFnZVNpemUgPSBXVEY6OnBhZ2VTaXplKCk7CisgICAgc2l6ZV90IHBhZ2VBbGlnbmVk
U2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2YocGFnZVNpemUsIGRhdGEuYnl0ZUxlbmd0aCgpKTsK
KyAgICB2b2lkKiBwYWdlQWxpZ25lZENvcHkgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1hbGxvYyhH
aWdhY2FnZTo6UHJpbWl0aXZlLCBwYWdlU2l6ZSwgcGFnZUFsaWduZWRTaXplKTsKKyAgICBpZiAo
IXBhZ2VBbGlnbmVkQ29weSkKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShwYWdlQWxpZ25l
ZENvcHksIGRhdGEuYmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIG1fY29u
dGVudHMgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGF0
YS5ieXRlTGVuZ3RoKCksIFtdICh2b2lkKiBwdHIpIHsKKyAgICAgICAgR2lnYWNhZ2U6OmFsaWdu
ZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CisgICAgfSk7CisgICAgbV9jb250ZW50
cy0+cmVmKCk7CisgICAgQXJyYXlCdWZmZXIqIGNhcHR1cmVkQ29udGVudHMgPSBtX2NvbnRlbnRz
LmdldCgpOworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdCdWZmZXJX
aXRoQnl0ZXNOb0NvcHk6bV9jb250ZW50cy0+ZGF0YSgpIGxlbmd0aDpwYWdlQWxpZ25lZFNpemUg
b3B0aW9uczpNVExSZXNvdXJjZU9wdGlvbkNQVUNhY2hlTW9kZURlZmF1bHQgZGVhbGxvY2F0b3I6
Xih2b2lkKiwgTlNVSW50ZWdlcikgeworICAgICAgICBjYXB0dXJlZENvbnRlbnRzLT5kZXJlZigp
OworICAgIH1dKTsKKyAgICBpZiAoIW1fbWV0YWwpIHsKKyAgICAgICAgbV9jb250ZW50cy0+ZGVy
ZWYoKTsKKyAgICAgICAgbV9jb250ZW50cyA9IG51bGxwdHI7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
ck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMmM2MDE1MjMyMDAxNTY1MzY3ZjdhYmQzODdjMWJlMWY0
ZTFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0KQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5BQkxF
KFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kUXVldWUuaCIKKyNpbXBvcnQg
IkdQVUxlZ2FjeURyYXdhYmxlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6
OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiBxdWV1
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxiYWNrKQorICAgIDogbV9tZXRhbCB7
IFtxdWV1ZS5tZXRhbCgpIGNvbW1hbmRCdWZmZXJdIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKCkiKTsKKworICAgIFttX21ldGFsIGFk
ZENvbXBsZXRlZEhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pPjo6
ZnJvbUNhbGxhYmxlKFtjb21wbGV0ZWRDYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGVkQ2FsbGJh
Y2spXSAoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4pIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFdURk1vdmUoY29tcGxldGVkQ2FsbGJhY2spKTsKKyAgICB9KS5nZXQoKV07Cit9CisK
K3ZvaWQgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxlKEdQVUxlZ2FjeURy
YXdhYmxlJiBkcmF3YWJsZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWV0YWwgfHwgIWRyYXdhYmxl
Lm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHByZXNlbnREcmF3YWJs
ZTpkcmF3YWJsZS5tZXRhbCgpXTsKKyAgICBkcmF3YWJsZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQg
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6Y29tbWl0KCkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBj
b21taXRdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjMzZmY4MGY4ZDY3YjE1
Njk0ODNlZTlmNDk1ZTk5ZjYwN2RjYzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0K
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldl
YktpdCI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9
IEAiY29tLmFwcGxlLldlYktpdC4iOworCitHUFVMZWdhY3lDb21tYW5kUXVldWU6OkdQVUxlZ2Fj
eUNvbW1hbmRRdWV1ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKKyAgICA6IG1fbWV0
YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdDb21tYW5kUXVldWVdKSB9Cit7CisgICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjpHUFVMZWdhY3lDb21tYW5kUXVl
dWUoKSIpOworCisgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVs
XTsKK30KKworU3RyaW5nIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25zdAorewor
ICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBO
U1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxhYmVsXTsKKworICAgIGlmIChbcHJl
Zml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBBU1NFUlQocHJlZml4ZWRMYWJlbC5s
ZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgpOworICAgIHJldHVybiBbcHJl
Zml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVu
Z3RoXTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAg
W21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKKyAgICBlbHNlCisg
ICAgICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZpeCBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpsYWJlbF1dOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJN
ZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMTAyNmYyNTBiMjYzYmMwZmQwNDI0OGJlZmFiN2Q3N2U3Njgz
OWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0KQEAgLTAsMCArMSw3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJh
QGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVy
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJHUFVMZWdh
Y3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5U2l6ZS5oIgorI2lt
cG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgaW5saW5lIE1UTFNpemUgTVRMU2l6ZU1ha2UoR1BVTGVnYWN5U2l6
ZSBzaXplKQoreworICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRl
cHRoIH07Cit9CisKK0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlcikK
KyAgICA6IG1fbWV0YWwgeyBbYnVmZmVyLm1ldGFsKCkgY29tcHV0ZUNvbW1hbmRFbmNvZGVyXSB9
Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpH
UFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIoKSIpOworfQorCit2b2lkIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUmIGNvbXB1dGVQaXBlbGluZVN0YXRlKSBjb25zdAorewor
ICAgIGlmICghY29tcHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW21fbWV0YWwgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Y29tcHV0ZVBpcGVsaW5lU3Rh
dGUubWV0YWwoKV07Cit9CisgICAgCit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBv
ZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorICAgIAordm9pZCBHUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoKEdQVUxlZ2FjeVNpemUgdGhyZWFkZ3JvdXBzUGVy
R3JpZCwgR1BVTGVnYWN5U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApIGNvbnN0Cit7CisgICAg
W21fbWV0YWwgZGlzcGF0Y2hUaHJlYWRncm91cHM6TVRMU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVy
R3JpZCkgdGhyZWFkc1BlclRocmVhZGdyb3VwOk1UTFNpemVNYWtlKHRocmVhZHNQZXJUaHJlYWRn
cm91cCldOworfQorCit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZW5kRW5j
b2RpbmcoKSBjb25zdAoreworICAgIFttX21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MDUzMWVmNmRjZDBlMjU5NTE3
NDBhYTdjMjIwNzUzMTliNDI1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFs
Lm1tCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8g
S2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29t
cHV0ZVBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAi
R1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUxlZ2Fj
eUZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKSIpOworCisg
ICAgaWYgKCFmdW5jdGlvbi5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21ldGFs
ID0gYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVu
Y3Rpb246ZnVuY3Rpb24ubWV0YWwoKSBlcnJvcjpuaWxdKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzkwMmIzZWMyODExZjkzM2ZkY2E2YmFi
MGU1ZDM5YzllNWQwZDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1t
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVn
YWN5RW51bXMuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCisgICAgOiBtX21ldGFsIHsgYWRv
cHROUyhbTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cigpIik7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhX
cml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3JpdGVF
bmFibGVkXTsKK30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRE
ZXB0aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAoreworICAg
IFttX21ldGFsIHNldERlcHRoV3JpdGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKK30K
KworR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBkZXB0aENvbXBhcmVGdW5jdGlv
bl0pOworfQorCit2b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRo
Q29tcGFyZUZ1bmN0aW9uKEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlvbikgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24g
dmFsdWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRMQ29tcGFyZUZ1bmN0aW9uPwor
ICAgIFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1UTENvbXBh
cmVGdW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNlZGI0MjA0MWNhOWEyNTVmM2VhMTZjNDFhYjVhNzlmNTQ2MGZhNjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIK
KyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICA6IG1fbWV0YWwg
eyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlw
dG9yOmRlc2NyaXB0b3IubWV0YWwoKV0pIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSIpOworfQor
CitTdHJpbmcgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0
dXJuIFttX21ldGFsIGxhYmVsXTsKK30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhlIE1U
TERlcHRoU3RlbmNpbFN0YXRlIHByb3RvY29sIGRvZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIGxh
YmVsLgorICAgIC8vIFRoZSBsYWJlbCBoYXMgdG8gYmUgc2V0IG9uIHRoZSBkZXNjcmlwdG9yIHdo
ZW4gY3JlYXRpbmcgdGhlIHN0YXRlIG9iamVjdC4KKyAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIg
Y2hhbmdpbmcgdGhlIFdlYk1ldGFsIGludGVyZmFjZSB0byBub3QgcmVxdWlyZSB0aGlzIQorfQor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGV2aWNl
TWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE3NmZjOTdhNzE4OGZiNWZiYzYwNjAzNjQ2MTFhMzAyMTE3
MDZiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1tCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJNZXRhbExheWVyLmgiCisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR1BVTGVnYWN5RGV2aWNlOjpHUFVMZWdhY3lEZXZpY2UoKQorICAgIDogbV9tZXRhbCB7IGFk
b3B0TlMoTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpKSB9Cit7CisKKyAgICBpZiAoIW1f
bWV0YWwpIHsKKyAgICAgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjpHUFVMZWdh
Y3lEZXZpY2UgLS0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGV2aWNlLiBUaGlzIHVzdWFsbHkgbWVh
bnMgTWV0YWwgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGhhcmR3YXJlLiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjpHUFVM
ZWdhY3lEZXZpY2UgTWV0YWwgZGV2aWNlIGlzICVwIiwgbV9tZXRhbC5nZXQoKSk7CisKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIG1fbGF5ZXIgPSBhZG9wdE5TKFtbV2Vi
TWV0YWxMYXllciBhbGxvY10gaW5pdFdpdGhHUFVEZXZpY2U6dGhpc10pOworICAgIFttX2xheWVy
IHNldE9wYXF1ZTowXTsKKyAgICBbbV9sYXllciBzZXROYW1lOkAiV2ViTWV0YWwgTGF5ZXIiXTsK
KworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIFNob3VsZCB0aGlzIGJlIGluIHRoZSBXZWJNZXRh
bExheWVyIGluaXRpYWxpemVyPworICAgIFttX2xheWVyIHNldERldmljZTptX21ldGFsLmdldCgp
XTsKKyAgICBbbV9sYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1d
OworICAgIFttX2xheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNdOworCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEdQVUxlZ2FjeURldmljZTo6ZGlzY29ubmVjdCgp
Cit7CisgICAgbV9sYXllci5nZXQoKS5jb250ZXh0ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIGFsc28gY2xlYXIgb3V0IHRoZSBkZXZpY2UgcHJvcGVydHksIHdoaWNoIGhhcyB0
aGUgTVRMRGV2aWNlPworfQorCit2b2lkIEdQVUxlZ2FjeURldmljZTo6cmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGNvbnN0Cit7CisgICAgW21fbGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1h
a2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFttX2xheWVyIHNldERyYXdhYmxlU2l6ZTpD
R1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKKworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIExv
dHMgb2YgcmVzaGFwZSBzdHVmZiBzaG91bGQgZ28gaGVyZS4gU2VlIEdDM0QuCit9CisKK0NBTGF5
ZXIgKkdQVUxlZ2FjeURldmljZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGV2aWNlOjpvcGVyYXRvciEoKSBj
b25zdAoreworICAgIHJldHVybiAhbV9tZXRhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
YWUxMzllNjNjMGIzNTIxOGE5NzQxMGNlMzQ4MjYyM2RkNzk0MmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJs
ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURy
YXdhYmxlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURl
dmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiV2ViTWV0YWxMYXllci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURyYXdhYmxlOjpHUFVMZWdhY3lEcmF3
YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKKyAgICA6IG1fbWV0YWwgeyBbZGV2
aWNlLmxheWVyKCkgbmV4dERyYXdhYmxlXSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVn
YWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdhYmxlKCkiKTsKK30KKwordm9pZCBHUFVMZWdhY3lE
cmF3YWJsZTo6cmVsZWFzZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2Fi
bGU6OnJlbGVhc2UoKSIpOworICAgIG1fbWV0YWwgPSBuaWw7Cit9CisgICAgCitNVExEcmF3YWJs
ZSAqR1BVTGVnYWN5RHJhd2FibGU6Om1ldGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKK30KKworTVRMVGV4dHVyZSAqR1BVTGVnYWN5RHJhd2FibGU6OnRleHR1cmUoKSBj
b25zdAoreworICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChD
QU1ldGFsRHJhd2FibGUpXSkgeworICAgICAgICBBU1NFUlQoIW1fbWV0YWwpOworICAgICAgICBy
ZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gWyhpZDxDQU1ldGFsRHJhd2FibGU+KW1fbWV0
YWwuZ2V0KCkgdGV4dHVyZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lGdW5jdGlvbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTk5YzA2YmMzNGMx
Nzg5NGFjYjYxY2M3ZjM3NDk1NWVkYzE0YzU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQpA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5oIgor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lMaWJyYXJ5LmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RnVu
Y3Rpb246OkdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxpYnJhcnkmIGxpYnJhcnks
IGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtsaWJyYXJ5Lm1l
dGFsKCkgbmV3RnVuY3Rpb25XaXRoTmFtZTpuYW1lXSkgfQoreworICAgIExPRyhXZWJNZXRhbCwg
IkdQVUxlZ2FjeUZ1bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbigpIik7Cit9CisKK1N0cmluZyBH
UFVMZWdhY3lGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21ldGFsKQorICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBbbV9tZXRhbCBuYW1lXTsK
K30KKworYm9vbCBHUFVMZWdhY3lGdW5jdGlvbjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW1fbWV0YWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lMaWJyYXJ5TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg3MjYyODI1M2IyNjhhZjAw
MGVhNzYzNjdiY2FlODZlYWYwOWU1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbQpAQCAtMCww
ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lMaWJyYXJ5LmgiCisKKyNpZiBF
TkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeUxpYnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnkoY29uc3QgR1BVTGVnYWN5RGV2
aWNlJiBkZXZpY2UsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICBMT0coV2ViTWV0
YWwsICJHUFVMZWdhY3lMaWJyYXJ5OjpHUFVMZWdhY3lMaWJyYXJ5KCkiKTsKKworICAgIGlmICgh
ZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5TRXJyb3IgKmVycm9yID0g
W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdC5HUFUiIGNvZGU6MSB1
c2VySW5mbzpuaWxdOworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdM
aWJyYXJ5V2l0aFNvdXJjZTpzb3VyY2VDb2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwor
ICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgTE9HKFdlYk1ldGFsLCAiQ29tcGlsYXRpb24gZXJy
b3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworfQor
CitTdHJpbmcgR1BVTGVnYWN5TGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9t
ZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gW21fbWV0
YWwgbGFiZWxdOworfQorCit2b2lkIEdQVUxlZ2FjeUxpYnJhcnk6OnNldExhYmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbWV0YWwpOworICAgIFttX21ldGFs
IHNldExhYmVsOmxhYmVsXTsKK30KKworVmVjdG9yPFN0cmluZz4gR1BVTGVnYWN5TGlicmFyeTo6
ZnVuY3Rpb25OYW1lcygpIGNvbnN0Cit7CisgICAgYXV0byBhcnJheSA9IFttX21ldGFsIGZ1bmN0
aW9uTmFtZXNdOworICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShhcnJheS5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqc3RyaW5n
IGluIGFycmF5KQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7CisgICAg
cmV0dXJuIHZlY3RvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkwZTVkNGZhZDQxMmNmMmYzYzc4MGIwYWRkZmRlZTFhN2ZjMmZmNTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVn
YWN5Q29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBH
UFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7CisK
KyAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
ZXRhbCA9IFtidWZmZXIubWV0YWwoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9y
OmRlc2NyaXB0b3IubWV0YWwoKV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0ZSkgY29uc3QKK3sKKyAgICBpZiAoIXJlbmRlclBp
cGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fbWV0YWwgc2V0
UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQaXBlbGluZVN0YXRlLm1ldGFsKCldOworfQorCit2
b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShj
b25zdCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2lsU3RhdGUpIGNvbnN0
Cit7CisgICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpkZXB0aFN0ZW5jaWxTdGF0ZS5t
ZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVy
dGV4QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldFZlcnRleEJ1ZmZlcjpidWZmZXIubWV0YWwo
KSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXIm
IGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBp
ZiAoIWJ1ZmZlci5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9tZXRhbCBzZXRG
cmFnbWVudEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhd
OworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZl
cyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lhbGx5IG9wdGltaXplZCBwYXRo
IGZvciBjb3VudCBvZiAwPworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IFttX21ldGFsIGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFByaW1pdGl2ZVR5cGU+KHR5
cGUpIHZlcnRleFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsKK30KKwordm9pZCBHUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAoreworICAgIFtt
X21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMyNWM5ZjI5NzBlMmNmZDJhNjZkNjZh
NGY0MTIzMmJhMWI2YTY2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQor
CisjaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkK
KyAgICA6IG1fbWV0YWwgeyBtZXRhbCB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IoKSIpOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9t
ZXRhbCBsb2FkQWN0aW9uXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24odW5zaWduZWQgbmV3TG9hZEFjdGlvbikgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmFuZ2UgY2hlY2sgZm9yIGxlZ2l0aW1hdGUg
dmFsdWVzPworICAgIFttX21ldGFsIHNldExvYWRBY3Rpb246c3RhdGljX2Nhc3Q8TVRMTG9hZEFj
dGlvbj4obmV3TG9hZEFjdGlvbildOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fbWV0YWwgc3RvcmVBY3Rpb25dOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbmV3U3RvcmVBY3Rpb24p
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdp
dGltYXRlIHZhbHVlcz8KKyAgICBbbV9tZXRhbCBzZXRTdG9yZUFjdGlvbjpzdGF0aWNfY2FzdDxN
VExTdG9yZUFjdGlvbj4obmV3U3RvcmVBY3Rpb24pXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUoY29uc3QgR1BVTGVnYWN5VGV4
dHVyZSYgdGV4dHVyZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRUZXh0dXJlOnRleHR1cmUu
bWV0YWwoKV07Cit9CisKK01UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWViZTE2NDU0OWVh
OTg2M2FhMzcxZGI2MDRiNDViMzdlZDVlZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkK
KyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ldGFsIH0K
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSIpOworfQorCitWZWN0b3I8ZmxvYXQ+IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBtZXRhbCA9IHRo
aXMtPm1ldGFsKCk7CisgICAgaWYgKCFtZXRhbCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGF1dG8gY29sb3IgPSBbbWV0YWwgY2xlYXJDb2xvcl07CisgICAgcmV0dXJuIHsgbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChjb2xvci5yZWQpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmdy
ZWVuKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5ibHVlKSwgbmFycm93UHJlY2lzaW9u
VG9GbG9hdChjb2xvci5hbHBoYSkgfTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBuZXdDbGVhckNvbG9yKSBjb25zdAoreworICAgIGlmIChuZXdDbGVhckNvbG9yLnNpemUoKSAh
PSA0KQorICAgICAgICByZXR1cm47CisKKyAgICBbbWV0YWwoKSBzZXRDbGVhckNvbG9yOk1UTENs
ZWFyQ29sb3JNYWtlKG5ld0NsZWFyQ29sb3JbMF0sIG5ld0NsZWFyQ29sb3JbMV0sIG5ld0NsZWFy
Q29sb3JbMl0sIG5ld0NsZWFyQ29sb3JbM10pXTsKK30KKworTVRMUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzNkYTNl
YmNjMWYyNWFkZDc0NWYyZWQ0MWU5NWVkNmZlNDhmZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICpt
ZXRhbCkKKyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1l
dGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwor
fQorCitkb3VibGUgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsK
KyAgICBpZiAoIW1ldGFsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBbbWV0YWwg
Y2xlYXJEZXB0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpIGNvbnN0Cit7
CisgICAgW21ldGFsKCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRlcHRoXTsKK30KKworTVRMUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzQ1ZWQ2Y2M5ZTIyY2U5OGZiOWQw
NmRiZmI2NDdkZGJkNDgzYjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5t
bQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdh
Y3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAiR1BVTGVn
YWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dp
bmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yKCkKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtN
VExSZW5kZXJQYXNzRGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKK30KKwor
VmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX21ldGFsKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gRklYTUU6IFdo
eSBpcyBpdCBjb3JyZWN0IHRvIHJldHVybiBvbmUgY29sb3IgaGVyZT8KKyAgICByZXR1cm4geyB7
IFtbbV9tZXRhbCBjb2xvckF0dGFjaG1lbnRzXSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6MF0g
fSB9OworfQorCitHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fbWV0YWwgZGVwdGhBdHRhY2htZW50XTsKK30KKworTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY0M2M5NWJkMTk0YzY5MzVlMjNkMWRiZGEzYTRjOTE4YzYwYjUzZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQorICAgIDogbV9tZXRhbCB7
IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9tZXRhbCBwaXhlbEZvcm1hdF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdCh1bnNpZ25l
ZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoZWNr
IGZvciBlbnVtZXJhdGlvbiB2YWx1ZXMgb3V0IG9mIHJhbmdlIGJlZm9yZSBjYWxsaW5nIHRoZSBt
ZXRob2Q/CisgICAgW21fbWV0YWwgc2V0UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxG
b3JtYXQ+KG5ld1BpeGVsRm9ybWF0KV07Cit9CisKK01UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUw
NWU4YWYyZWZkZTAzM2YwZTUxMzA3MjllZjRlMzY4YjIyMTViMTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKKyNpbXBvcnQgIkdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCisgICAgOiBtX21ldGFs
IHsgYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pIH0KK3sKKyAgICBM
T0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJl
dHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF07Cit9CisKK3ZvaWQgR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZv
cm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRE
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3
UGl4ZWxGb3JtYXQpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUZ1bmN0aW9uJiBuZXdGdW5jdGlv
bikgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5jdGlvbjpuZXdGdW5jdGlvbi5t
ZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dEZyYWdtZW50RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBj
b25zdAoreworICAgIFttX21ldGFsIHNldEZyYWdtZW50RnVuY3Rpb246bmV3RnVuY3Rpb24ubWV0
YWwoKV07Cit9CisKK1ZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I+IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRh
Y2htZW50cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBhbHdheXMgT0sgdG8g
cmV0dXJuIGV4YWN0bHkgb25lIGF0dGFjaG1lbnQ/CisgICAgcmV0dXJuIHsgeyBbW21fbWV0YWwg
Y29sb3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKK30KKwor
dm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkgY29uc3QKK3sK
KyAgICBbbV9tZXRhbCByZXNldF07Cit9CisKK01UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTQyMGZiODhhYmIyZGIwYjI2MjBjZDExOGRiNzdhNTViMTllMDI0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6R1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwg
Y29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAg
IDogbV9tZXRhbCB7IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCkgZXJyb3I6bmlsXSkgfQoreworICAg
IExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUoKSIpOworfQorCitTdHJpbmcgR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIFttX21ldGFsIGxhYmVsXTsKK30KKwordm9p
ZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBUaGUgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSBwcm90b2Nv
bCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJlbC4KKyAgICAvLyBUaGUgbGFiZWwgaGFz
IHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3aGVuIGNyZWF0aW5nIHRoZSBzdGF0ZSBvYmpl
Y3QuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBXZWJNZXRhbCBpbnRl
cmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKK30KKyAgICAKK01UTFJlbmRlclBpcGVsaW5lU3Rh
dGUgKkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6Om1ldGFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI1YWQzODg1ZjkyY2FhY2NiMzRkOGI3MzVhYTZhNzg5OGJhMjZkOWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1F
VEFMKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpHUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBwaXhlbEZvcm1hdCwgdW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpCisgICAgOiBtX21ldGFsIHsgW01UTFRl
eHR1cmVEZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c3RhdGlj
X2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBpeGVsRm9ybWF0KSB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVp
Z2h0IG1pcG1hcHBlZDptaXBtYXBwZWRdIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0
dXJlRGVzY3JpcHRvcjo6R1BVVGV4dHVyZURlc2NyaXB0b3IoKSIpOworfQorCit1bnNpZ25lZCBH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9tZXRhbCB3aWR0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNl
dFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsK
KyAgICBbbV9tZXRhbCBzZXRXaWR0aDpuZXdXaWR0aF07Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRh
bCBoZWlnaHRdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRIZWln
aHQodW5zaWduZWQgbmV3SGVpZ2h0KSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAg
ICBbbV9tZXRhbCBzZXRIZWlnaHQ6bmV3SGVpZ2h0XTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
bWV0YWwgc2FtcGxlQ291bnRdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
OjpzZXRTYW1wbGVDb3VudCh1bnNpZ25lZCBuZXdTYW1wbGVDb3VudCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9tZXRhbCk7CisgICAgW21fbWV0YWwgc2V0U2FtcGxlQ291bnQ6bmV3U2FtcGxlQ291
bnRdOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZVR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCB0ZXh0dXJlVHlwZV07Cit9CisKK3Zv
aWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKHVuc2lnbmVkIG5l
d1RleHR1cmVUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRh
bCBzZXRUZXh0dXJlVHlwZTpzdGF0aWNfY2FzdDxNVExUZXh0dXJlVHlwZT4obmV3VGV4dHVyZVR5
cGUpXTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgc3RvcmFnZU1vZGVdOworfQorCit2
b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZSh1bnNpZ25lZCBu
ZXdTdG9yYWdlTW9kZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRTdG9yYWdlTW9kZTpzdGF0
aWNfY2FzdDxNVExTdG9yYWdlTW9kZT4obmV3U3RvcmFnZU1vZGUpXTsKK30KKwordW5zaWduZWQg
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fbWV0YWwgdXNhZ2VdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRVc2FnZSh1bnNpZ25lZCBuZXdVc2FnZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tZXRhbCk7
CisgICAgW21fbWV0YWwgc2V0VXNhZ2U6bmV3VXNhZ2VdOworfQorCitNVExUZXh0dXJlRGVzY3Jp
cHRvciAqR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTExZWZlNmNkZDdj
OWRlNzcyNjQ2MzViMDlkZWM3MGYxYTVmY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVRleHR1cmUuaCIKKwor
I2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1w
b3J0ICJHUFVMZWdhY3lEcmF3YWJsZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5VGV4dHVyZURlc2Ny
aXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVy
ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVVGV4dHVyZTo6
R1BVVGV4dHVyZSgpIik7CisKKyAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1RleHR1
cmVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsKK30KKworR1BVTGVnYWN5VGV4
dHVyZTo6R1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lEcmF3YWJsZSYgb3RoZXIpCisg
ICAgOiBtX21ldGFsIHsgb3RoZXIudGV4dHVyZSgpIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVUZXh0dXJlOjpHUFVUZXh0dXJlKCkiKTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVy
ZTo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgpLndpZHRoOworfQor
Cit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX21ldGFsLmdldCgpLmhlaWdodDsKK30KKworTVRMVGV4dHVyZSAqR1BVTGVnYWN5VGV4dHVy
ZTo6bWV0YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGlicmFyeU1ldGFsLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMmFkYjFhYTQ1ZWFhY2FkOTA3MzZkODk5NDQ5NmI3MzJmZDNh
NGU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxpYnJhcnlNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxpYnJhcnku
aCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotR1BVTGlicmFyeTo6R1BVTGlicmFyeShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxpYnJh
cnk6OkdQVUxpYnJhcnkoKSIpOwotCi0gICAgaWYgKCFkZXZpY2UubWV0YWwoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46
QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07Ci0gICAgbV9tZXRh
bCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0xpYnJhcnlXaXRoU291cmNlOnNvdXJjZUNv
ZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAg
ICBMT0coV2ViTWV0YWwsICJDb21waWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2FsaXpl
ZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0KLVN0cmluZyBHUFVMaWJyYXJ5OjpsYWJl
bCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLQotICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVTGlicmFy
eTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9t
ZXRhbCk7Ci0gICAgW21fbWV0YWwgc2V0TGFiZWw6bGFiZWxdOwotfQotCi1WZWN0b3I8U3RyaW5n
PiBHUFVMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKLXsKLSAgICBhdXRvIGFycmF5ID0g
W21fbWV0YWwgZnVuY3Rpb25OYW1lc107Ci0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAg
IHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LmNvdW50KTsKLSAgICBmb3IgKE5T
U3RyaW5nICpzdHJpbmcgaW4gYXJyYXkpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
c3RyaW5nKTsKLSAgICByZXR1cm4gdmVjdG9yOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVUmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NzU4M2IyNTY3OWZhYTg0MmMxMGIwNzI1YWJk
NTJlZDQxNTY2MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyQ29tbWFu
ZEVuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5o
IgotI2ltcG9ydCAiR1BVRGVwdGhTdGVuY2lsU3RhdGUuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZVN0YXRlLmgiCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVSZW5kZXJDb21tYW5kRW5jb2Rl
cihjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlckNvbW1h
bmRFbmNvZGVyOjpHUFVSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7Ci0KLSAgICBpZiAoIWRlc2Ny
aXB0b3IubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZXRhbCA9IFtidWZmZXIu
bWV0YWwoKSByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0
YWwoKV07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVs
aW5lU3RhdGUoY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0
ZSkgY29uc3QKLXsKLSAgICBpZiAoIXJlbmRlclBpcGVsaW5lU3RhdGUubWV0YWwoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQ
aXBlbGluZVN0YXRlLm1ldGFsKCldOwotfQotCi12b2lkIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhT
dGVuY2lsU3RhdGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpk
ZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmICghYnVmZmVyLm1ldGFsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldFZlcnRleEJ1ZmZlcjpidWZmZXIu
bWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwotfQotCi12b2lkIEdQVVJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBHUFVCdWZmZXImIGJ1ZmZl
ciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1
ZmZlci5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXRGcmFnbWVu
dEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwotfQot
Ci12b2lkIEdQVVJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0
eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgY291bnQpIGNvbnN0Ci17Ci0gICAgLy8gRklY
TUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lhbGx5IG9wdGltaXplZCBwYXRoIGZvciBjb3VudCBv
ZiAwPwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIGRy
YXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFByaW1pdGl2ZVR5cGU+KHR5cGUpIHZlcnRleFN0
YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsKLX0KLQotdm9pZCBHUFVSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAotewotICAgIFttX21ldGFsIGVuZEVuY29kaW5n
XTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDkzOWE4YmMyODNjMTI0ZDgyNTFlMzRkNTI1YTc5ZDZk
MDk4Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVVGV4dHVyZS5oIgotI2ltcG9ydCAiTG9n
Z2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqbWV0YWwp
Ci0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
Ojpsb2FkQWN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwgbG9hZEFjdGlvbl07
Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMb2FkQWN0
aW9uKHVuc2lnbmVkIG5ld0xvYWRBY3Rpb24pIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNob3Vs
ZCB0aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdpdGltYXRlIHZhbHVlcz8KLSAgICBbbV9tZXRhbCBz
ZXRMb2FkQWN0aW9uOnN0YXRpY19jYXN0PE1UTExvYWRBY3Rpb24+KG5ld0xvYWRBY3Rpb24pXTsK
LX0KLQotdW5zaWduZWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9yZUFj
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHN0b3JlQWN0aW9uXTsKLX0KLQot
dm9pZCBHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKHVu
c2lnbmVkIG5ld1N0b3JlQWN0aW9uKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyByYW5nZSBjaGVjayBmb3IgbGVnaXRpbWF0ZSB2YWx1ZXM/Ci0gICAgW21fbWV0YWwgc2V0U3Rv
cmVBY3Rpb246c3RhdGljX2Nhc3Q8TVRMU3RvcmVBY3Rpb24+KG5ld1N0b3JlQWN0aW9uKV07Ci19
Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlKGNv
bnN0IEdQVVRleHR1cmUmIHRleHR1cmUpIGNvbnN0Ci17Ci0gICAgW21fbWV0YWwgc2V0VGV4dHVy
ZTp0ZXh0dXJlLm1ldGFsKCldOwotfQotCi1NVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IgKkdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewot
ICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNj
ZDBmNDkwOTVjNDc0YjYyYWM3ZTk5OGJjNmVmYWExZmIzZWZiZTUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgot
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQotICAgIDogR1BVUmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxmbG9hdD4gR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25zdAotewotICAgIGF1dG8qIG1ldGFs
ID0gdGhpcy0+bWV0YWwoKTsKLSAgICBpZiAoIW1ldGFsKQotICAgICAgICByZXR1cm4geyB9Owot
Ci0gICAgYXV0byBjb2xvciA9IFttZXRhbCBjbGVhckNvbG9yXTsKLSAgICByZXR1cm4geyBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLnJlZCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29s
b3IuZ3JlZW4pLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmJsdWUpLCBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGNvbG9yLmFscGhhKSB9OwotfQotCi12b2lkIEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9hdD4m
IG5ld0NsZWFyQ29sb3IpIGNvbnN0Ci17Ci0gICAgaWYgKG5ld0NsZWFyQ29sb3Iuc2l6ZSgpICE9
IDQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttZXRhbCgpIHNldENsZWFyQ29sb3I6TVRMQ2xl
YXJDb2xvck1ha2UobmV3Q2xlYXJDb2xvclswXSwgbmV3Q2xlYXJDb2xvclsxXSwgbmV3Q2xlYXJD
b2xvclsyXSwgbmV3Q2xlYXJDb2xvclszXSldOwotfQotCi1NVExSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciAqR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TVRMUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IgKj4oR1BVUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yOjptZXRhbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjQ3MmU5M2U0YjNi
ZmQ3OGUzZDRmODdhMGI4YzM3ODI3ZWMyNDg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1w
b3J0ICJHUFVSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dp
bmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yICptZXRhbCkKLSAgICA6IEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1l
dGFsIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwot
fQotCi1kb3VibGUgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFy
RGVwdGgoKSBjb25zdAotewotICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsKLSAgICBp
ZiAoIW1ldGFsKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBbbWV0YWwgY2xlYXJE
ZXB0aF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVwdGgpIGNvbnN0Ci17Ci0gICAgW21ldGFs
KCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRlcHRoXTsKLX0KLQotTVRMUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IgKkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6bWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWE4ZGQ3MTU3NzMzNTZmNGM3OGRlNjRjNGI1ZmUzY2Q0NDVmNTJk
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1l
dGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2lt
cG9ydCAiR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLSNpbXBvcnQg
IkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgbmV3XSkgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLQotICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgY29ycmVjdCB0byByZXR1
cm4gb25lIGNvbG9yIGhlcmU/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2ht
ZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotR1BVUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRo
QXR0YWNobWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIGRlcHRoQXR0YWNobWVu
dF07Ci19Ci0KLU1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICpHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljYWYxNTUzZDAxZDE5NzRmMzU5MmY1N2JjNzhk
MTFkYTkxYzg3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAg
IExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6R1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQot
dW5zaWduZWQgR1BVUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpwaXhl
bEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHBpeGVsRm9ybWF0XTsKLX0K
LQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBp
eGVsRm9ybWF0KHVuc2lnbmVkIG5ld1BpeGVsRm9ybWF0KSBjb25zdAotewotICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgY2hlY2sgZm9yIGVudW1lcmF0aW9uIHZhbHVlcyBvdXQgb2YgcmFuZ2UgYmVm
b3JlIGNhbGxpbmcgdGhlIG1ldGhvZD8KLSAgICBbbV9tZXRhbCBzZXRQaXhlbEZvcm1hdDpzdGF0
aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKLX0KLQotTVRMUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICpHUFVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZhZDAwMjk5NzJmZmQwMDU0ZmRkZWY0YzA5MmRiZTcwMWFiZGQyMjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
TWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2ltcG9ydCAiR1BVRnVuY3Rpb24uaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIG5ld10pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIik7Ci19Ci0KLXVuc2lnbmVk
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQo
KSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dF07Ci19Ci0KLXZvaWQgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFj
aG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QKLXsKLSAgICBb
bV9tZXRhbCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhl
bEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUZ1bmN0aW9uJiBuZXdGdW5jdGlv
bikgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5jdGlvbjpuZXdGdW5jdGlvbi5t
ZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdt
ZW50RnVuY3Rpb24oY29uc3QgR1BVRnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBjb25zdAotewotICAg
IFttX21ldGFsIHNldEZyYWdtZW50RnVuY3Rpb246bmV3RnVuY3Rpb24ubWV0YWwoKV07Ci19Ci0K
LVZlY3RvcjxHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IFdoeSBpcyBpdCBhbHdheXMgT0sgdG8gcmV0dXJuIGV4YWN0bHkgb25lIGF0dGFj
aG1lbnQ/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2htZW50c10gb2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotdm9pZCBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnJlc2V0KCkgY29uc3QKLXsKLSAgICBbbV9tZXRhbCByZXNldF07Ci19Ci0KLU1U
TFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpt
ZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQaXBlbGluZVN0YXRl
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMmRmNmEwMWJkMGQzZDc3
NzIzMTRjN2Q5ODhlYTRjYzJjN2NhNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5B
QkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVVJlbmRlclBpcGVsaW5lU3Rh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZpY2UubWV0YWwo
KSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvci5tZXRhbCgp
IGVycm9yOm5pbF0pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQaXBlbGluZVN0
YXRlOjpHUFVSZW5kZXJQaXBlbGluZVN0YXRlKCkiKTsKLX0KLQotU3RyaW5nIEdQVVJlbmRlclBp
cGVsaW5lU3RhdGU6OmxhYmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbWV0YWwpCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0K
LXZvaWQgR1BVUmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29u
c3QKLXsKLSAgICAvLyBGSVhNRTogVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgcHJvdG9jb2wg
ZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgbGFiZWwuCi0gICAgLy8gVGhlIGxhYmVsIGhhcyB0
byBiZSBzZXQgb24gdGhlIGRlc2NyaXB0b3Igd2hlbiBjcmVhdGluZyB0aGUgc3RhdGUgb2JqZWN0
LgotICAgIC8vIFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2luZyB0aGUgV2ViTWV0YWwgaW50ZXJm
YWNlIHRvIG5vdCByZXF1aXJlIHRoaXMhCi19Ci0gICAgCi1NVExSZW5kZXJQaXBlbGluZVN0YXRl
ICpHUFVSZW5kZXJQaXBlbGluZVN0YXRlOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
bWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVUZXh0dXJl
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVVGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmE3MzA1M2VkYTg3ZmY2ODZhY2QwN2JlMDhkZGI5MWJkNTllMmI2Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmVEZXNj
cmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIK
LSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVVGV4
dHVyZURlc2NyaXB0b3I6OkdQVVRleHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIHBpeGVsRm9ybWF0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKLSAgICA6
IG1fbWV0YWwgeyBbTVRMVGV4dHVyZURlc2NyaXB0b3IgdGV4dHVyZTJERGVzY3JpcHRvcldpdGhQ
aXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGl4ZWxGb3JtYXQpIHdpZHRo
OndpZHRoIGhlaWdodDpoZWlnaHQgbWlwbWFwcGVkOm1pcG1hcHBlZF0gfQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVVRleHR1cmVEZXNjcmlwdG9yOjpHUFVUZXh0dXJlRGVzY3JpcHRvcigpIik7
Ci19Ci0KLXVuc2lnbmVkIEdQVVRleHR1cmVEZXNjcmlwdG9yOjp3aWR0aCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFttX21ldGFsIHdpZHRoXTsKLX0KLQotdm9pZCBHUFVUZXh0dXJlRGVzY3JpcHRv
cjo6c2V0V2lkdGgodW5zaWduZWQgbmV3V2lkdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0
YWwpOwotICAgIFttX21ldGFsIHNldFdpZHRoOm5ld1dpZHRoXTsKLX0KLQotdW5zaWduZWQgR1BV
VGV4dHVyZURlc2NyaXB0b3I6OmhlaWdodCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFs
IGhlaWdodF07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodCh1bnNp
Z25lZCBuZXdIZWlnaHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFttX21l
dGFsIHNldEhlaWdodDpuZXdIZWlnaHRdOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJlRGVzY3Jp
cHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBzYW1wbGVD
b3VudF07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KHVu
c2lnbmVkIG5ld1NhbXBsZUNvdW50KSBjb25zdAotewotICAgIEFTU0VSVChtX21ldGFsKTsKLSAg
ICBbbV9tZXRhbCBzZXRTYW1wbGVDb3VudDpuZXdTYW1wbGVDb3VudF07Ci19Ci0KLXVuc2lnbmVk
IEdQVVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX21ldGFsIHRleHR1cmVUeXBlXTsKLX0KLQotdm9pZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0VGV4dHVyZVR5cGUodW5zaWduZWQgbmV3VGV4dHVyZVR5cGUpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKG1fbWV0YWwpOwotICAgIFttX21ldGFsIHNldFRleHR1cmVUeXBlOnN0YXRpY19jYXN0PE1U
TFRleHR1cmVUeXBlPihuZXdUZXh0dXJlVHlwZSldOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBz
dG9yYWdlTW9kZV07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6OnNldFN0b3JhZ2VN
b2RlKHVuc2lnbmVkIG5ld1N0b3JhZ2VNb2RlKSBjb25zdAotewotICAgIFttX21ldGFsIHNldFN0
b3JhZ2VNb2RlOnN0YXRpY19jYXN0PE1UTFN0b3JhZ2VNb2RlPihuZXdTdG9yYWdlTW9kZSldOwot
fQotCi11bnNpZ25lZCBHUFVUZXh0dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAotewotICAg
IHJldHVybiBbbV9tZXRhbCB1c2FnZV07Ci19Ci0KLXZvaWQgR1BVVGV4dHVyZURlc2NyaXB0b3I6
OnNldFVzYWdlKHVuc2lnbmVkIG5ld1VzYWdlKSBjb25zdAotewotICAgIEFTU0VSVChtX21ldGFs
KTsKLSAgICBbbV9tZXRhbCBzZXRVc2FnZTpuZXdVc2FnZV07Ci19Ci0KLU1UTFRleHR1cmVEZXNj
cmlwdG9yICpHUFVUZXh0dXJlRGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVy
biBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVVGV4
dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
VGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2VmY2ZkMWMw
NjRkZjVkZDhjYjZlYmNiNTg5ZWM1OGQxMzg5ZDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVVRleHR1cmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVEcmF3YWJsZS5oIgotI2ltcG9ydCAi
R1BVVGV4dHVyZURlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVVGV4dHVyZTo6R1BVVGV4
dHVyZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVVGV4dHVyZTo6R1BVVGV4dHVy
ZSgpIik7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1RleHR1cmVXaXRoRGVz
Y3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsKLX0KLQotR1BVVGV4dHVyZTo6R1BVVGV4dHVy
ZShjb25zdCBHUFVEcmF3YWJsZSYgb3RoZXIpCi0gICAgOiBtX21ldGFsIHsgb3RoZXIudGV4dHVy
ZSgpIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlOjpHUFVUZXh0dXJlKCkiKTsK
LX0KLQotdW5zaWduZWQgR1BVVGV4dHVyZTo6d2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBt
X21ldGFsLmdldCgpLndpZHRoOwotfQotCi11bnNpZ25lZCBHUFVUZXh0dXJlOjpoZWlnaHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpLmhlaWdodDsKLX0KLQotTVRMVGV4dHVy
ZSAqR1BVVGV4dHVyZTo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlMjE3YTA3NzE2NzJmY2QzNTQx
NzIyN2VmZGEzMjE1MjFjY2M1YjguLmNlYWJlOTNmMzI1NDJlMmRkMjQxZjkxNTE4NzBhM2FkMDVk
OWY2ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxOC0xMC0yMiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFJlbmFtZSBvbGQgR1BVKiBpbXBsZW1lbnRhdGlv
biBmaWxlcyB0byBHUFVMZWdhY3kqIGZvciBXZWJNZXRhbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1tLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
bWFjL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVGdW5jdGlvbi5tbS4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21h
Yy9HUFVMZWdhY3lEZXZpY2UubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvbWFjL0dQVURldmljZS5tbS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdh
Y3lGdW5jdGlvbi5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9tYWMvR1BVRnVuY3Rpb24ubW0uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5TGli
cmFyeS5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVTGlicmFyeS5tbS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lUZXN0Lmg6IFJl
bmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVVRlc3Qu
aC4KKwogMjAxOC0xMC0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjM3MzMxKTogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVy
Q3Jhc2ggQVBJIHRlc3QgZmFpbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDk4MmY0ZmM5
YjEzODY5MDVlZDY5ZTBlYzczMGRjZDg1NzM0NjY4Zi4uZDVmOWI3NzIwODE2ZGJkZGQ2YzEyNWFi
NGM1N2JlOGQzYjlkMzE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNCwxMSArMTI0
LDExIEBACiAJCTJFRkYwNkQ0MUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2RDMxRDhB
RURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcubW0gKi87IH07CiAJCTJFRkYwNkQ3MUQ4QUYz
NEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAv
KiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLzsgfTsKIAkJMzE1MTE4MTAxREIxQUU0MDAw
MTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29s
b3IuY3BwICovOyB9OwotCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1
ZXVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1
MjMxQzkxRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSAqLzsgfTsKLQkJMzE2
MkFFOUMxRTZGMkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBH
UFVEZXZpY2UubW0gKi87IH07Ci0JCTMxNkJEQkExMUU3MEQ3MUIwMERFMEQ1QSAvKiBHUFVMaWJy
YXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
QkRCQTAxRTcwRDZEODAwREUwRDVBIC8qIEdQVUxpYnJhcnkubW0gKi87IH07Ci0JCTMxNkJEQkE0
MUU3MEVGNjgwMERFMEQ1QSAvKiBHUFVGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkEzMUU3MEVGNUQwMERFMEQ1QSAvKiBHUFVG
dW5jdGlvbi5tbSAqLzsgfTsKLQkJMzE2QkRCQUMxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJE
QkFCMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVCdWZmZXIubW0gKi87IH07CisJCTMxNTIzMUNBMUVC
M0IzQzcwMEEyMkExNiAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYg
LyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovOyB9OworCQkzMTYyQUU5QzFFNkYyRkY1MDAw
RTREQkMgLyogR1BVTGVnYWN5RGV2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE2MkFFOUIxRTZGMkZDRTAwMEU0REJDIC8qIEdQVUxlZ2FjeURl
dmljZS5tbSAqLzsgfTsKKwkJMzE2QkRCQTExRTcwRDcxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxp
YnJhcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTZCREJBMDFFNzBENkQ4MDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5tbSAqLzsgfTsKKwkJ
MzE2QkRCQTQxRTcwRUY2ODAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQTMxRTcwRUY1RDAw
REUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLm1tICovOyB9OworCQkzMTZCREJBQzFFNzIwN0Yx
MDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUxlZ2Fj
eUJ1ZmZlci5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92
ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNy
YXNoX0J1bmRsZS5jcHAgKi87IH07CiAJCTMzREM4OTEyMTQxOTU1RkUwMDc0N0VGNyAvKiBzaW1w
bGUtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzNEQzg5MEUxNDE5NTM5MzAwNzQ3RUY3IC8qIHNpbXBsZS1pZnJhbWUuaHRt
bCAqLzsgfTsKIAkJMzNEQzg5MTQxNDE5NTc5RjAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2Vy
dmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNEQzg5MTMxNDE5NTc5RjAwNzQ3RUY3IC8qIExvYWRDYW5j
ZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwICovOyB9OwpAQCAtMTM4MSwx
MiArMTM4MSwxMiBAQAogCQkyRUZGMDZEMzFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RXS1dlYlZp
ZXcubW07IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRUZGMDZENjFEOEFGMzRBMDAwNEJCMzAgLyogV0tXZWJWaWV3Q2FuZGlkYXRl
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZp
ZXdDYW5kaWRhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1MTE4
MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTMxNTIzMUM5MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVDb21tYW5kUXVl
dWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNjJBRTlCMUU2RjJGQ0UwMDBF
NERCQyAvKiBHUFVEZXZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVEZXZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkEw
MUU3MEQ2RDgwMERFMEQ1QSAvKiBHUFVMaWJyYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGlicmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCQTIxRTcwREVFNTAwREUwRDVBIC8qIEdQVVRlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREJBMzFFNzBFRjVEMDBERTBENUEgLyogR1BVRnVuY3Rpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVGdW5jdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gR1BVQnVmZmVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYg
LyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTYyQUU5QjFFNkYyRkNFMDAwRTREQkMgLyogR1BVTGVnYWN5RGV2aWNlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZCREJBMDFFNzBENkQ4MDBERTBE
NUEgLyogR1BVTGVnYWN5TGlicmFyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2QkRCQTMxRTcwRUY1RDAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5
RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkJEQkFCMUU3MjA3
RjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29k
aW5nID0gNDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlV
c2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0JFNUFGNDEzN0I1
QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFm
dGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1MDUsMTIgKzI1MDUsMTIgQEAKIAkJMzE2MkFFOUExRTZGMkY4RjAwMEU0REJDIC8q
IG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMzE2
QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZlci5tbSAqLywKLQkJCQkzMTUyMzFDOTFF
QjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tICovLAotCQkJCTMxNjJBRTlCMUU2
RjJGQ0UwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gKi8sCi0JCQkJMzE2QkRCQTMxRTcwRUY1RDAw
REUwRDVBIC8qIEdQVUZ1bmN0aW9uLm1tICovLAotCQkJCTMxNkJEQkEwMUU3MEQ2RDgwMERFMEQ1
QSAvKiBHUFVMaWJyYXJ5Lm1tICovLAotCQkJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBH
UFVUZXN0LmggKi8sCisJCQkJMzE2QkRCQUIxRTcyMDdGMTAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1
ZmZlci5tbSAqLywKKwkJCQkzMTUyMzFDOTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVTGVnYWN5Q29t
bWFuZFF1ZXVlLm1tICovLAorCQkJCTMxNjJBRTlCMUU2RjJGQ0UwMDBFNERCQyAvKiBHUFVMZWdh
Y3lEZXZpY2UubW0gKi8sCisJCQkJMzE2QkRCQTMxRTcwRUY1RDAwREUwRDVBIC8qIEdQVUxlZ2Fj
eUZ1bmN0aW9uLm1tICovLAorCQkJCTMxNkJEQkEwMUU3MEQ2RDgwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lMaWJyYXJ5Lm1tICovLAorCQkJCTMxNkJEQkEyMUU3MERFRTUwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lUZXN0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0zODQ5LDExICszODQ5LDExIEBACiAJCQkJN0NDRTdFRTIxQTQxMUE5QTAwNDQ3
QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDdDRTFDRjMxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyogR2V0VXNl
ck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKLQkJCQkzMTZCREJBQzFFNzIwN0YxMDBE
RTBENUEgLyogR1BVQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE1MjMxQ0ExRUIzQjND
NzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTMxNjJB
RTlDMUU2RjJGRjUwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gaW4gU291cmNlcyAqLywKLQkJCQkz
MTZCREJBNDFFNzBFRjY4MDBERTBENUEgLyogR1BVRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywK
LQkJCQkzMTZCREJBMTFFNzBENzFCMDBERTBENUEgLyogR1BVTGlicmFyeS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTMxNkJEQkFDMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIubW0g
aW4gU291cmNlcyAqLywKKwkJCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVTGVnYWN5
Q29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0
REJDIC8qIEdQVUxlZ2FjeURldmljZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkJEQkE0MUU3
MEVGNjgwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTMxNkJEQkExMUU3MEQ3MUIwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOEU0QTg1MzcxRTFEMUFCMjAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGQTFBNDExQUU2MDA0NDdDNEMgLyogSGl0VGVzdFJl
c3VsdE5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzExQTQxMUE3RTAw
NDQ3QzRDIC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUJ1ZmZlci5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2QyYWFhNzQ0OTI4YWMzOTNjYzIzMzI2Mzkz
M2Y2OWVmMDIzMDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVQnVmZmVyLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVUZXN0LmgiCi0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+Ci0jaW1wb3J0IDxN
ZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVCdWZmZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR1BVRGV2aWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1RfRihHUFUsIEJ1ZmZlckNyZWF0ZSkKLXsKLSAgICBH
UFVEZXZpY2UgZGV2aWNlOwotCi0gICAgLy8gTm90IGFsbCBoYXJkd2FyZSBzdXBwb3J0cyBNZXRh
bCwgc28gaXQgaXMgcG9zc2libGUKLSAgICAvLyB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIGNyZWF0
ZSB0aGUgTVRMRGV2aWNlIG9iamVjdC4KLSAgICAvLyBJbiB0aGF0IGNhc2UsIHRoZSBkZXZpY2Ug
c2hvdWxkIGJlIG51bGwuCi0gICAgaWYgKCFkZXZpY2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEVYUEVDVF9OT1RfTlVMTChkZXZpY2UubWV0YWwoKSk7Ci0KLSAgICBhdXRvIGJ1ZmZlclZpZXcg
PSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZSgxMDI0KTsKLQotICAgIGF1dG8gZGF0YSA9IGJ1ZmZl
clZpZXctPmRhdGEoKTsKLSAgICBtZW1zZXQoZGF0YSwgMSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0
aCgpKTsKLQotICAgIEdQVUJ1ZmZlciBidWZmZXIgeyBkZXZpY2UsIGJ1ZmZlclZpZXcuZ2V0KCkg
fTsKLSAgICBFWFBFQ1RfRVEoMTAyNFUsIGJ1ZmZlci5sZW5ndGgoKSk7Ci0KLSAgICBhdXRvIGNv
bnRlbnRzID0gYnVmZmVyLmNvbnRlbnRzKCk7Ci0gICAgRVhQRUNUX05PVF9OVUxMKGNvbnRlbnRz
KTsKLSAgICBFWFBFQ1RfRVEoMTAyNFUsIGNvbnRlbnRzLT5ieXRlTGVuZ3RoKCkpOwotCi0gICAg
YXV0byBjb250ZW50c0RhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGVudHMtPmRhdGEo
KSk7Ci0gICAgRVhQRUNUX05FKGRhdGEsIGNvbnRlbnRzRGF0YSk7Ci0gICAgRVhQRUNUX0VRKDFV
LCBjb250ZW50c0RhdGFbMF0pOwotICAgIEVYUEVDVF9FUSgxVSwgY29udGVudHNEYXRhWzUxMl0p
OwotICAgIEVYUEVDVF9FUSgxVSwgY29udGVudHNEYXRhWzEwMjNdKTsKLQotICAgIEVYUEVDVF9O
T1RfTlVMTChidWZmZXIubWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvbWFjL0dQVURldmljZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVRGV2aWNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDQ0OTRiZmZl
MTYzMDgyYzA0ZGQxMmZlNTZiYTAwZmY2OGYzMWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9t
YWMvR1BVRGV2aWNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0
ICJHUFVUZXN0LmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8V2ViQ29yZS9H
UFVEZXZpY2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKLQotVEVTVF9GKEdQVSwgRGV2aWNlQ3JlYXRlKQotewotICAgIEdQVURldmlj
ZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBp
dCBpcyBwb3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBN
VExEZXZpY2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQg
YmUgbnVsbC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRVhQRUNU
X05PVF9OVUxMKGRldmljZS5sYXllcigpKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLnBs
YXRmb3JtTGF5ZXIoKSk7Ci0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKLSAg
ICBFWFBFQ1RfTFQoMFUsIGRldmljZS5tZXRhbCgpLm5hbWUubGVuZ3RoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUZ1bmN0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYzAyNzRhNjBmMjk5OGMxODU2ZmExYzU0NjNjZDFhNDc4MTMwYzhkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVRnVuY3Rpb24ubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVVGVzdC5oIgotI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0dQVURldmljZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9HUFVGdW5jdGlvbi5oPgotI2ltcG9ydCA8
V2ViQ29yZS9HUFVMaWJyYXJ5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1RfRihHUFUsIEZ1bmN0aW9uQWNjZXNzQnlOYW1l
KQotewotICAgIEdQVURldmljZSBkZXZpY2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1
cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFi
bGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwg
dGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKLQotICAgIEdQVUxp
YnJhcnkgbGlicmFyeSB7IGRldmljZSwgbGlicmFyeVNvdXJjZUNvZGUoKSB9OwotCi0gICAgR1BV
RnVuY3Rpb24gdmVydGV4RnVuY3Rpb24geyBsaWJyYXJ5LCAidmVydGV4X21haW4iX3MgfTsKLSAg
ICBFWFBFQ1RfTk9UX05VTEwodmVydGV4RnVuY3Rpb24ubWV0YWwoKSk7Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKCJ2ZXJ0ZXhfbWFpbiIsIHZlcnRleEZ1bmN0aW9uLm5hbWUoKSk7Ci0KLSAgICBHUFVG
dW5jdGlvbiBmcmFnbWVudEZ1bmN0aW9uIHsgbGlicmFyeSwgImZyYWdtZW50X21haW4iX3MgfTsK
LSAgICBFWFBFQ1RfTk9UX05VTEwoZnJhZ21lbnRGdW5jdGlvbi5tZXRhbCgpKTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoImZyYWdtZW50X21haW4iLCBmcmFnbWVudEZ1bmN0aW9uLm5hbWUoKSk7Ci0K
LSAgICBHUFVGdW5jdGlvbiBub25leGlzdGVudEZ1bmN0aW9uIHsgbGlicmFyeSwgIm5hbWVfdGhh
dF9pc19ub3RfaW5fbGlicmFyeSJfcyB9OwotICAgIEVYUEVDVF9OVUxMKG5vbmV4aXN0ZW50RnVu
Y3Rpb24ubWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQ
VUxlZ2FjeUJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMv
R1BVTGVnYWN5QnVmZmVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NGRhYzdhNjJmNDgxZWQ0MmZmNWNlNTEx
MmE2ZWUyNzMyNzBlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUJ1ZmZlci5tbQpAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNp
bXBvcnQgIkdQVUxlZ2FjeVRlc3QuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvVHlwZWRBcnJheXMuaD4KKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0dQVUxlZ2FjeUJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9HUFVMZWdhY3lEZXZpY2Uu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgQnVmZmVyQ3JlYXRlKQoreworICAgIEdQVUxlZ2FjeURl
dmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBz
byBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRo
ZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91
bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQ
RUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKKworICAgIGF1dG8gYnVmZmVyVmlldyA9IEpT
Qzo6VWludDhBcnJheTo6Y3JlYXRlKDEwMjQpOworCisgICAgYXV0byBkYXRhID0gYnVmZmVyVmll
dy0+ZGF0YSgpOworICAgIG1lbXNldChkYXRhLCAxLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkp
OworCisgICAgR1BVTGVnYWN5QnVmZmVyIGJ1ZmZlciB7IGRldmljZSwgYnVmZmVyVmlldy5nZXQo
KSB9OworICAgIEVYUEVDVF9FUSgxMDI0VSwgYnVmZmVyLmxlbmd0aCgpKTsKKworICAgIGF1dG8g
Y29udGVudHMgPSBidWZmZXIuY29udGVudHMoKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoY29udGVu
dHMpOworICAgIEVYUEVDVF9FUSgxMDI0VSwgY29udGVudHMtPmJ5dGVMZW5ndGgoKSk7CisKKyAg
ICBhdXRvIGNvbnRlbnRzRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZW50cy0+ZGF0
YSgpKTsKKyAgICBFWFBFQ1RfTkUoZGF0YSwgY29udGVudHNEYXRhKTsKKyAgICBFWFBFQ1RfRVEo
MVUsIGNvbnRlbnRzRGF0YVswXSk7CisgICAgRVhQRUNUX0VRKDFVLCBjb250ZW50c0RhdGFbNTEy
XSk7CisgICAgRVhQRUNUX0VRKDFVLCBjb250ZW50c0RhdGFbMTAyM10pOworCisgICAgRVhQRUNU
X05PVF9OVUxMKGJ1ZmZlci5tZXRhbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9tYWMvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lDb21tYW5kUXVldWUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5
ZDQ0NDBkN2I2MjA5ZjZhZTEzYTgyNGYxMzNiNmZlNjg3ZDU4NgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5Q29tbWFuZFF1
ZXVlLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5VGVzdC5oIgorI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9H
UFVMZWdhY3lEZXZpY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVF9GKEdQVUxlZ2FjeSwgQ29tbWFuZFF1ZXVlQ3JlYXRl
KQoreworICAgIEdQVUxlZ2FjeURldmljZSBkZXZpY2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3
YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBwb3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2Vy
ZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZpY2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQg
Y2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVsbC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlIGNvbW1hbmRRdWV1ZSB7IGRl
dmljZSB9OworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgY29tbWFuZFF1ZXVlLmxhYmVsKCkpOwor
CisgICAgRVhQRUNUX05PVF9OVUxMKGNvbW1hbmRRdWV1ZS5tZXRhbCgpKTsKKworICAgIC8vIElm
IHlvdSBoYXZlbid0IHNldCBhIGxhYmVsLCB3ZSBqdXN0IHVzZSB0aGUgcHJlZml4LgorICAgIEVY
UEVDVF9TVFJFUSgiY29tLmFwcGxlLldlYktpdCIsIGNvbW1hbmRRdWV1ZS5tZXRhbCgpLmxhYmVs
LlVURjhTdHJpbmcpOworCisgICAgY29tbWFuZFF1ZXVlLnNldExhYmVsKCJ0aGlzLmlzLmEudGVz
dCJfcyk7CisKKyAgICAvLyBUaGUgV2ViS2l0IEFQSSBkb2Vzbid0IHByZWZpeC4KKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInRoaXMuaXMuYS50ZXN0IiwgY29tbWFuZFF1ZXVlLmxhYmVsKCkpOworCisg
ICAgLy8gQnV0IHRoZSB1bmRlcmx5aW5nIE1ldGFsIG9iamVjdCBsYWJlbCB3aWxsIGhhdmUgb25l
LgorICAgIEVYUEVDVF9TVFJFUSgiY29tLmFwcGxlLldlYktpdC50aGlzLmlzLmEudGVzdCIsIGNv
bW1hbmRRdWV1ZS5tZXRhbCgpLmxhYmVsLlVURjhTdHJpbmcpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lEZXZpY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeURldmljZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjZh
ODNkMDdlMGY2MGE3OTFlOTM0MzFlYTMyYjFhNzhkOWIyOWI1Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lEZXZpY2UubW0K
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lUZXN0LmgiCisjaW1wb3J0IDxN
ZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HUFVMZWdhY3lEZXZpY2UuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVT
VF9GKEdQVUxlZ2FjeSwgRGV2aWNlQ3JlYXRlKQoreworICAgIEdQVUxlZ2FjeURldmljZSBkZXZp
Y2U7CisKKyAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBw
b3NzaWJsZQorICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZp
Y2Ugb2JqZWN0LgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVs
bC4KKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRVhQRUNUX05PVF9O
VUxMKGRldmljZS5sYXllcigpKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGV2aWNlLnBsYXRmb3Jt
TGF5ZXIoKSk7CisgICAgRVhQRUNUX05PVF9OVUxMKGRldmljZS5tZXRhbCgpKTsKKyAgICBFWFBF
Q1RfTFQoMFUsIGRldmljZS5tZXRhbCgpLm5hbWUubGVuZ3RoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5RnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUZ1bmN0aW9uLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4ZDllMTAzZjllNTRlMWY5M2ViMDBhMTNlNzljODFiZTA0YTFjODUKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxlZ2FjeUZ1bmN0
aW9uLm1tCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lUZXN0LmgiCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvR1BVTGVnYWN5RGV2aWNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQVUxl
Z2FjeUZ1bmN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQVUxlZ2FjeUxpYnJhcnkuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVF9GKEdQVUxlZ2FjeSwgRnVuY3Rpb25BY2Nlc3NCeU5hbWUpCit7CisgICAgR1BVTGVnYWN5
RGV2aWNlIGRldmljZTsKKworICAgIC8vIE5vdCBhbGwgaGFyZHdhcmUgc3VwcG9ydHMgTWV0YWws
IHNvIGl0IGlzIHBvc3NpYmxlCisgICAgLy8gdGhhdCB3ZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUg
dGhlIE1UTERldmljZSBvYmplY3QuCisgICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZGV2aWNlIHNo
b3VsZCBiZSBudWxsLgorICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBF
WFBFQ1RfTk9UX05VTEwoZGV2aWNlLm1ldGFsKCkpOworCisgICAgR1BVTGVnYWN5TGlicmFyeSBs
aWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07CisKKyAgICBHUFVMZWdhY3lG
dW5jdGlvbiB2ZXJ0ZXhGdW5jdGlvbiB7IGxpYnJhcnksICJ2ZXJ0ZXhfbWFpbiJfcyB9OworICAg
IEVYUEVDVF9OT1RfTlVMTCh2ZXJ0ZXhGdW5jdGlvbi5tZXRhbCgpKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoInZlcnRleF9tYWluIiwgdmVydGV4RnVuY3Rpb24ubmFtZSgpKTsKKworICAgIEdQVUxl
Z2FjeUZ1bmN0aW9uIGZyYWdtZW50RnVuY3Rpb24geyBsaWJyYXJ5LCAiZnJhZ21lbnRfbWFpbiJf
cyB9OworICAgIEVYUEVDVF9OT1RfTlVMTChmcmFnbWVudEZ1bmN0aW9uLm1ldGFsKCkpOworICAg
IEVYUEVDVF9XS19TVFJFUSgiZnJhZ21lbnRfbWFpbiIsIGZyYWdtZW50RnVuY3Rpb24ubmFtZSgp
KTsKKworICAgIEdQVUxlZ2FjeUZ1bmN0aW9uIG5vbmV4aXN0ZW50RnVuY3Rpb24geyBsaWJyYXJ5
LCAibmFtZV90aGF0X2lzX25vdF9pbl9saWJyYXJ5Il9zIH07CisgICAgRVhQRUNUX05VTEwobm9u
ZXhpc3RlbnRGdW5jdGlvbi5tZXRhbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9tYWMvR1BVTGVnYWN5TGlicmFyeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9tYWMvR1BVTGVnYWN5TGlicmFyeS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmEzYTA0NjM4ZTlj
NTZjY2E3ZTRjNmY5OGY1YzljMTc1YmM0MjE3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lMaWJyYXJ5Lm1tCkBAIC0wLDAg
KzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5VGVzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dQ
VUxlZ2FjeURldmljZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HUFVMZWdhY3lMaWJyYXJ5Lmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K1RFU1RfRihHUFVMZWdhY3ksIExpYnJhcnlDcmVhdGUpCit7CisgICAgR1BVTGVnYWN5RGV2aWNl
IGRldmljZTsKKworICAgIC8vIE5vdCBhbGwgaGFyZHdhcmUgc3VwcG9ydHMgTWV0YWwsIHNvIGl0
IGlzIHBvc3NpYmxlCisgICAgLy8gdGhhdCB3ZSB3ZXJlIHVuYWJsZSB0byBjcmVhdGUgdGhlIE1U
TERldmljZSBvYmplY3QuCisgICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZGV2aWNlIHNob3VsZCBi
ZSBudWxsLgorICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBFWFBFQ1Rf
Tk9UX05VTEwoZGV2aWNlLm1ldGFsKCkpOworCisgICAgR1BVTGVnYWN5TGlicmFyeSBsaWJyYXJ5
IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07CisgICAgRVhQRUNUX05PVF9OVUxMKGxp
YnJhcnkubWV0YWwoKSk7Cit9CisKK1RFU1RfRihHUFVMZWdhY3ksIExpYnJhcnlTZXRMYWJlbCkK
K3sKKyAgICBHUFVMZWdhY3lEZXZpY2UgZGV2aWNlOworICAgIGlmICghZGV2aWNlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHUFVMZWdhY3lMaWJyYXJ5IGxpYnJhcnkgeyBkZXZpY2UsIGxpYnJh
cnlTb3VyY2VDb2RlKCkgfTsKKyAgICBFWFBFQ1RfTk9UX05VTEwobGlicmFyeS5tZXRhbCgpKTsK
KworICAgIGxpYnJhcnkuc2V0TGFiZWwoIlRlc3RMYWJlbCJfcyk7CisgICAgRVhQRUNUX0VRKCJU
ZXN0TGFiZWwiLCBsaWJyYXJ5LmxhYmVsKCkpOworfQorCitURVNUX0YoR1BVTGVnYWN5LCBMaWJy
YXJ5RnVuY3Rpb25OYW1lcykKK3sKKyAgICBHUFVMZWdhY3lEZXZpY2UgZGV2aWNlOworICAgIGlm
ICghZGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBHUFVMZWdhY3lMaWJyYXJ5IGxpYnJh
cnkgeyBkZXZpY2UsIGxpYnJhcnlTb3VyY2VDb2RlKCkgfTsKKyAgICBFWFBFQ1RfTk9UX05VTEwo
bGlicmFyeS5tZXRhbCgpKTsKKworICAgIGF1dG8gZnVuY3Rpb25OYW1lcyA9IGxpYnJhcnkuZnVu
Y3Rpb25OYW1lcygpOworICAgIEVYUEVDVF9FUSgyVSwgZnVuY3Rpb25OYW1lcy5zaXplKCkpOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgidmVydGV4X21haW4iLCBmdW5jdGlvbk5hbWVzWzBdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImZyYWdtZW50X21haW4iLCBmdW5jdGlvbk5hbWVzWzFdKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5VGVzdC5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL21hYy9HUFVMZWdhY3lUZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2NiYmZhYWVhYTNjZTk4NDM3NDI0NjMzNzk4ZDJjNjcwYjVhODEwZAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGVnYWN5
VGVzdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lt
cG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIEdQ
VUxlZ2FjeSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVw
KCkgZmluYWwKKyAgICB7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKwor
ICAgICAgICBtX2xpYnJhcnlTb3VyY2VDb2RlID0gInVzaW5nIG5hbWVzcGFjZSBtZXRhbDtcblwK
KyAgICAgICAgICAgIHN0cnVjdCBWZXJ0ZXhcblwKKyAgICAgICAgICAgIHtcblwKKyAgICAgICAg
ICAgIGZsb2F0NCBwb3NpdGlvbiBbW3Bvc2l0aW9uXV07XG5cCisgICAgICAgICAgICBmbG9hdDQg
Y29sb3I7XG5cCisgICAgICAgICAgICB9O1xuXAorICAgICAgICAgICAgdmVydGV4IFZlcnRleCB2
ZXJ0ZXhfbWFpbihkZXZpY2UgVmVydGV4ICp2ZXJ0aWNlcyBbW2J1ZmZlcigwKV1dLFxuXAorICAg
ICAgICAgICAgdWludCB2aWQgW1t2ZXJ0ZXhfaWRdXSlcblwKKyAgICAgICAgICAgIHtcblwKKyAg
ICAgICAgICAgIHJldHVybiB2ZXJ0aWNlc1t2aWRdO1xuXAorICAgICAgICAgICAgfVxuXAorICAg
ICAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oVmVydGV4IGluVmVydGV4IFtb
c3RhZ2VfaW5dXSlcblwKKyAgICAgICAgICAgIHtcblwKKyAgICAgICAgICAgIHJldHVybiBpblZl
cnRleC5jb2xvcjtcblwKKyAgICAgICAgICAgIH0iX3M7CisgICAgfQorCisgICAgY29uc3QgU3Ry
aW5nJiBsaWJyYXJ5U291cmNlQ29kZSgpIHsgcmV0dXJuIG1fbGlicmFyeVNvdXJjZUNvZGU7IH0K
KworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9saWJyYXJ5U291cmNlQ29kZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGlicmFy
eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVTGlicmFyeS5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkwNjUwYTE3ZGNjOWFkZjY2NTExMTIz
NDBhYzBjMTA5MDk0NTQzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUxpYnJhcnku
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVVRlc3QuaCIK
LSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgot
I2ltcG9ydCA8V2ViQ29yZS9HUFVEZXZpY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR1BVTGlicmFy
eS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewotCi1URVNUX0YoR1BVLCBMaWJyYXJ5Q3JlYXRlKQotewotICAgIEdQVURldmljZSBkZXZp
Y2U7Ci0KLSAgICAvLyBOb3QgYWxsIGhhcmR3YXJlIHN1cHBvcnRzIE1ldGFsLCBzbyBpdCBpcyBw
b3NzaWJsZQotICAgIC8vIHRoYXQgd2Ugd2VyZSB1bmFibGUgdG8gY3JlYXRlIHRoZSBNVExEZXZp
Y2Ugb2JqZWN0LgotICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgYmUgbnVs
bC4KLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRVhQRUNUX05PVF9O
VUxMKGRldmljZS5tZXRhbCgpKTsKLQotICAgIEdQVUxpYnJhcnkgbGlicmFyeSB7IGRldmljZSwg
bGlicmFyeVNvdXJjZUNvZGUoKSB9OwotICAgIEVYUEVDVF9OT1RfTlVMTChsaWJyYXJ5Lm1ldGFs
KCkpOwotfQotCi1URVNUX0YoR1BVLCBMaWJyYXJ5U2V0TGFiZWwpCi17Ci0gICAgR1BVRGV2aWNl
IGRldmljZTsKLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1BVTGli
cmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07Ci0gICAgRVhQRUNU
X05PVF9OVUxMKGxpYnJhcnkubWV0YWwoKSk7Ci0KLSAgICBsaWJyYXJ5LnNldExhYmVsKCJUZXN0
TGFiZWwiX3MpOwotICAgIEVYUEVDVF9FUSgiVGVzdExhYmVsIiwgbGlicmFyeS5sYWJlbCgpKTsK
LX0KLQotVEVTVF9GKEdQVSwgTGlicmFyeUZ1bmN0aW9uTmFtZXMpCi17Ci0gICAgR1BVRGV2aWNl
IGRldmljZTsKLSAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1BVTGli
cmFyeSBsaWJyYXJ5IHsgZGV2aWNlLCBsaWJyYXJ5U291cmNlQ29kZSgpIH07Ci0gICAgRVhQRUNU
X05PVF9OVUxMKGxpYnJhcnkubWV0YWwoKSk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9uTmFtZXMgPSBs
aWJyYXJ5LmZ1bmN0aW9uTmFtZXMoKTsKLSAgICBFWFBFQ1RfRVEoMlUsIGZ1bmN0aW9uTmFtZXMu
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoInZlcnRleF9tYWluIiwgZnVuY3Rpb25OYW1l
c1swXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJmcmFnbWVudF9tYWluIiwgZnVuY3Rpb25OYW1l
c1sxXSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVVRlc3QuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVVGVzdC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDE3MTQ1NDEyMDc4MjBhNTFhNDdjOWJkMjFhMzhiNjU0
YmNjYjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9tYWMvR1BVVGVzdC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW1wb3J0
ICJUZXN0LmgiCi0jaW1wb3J0ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgR1BVIDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBmaW5hbAot
ICAgIHsKLSAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotCi0gICAgICAgIG1f
bGlicmFyeVNvdXJjZUNvZGUgPSAidXNpbmcgbmFtZXNwYWNlIG1ldGFsO1xuXAotICAgICAgICAg
ICAgc3RydWN0IFZlcnRleFxuXAotICAgICAgICAgICAge1xuXAotICAgICAgICAgICAgZmxvYXQ0
IHBvc2l0aW9uIFtbcG9zaXRpb25dXTtcblwKLSAgICAgICAgICAgIGZsb2F0NCBjb2xvcjtcblwK
LSAgICAgICAgICAgIH07XG5cCi0gICAgICAgICAgICB2ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWlu
KGRldmljZSBWZXJ0ZXggKnZlcnRpY2VzIFtbYnVmZmVyKDApXV0sXG5cCi0gICAgICAgICAgICB1
aW50IHZpZCBbW3ZlcnRleF9pZF1dKVxuXAotICAgICAgICAgICAge1xuXAotICAgICAgICAgICAg
cmV0dXJuIHZlcnRpY2VzW3ZpZF07XG5cCi0gICAgICAgICAgICB9XG5cCi0gICAgICAgICAgICBm
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0ZXggaW5WZXJ0ZXggW1tzdGFnZV9pbl1d
KVxuXAotICAgICAgICAgICAge1xuXAotICAgICAgICAgICAgcmV0dXJuIGluVmVydGV4LmNvbG9y
O1xuXAotICAgICAgICAgICAgfSJfczsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGxpYnJh
cnlTb3VyY2VDb2RlKCkgeyByZXR1cm4gbV9saWJyYXJ5U291cmNlQ29kZTsgfQotCi1wcml2YXRl
OgotICAgIFN0cmluZyBtX2xpYnJhcnlTb3VyY2VDb2RlOwotfTsKLQotfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>