<?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>136113</bug_id>
          
          <creation_ts>2014-08-20 11:31:53 -0700</creation_ts>
          <short_desc>REGRESSION(r172798): Broke builds (Requested by msaboff on #webkit).</short_desc>
          <delta_ts>2014-08-20 11:38:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136108</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1030333</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 11:31:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/172798 broke the build:
Broke builds (Requested by msaboff on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030335</commentid>
    <comment_count>1</comment_count>
      <attachid>236885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 11:32:11 -0700</bug_when>
    <thetext>Created attachment 236885
ROLLOUT of r172798

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030336</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 11:33:59 -0700</bug_when>
    <thetext>Attachment 236885 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/wak/WKView.h:100:  The parameter name &quot;rect&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:100:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:106:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:106:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:108:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:108:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:109:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:113:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:115:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:116:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:119:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:119:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:125:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:126:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:135:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:135:  The parameter name &quot;r&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:136:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:142:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:142:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:144:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:144:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:145:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:145:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:146:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WKView.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:117:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/Color.h:118:  The parameter name &quot;b&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/AffineTransform.h:54:  The parameter name &quot;b&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/AffineTransform.h:54:  The parameter name &quot;d&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/AffineTransform.h:54:  The parameter name &quot;e&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/appcache/ApplicationCacheStorage.h:59:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/appcache/ApplicationCacheStorage.h:65:  The parameter name &quot;quota&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:53:  The parameter name &quot;obj&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:56:  The parameter name &quot;invocation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:60:  The parameter name &quot;invocation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadMessage.h:63:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/sql/SQLiteDatabase.h:142:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebCore/loader/cache/CachedResource.h:223:  The parameter name &quot;h&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/Editor.h:333:  The parameter name &quot;element&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:571:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
ERROR: Source/WebCore/dom/Document.h:573:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
ERROR: Source/WebCore/dom/Document.h:574:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
ERROR: Source/WebCore/platform/network/AuthenticationChallengeBase.h:51:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 52 in 104 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>1030337</commentid>
    <comment_count>3</comment_count>
      <attachid>236885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 11:38:00 -0700</bug_when>
    <thetext>Comment on attachment 236885
ROLLOUT of r172798

Clearing flags on attachment: 236885

Committed r172802: &lt;http://trac.webkit.org/changeset/172802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030338</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-20 11:38:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236885</attachid>
            <date>2014-08-20 11:32:11 -0700</date>
            <delta_ts>2014-08-20 11:38:00 -0700</delta_ts>
            <desc>ROLLOUT of r172798</desc>
            <filename>bug-136113-20140820113202.patch</filename>
            <type>text/plain</type>
            <size>205217</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmOGRhMGRlZGUxMmQ4
ZjIzNjU4ODgyYWE5ZGI0ZmM0NTQ3NThiZi4uN2NmNGE4NDI1NGY3N2ZhYjVhN2ZmNWJiMzlkZGUy
OWQ3MzY2YmYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA4LTIwICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTcyNzk4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM2MTEzCisKKyAgICAgICAgQnJva2UgYnVpbGRzIChSZXF1ZXN0ZWQg
YnkgbXNhYm9mZiBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisK
KyAgICAgICAgIkludHJvZHVjaW5nIFdFQkNPUkVfRVhQT1JUIG1hY3JvLiIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjEwOAorICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNzI3OTgKKwogMjAxNC0wOC0yMCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEludHJvZHVj
aW5nIFdFQkNPUkVfRVhQT1JUIG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmgKaW5kZXggYzA0NDg2Y2FjMTgwOTg4OGE4ODkxY2I3NmIwZDJmZGIyMDZm
Y2NhZi4uODUyZGMyM2Q4YTZiZjU5YTNlMjdiZmMyYmNkMDRiYzRjNmQ0OTI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
KTsKICAgICBzdGF0aWMgYm9vbCBrZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1T
dXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7CisgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3J5KENyZWF0ZUNETSwgQ0RNU3VwcG9ydHNLZXlT
eXN0ZW0sIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogICAgIH5DRE0oKTsKIAog
ICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNp
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmgKaW5kZXggMTU2NzdlNTAyNjA1YjEyZWM4ODQ2OTJjYzZiMWYyMjg3ZDU2NzE1OS4uNzAx
NGNkNjc4NmY1YjczMjU3YTAzZTc0ZjlhZmY3OTE2NDJkOWUzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpcyhET01XaW5kb3cqKTsKICAgICB2aXJ0dWFsIH5ET01XaW5kb3dTcGVlY2hTeW50aGVz
aXMoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoU3ludGhlc2lzKiBz
cGVlY2hTeW50aGVzaXMoRE9NV2luZG93Kik7CisgICAgc3RhdGljIFNwZWVjaFN5bnRoZXNpcyog
c3BlZWNoU3ludGhlc2lzKERPTVdpbmRvdyopOwogICAgIHN0YXRpYyBET01XaW5kb3dTcGVlY2hT
eW50aGVzaXMqIGZyb20oRE9NV2luZG93Kik7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXgg
NWIwNjNiYTVmZmY1YmEwMDc4YzdlOGIxOTUwM2YyMTgzYzhmMzM2ZC4uODA1YjMyYzk0N2VjMmM1
MjFiMDZiNmEzMDM5NmUwYzc3YjNmMGI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC01NCwxNSArNTQsMTUgQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIERhdGFiYXNlTWFuYWdlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VNYW5hZ2VyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERhdGFiYXNlTWFu
YWdlciYgbWFuYWdlcigpOworICAgIHN0YXRpYyBEYXRhYmFzZU1hbmFnZXImIG1hbmFnZXIoKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFi
YXNlUGF0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50Kik7CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQ
YXRoKTsKKyAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKICAgICBT
dHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIGlzQXZhaWxhYmxlKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKyAgICB2b2lk
IHNldElzQXZhaWxhYmxlKGJvb2wpOwogCiAgICAgLy8gVGhpcyBnZXRzIGEgRGF0YWJhc2VDb250
ZXh0IGZvciB0aGUgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCiAgICAgLy8gSWYg
b25lIGRvZXNuJ3QgYWxyZWFkeSBleGlzdCwgaXQgd2lsbCBjcmVhdGUgYSBuZXcgb25lLgpAQCAt
ODYsMjQgKzg2LDI0IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPERhdGFiYXNlPiBvcGVuRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiwgRGF0
YWJhc2VFcnJvciYpOwogICAgIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVuRGF0YWJhc2VT
eW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIERhdGFi
YXNlRXJyb3ImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOwogCiAgICAgU3RyaW5nIGZ1
bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKTsKIAogICAgIGJvb2wgaGFzRW50cnlGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9yaWdpbnMo
VmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiByZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxT
dHJpbmc+JiByZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIERhdGFiYXNlRGV0YWlscyBkZXRh
aWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOworICAg
IHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIHJlc3VsdCk7Cisg
ICAgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlP
cmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworICAgIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlP
cmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
ZWxldGVBbGxEYXRhYmFzZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU9yaWdp
bihTZWN1cml0eU9yaWdpbiopOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsK
KyAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCmluZGV4IGUwZWM2MGY1MzAzY2E0NjFiMzQ5OGJh
ZTZkMWU2ZGNlZjkwYzlkNTUuLmE4NDRiMGJiNTM4OTgxOWI0MzI1MjBlMzhjMWEyMmQxMmJhZjQw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBEYXRhYmFzZVRyYWNrZXIgewog
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUcmFja2VyKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEYXRhYmFzZVRyYWNr
ZXImIHRyYWNrZXIoKTsKKyAgICBzdGF0aWMgRGF0YWJhc2VUcmFja2VyJiB0cmFja2VyKCk7CiAg
ICAgLy8gVGhpcyBzaW5nbGV0b24gd2lsbCBwb3RlbnRpYWxseSBiZSB1c2VkIGZyb20gbXVsdGlw
bGUgd29ya2VyIHRocmVhZHMgYW5kIHRoZSBwYWdlJ3MgY29udGV4dCB0aHJlYWQgc2ltdWx0YW5l
b3VzbHkuICBUbyBrZWVwIHRoaXMgc2FmZSwgaXQncwogICAgIC8vIGN1cnJlbnRseSB1c2luZyA0
IGxvY2tzLiAgSW4gb3JkZXIgdG8gYXZvaWQgZGVhZGxvY2sgd2hlbiB0YWtpbmcgbXVsdGlwbGUg
bG9ja3MsIHlvdSBtdXN0IHRha2UgdGhlbSBpbiB0aGUgY29ycmVjdCBvcmRlcjoKICAgICAvLyBt
X2RhdGFiYXNlR3VhcmQgYmVmb3JlIHF1b3RhTWFuYWdlciBpZiBib3RoIGxvY2tzIGFyZSBuZWVk
ZWQuCkBAIC05OSwxOCArOTksMTggQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRlRGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlbGV0ZURhdGFiYXNlRmlsZUlmRW1w
dHkoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2Vz
KCk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eShjb25zdCBTdHJp
bmcmKTsKIAogICAgIC8vIE1vYmlsZVNhZmFyaSB3aWxsIGdyYWIgdGhpcyBtdXRleCBvbiB0aGUg
bWFpbiB0aHJlYWQgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSB0YXNrIHRvIAogICAgIC8vIGNsZWFu
IHVwIHplcm8gYnl0ZSBkYXRhYmFzZSBmaWxlcy4gIEFueSBvcGVyYXRpb25zIHRvIG9wZW4gbmV3
IGRhdGFiYXNlIHdpbGwgaGF2ZSB0bwogICAgIC8vIHdhaXQgZm9yIHRoYXQgdGFzayB0byBmaW5p
c2ggYnkgd2FpdGluZyBvbiB0aGlzIG11dGV4LgogICAgIHN0YXRpYyBNdXRleCYgb3BlbkRhdGFi
YXNlTXV0ZXgoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbXB0eURh
dGFiYXNlRmlsZXNSZW1vdmFsVGFza1dpbGxCZVNjaGVkdWxlZCgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrRGlkRmluaXNoKCk7
CisgICAgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hl
ZHVsZWQoKTsKKyAgICBzdGF0aWMgdm9pZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0Rp
ZEZpbmlzaCgpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YWJhc2VzUGF1
c2VkKGJvb2wpOworICAgIHZvaWQgc2V0RGF0YWJhc2VzUGF1c2VkKGJvb2wpOwogI2VuZGlmCiAg
ICAgCiAgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDcyNjhiOTg1ODBk
MDQ1ZDAwZTE1MWVjOTcwZmE5YmUwODNhYjQ5YTMuLmE0ZWJkMDNhZGRhZThhYzVlMjlkY2E4ZjI1
NzMwNmMyY2EwZDE1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCkBAIC03NywxMiArNzcsMTIgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEFYT2Jq
ZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+QVhPYmplY3RDYWNoZSgpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnRGb3JQ
YWdlKGNvbnN0IFBhZ2UqKTsKKyAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNl
ZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSopOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcm9v
dCBvYmplY3QgZm9yIHRoZSBlbnRpcmUgZG9jdW1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVjdCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHJvb3RPYmplY3QoKTsKICAgICAvLyBSZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgYSBzcGVj
aWZpYyBmcmFtZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290T2Jq
ZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICAKICAgICAvLyBGb3IgQVggb2JqZWN0cyB3aXRoIGVs
ZW1lbnRzIHRoYXQgYmFjayB0aGVtLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldE9yQ3Jl
YXRlKFJlbmRlck9iamVjdCopOwpAQCAtMTI3LDExICsxMjcsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgcmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpOwogCiAjaWYgSEFW
RShBQ0NFU1NJQklMSVRZKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJsZUFj
Y2Vzc2liaWxpdHkoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNhYmxlQWNj
ZXNzaWJpbGl0eSgpOworICAgIHN0YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaXNhYmxlQWNjZXNzaWJpbGl0eSgpOwogCiAgICAgLy8gRW5oYW5jZWQg
dXNlciBpbnRlcmZhY2UgYWNjZXNzaWJpbGl0eSBjYW4gYmUgdG9nZ2xlZCBieSB0aGUgYXNzaXN0
aXZlIHRlY2hub2xvZ3kuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RW5oYW5j
ZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShib29sIGZsYWcpOworICAgIHN0YXRpYyB2b2lk
IHNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKTsKICAgICAK
ICAgICBzdGF0aWMgYm9vbCBhY2Nlc3NpYmlsaXR5RW5hYmxlZCgpIHsgcmV0dXJuIGdBY2Nlc3Np
YmlsaXR5RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIGFjY2Vzc2liaWxpdHlFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VFbmFibGVkKCkgeyByZXR1cm4gZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJ
bnRlcmZhY2VFbmFibGVkOyB9CkBAIC0yMzYsOCArMjM2LDggQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPE5vZGUqLCBBWElEPiBtX25vZGVPYmplY3RNYXBwaW5nOwogICAgIEhhc2hTZXQ8Tm9kZSo+
IG1fdGV4dE1hcmtlck5vZGVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBWENvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGU+IG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuYWJsZWQ7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VF
bmFibGVkOworICAgIHN0YXRpYyBib29sIGdBY2Nlc3NpYmlsaXR5RW5hYmxlZDsKKyAgICBzdGF0
aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUVuYWJsZWQ7CiAgICAg
CiAgICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAppbmRleCA1YmY1NWFlNmRhMmYyMzAyZTgwZmZm
YWQ4YTU2YmVkNTY4ZTgxMDY3Li41NTcwNzI5YTQ4MTI5ZGE0ZTU5MTYyYTYzZWY5ZmY5N2ZkODdh
OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaApA
QCAtMzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRE9NV3JhcHBlcldvcmxkKHZtLCBpc05vcm1hbCkpOwogICAgIH0KLSAgICBXRUJDT1JF
X0VYUE9SVCB+RE9NV3JhcHBlcldvcmxkKCk7CisgICAgfkRPTVdyYXBwZXJXb3JsZCgpOwogCiAg
ICAgLy8gRnJlZSBhcyBtdWNoIG1lbW9yeSBoZWxkIG9udG8gYnkgdGhpcyB3b3JsZCBhcyBwb3Nz
aWJsZS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyV3JhcHBlcnMoKTsKKyAgICB2b2lk
IGNsZWFyV3JhcHBlcnMoKTsKIAogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93U2hlbGwoU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdp
bmRvd1NoZWxscy5hZGQoc2NyaXB0Q29udHJvbGxlcik7IH0KICAgICB2b2lkIGRpZERlc3Ryb3lX
aW5kb3dTaGVsbChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7IG1fc2NyaXB0
Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLnJlbW92ZShzY3JpcHRDb250cm9sbGVyKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggZWQwYmY1MjczMDZhYmY1MTQx
N2MxNmVmYTkwNzdjOGE5NmM2ODE3Ny4uNDQ1ZDJiNGVmNDZhYzI0YjgxNjU3MTUyYTFjMzU0MWNh
YzhhZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnN0
YW5jZT4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIEluc3RhbmNlKFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4pOworICAgIEluc3RhbmNlKFBhc3NSZWZQdHI8Um9vdE9iamVjdD4pOwogCiAg
ICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWFp
biBlbnRyeSBwb2ludHMgaW50bwogICAgIC8vIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb25zLiAg
VGhleSBjYW4gYmUgdXNlZCB0byBlc3RhYmxpc2ggYW5kIGNsZWFudXAKQEAgLTc5LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZW5kKCk7CiAKICAgICB2aXJ0dWFsIENsYXNzKiBnZXRDbGFz
cygpIGNvbnN0ID0gMDsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU09iamVjdCogY3JlYXRlUnVudGlt
ZU9iamVjdChFeGVjU3RhdGUqKTsKKyAgICBKU09iamVjdCogY3JlYXRlUnVudGltZU9iamVjdChF
eGVjU3RhdGUqKTsKICAgICB2b2lkIHdpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpOwogCiAg
ICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5
LgpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIAogICAgIFJvb3RPYmplY3QqIHJvb3RPYmpl
Y3QoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkluc3RhbmNlKCk7Cisg
ICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyB9CkBAIC0x
MTAsNyArMTEwLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXJ0
dWFsQmVnaW4oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEVuZCgpIHsgfQotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgUnVudGltZU9iamVjdCogbmV3UnVudGltZU9iamVjdChFeGVj
U3RhdGUqKTsKKyAgICB2aXJ0dWFsIFJ1bnRpbWVPYmplY3QqIG5ld1J1bnRpbWVPYmplY3QoRXhl
Y1N0YXRlKik7CiAKICAgICBSZWZQdHI8Um9vdE9iamVjdD4gbV9yb290T2JqZWN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCAzOTE0MDg1MWMyN2FkOWMz
ODZlMzgxODQ4OTQ4NTRlMzk5ZDA5Mzk0Li5hOGFkOWE5YWZkMGNiNTBlNTY3NDhiMmZhMTdmODMx
NDk0YTlhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5nIG5hbWVzcGFjZSBCaW5kaW5n
czsKIAotV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVNZXRob2Q6OnNfaW5m
byA9IHsgIlJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVNZXRob2QpIH07Citjb25zdCBDbGFzc0luZm8gUnVudGlt
ZU1ldGhvZDo6c19pbmZvID0geyAiUnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU1ldGhvZCkgfTsKIAogUnVudGlt
ZU1ldGhvZDo6UnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgTWV0aG9kKiBtZXRob2QpCiAgICAgLy8gQ2FsbGVycyB3aWxsIG5l
ZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRo
aXMgbmF0aXZlIG9iamVjdCAibWV0aG9kIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgKaW5kZXggNmRiY2U3MDkyZTlmOGZlOGE4YjJiZTg2YzMyZjQzYWE1ZmNiMDZmYi4uMDE1
ZjAyZjcxZGQ0NDhlNzlhMDNmYjc1ZThiY2NiMzU0Y2M0ZTI0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTU5LDEyICs1OSwxMiBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUnVudGltZU1ldGhvZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEJpbmRpbmdzOjpNZXRob2QqKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3QgU3RyaW5nJik7CisgICAgUnVudGltZU1l
dGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJpbmRpbmdzOjpNZXRob2QqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0
aEdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggOTFmMDdi
YzUzN2NmMGYzZjIwMzBmNWVkNGZlZWM2MzI3MjRlYjIzOC4uMTBiMDFlZmQ4ZWY2NzU5MGE0ODYz
OTMwNmRiZTQ2ZjdiZDVkNGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNw
YWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1XRUJDT1JFX0VYUE9SVCBjb25zdCBD
bGFzc0luZm8gUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU9iamVjdCkgfTsKK2NvbnN0
IENsYXNzSW5mbyBSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lT2JqZWN0KSB9OwogCiBS
dW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIDogSlNEZXN0cnVjdGlibGVPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5k
ZXggNGQ5Nzc3YTk5M2E5ZjNlYWYzZjgzOGNlMjI0NjdjNjQ0YjEwNDljMi4uNWI1OWE1N2ViZjhl
ZDQwYTNmY2E3MWJjYTRkZDA5YWUzNTQzZTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgKQEAgLTQzLDE2ICs0MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBv
YmplY3Q7CiAgICAgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
KTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBSdW50aW1lT2JqZWN0KFZNJiwgU3Ry
dWN0dXJlKiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4pOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICBSdW50aW1lT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwg
UGFzc1JlZlB0cjxJbnN0YW5jZT4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9yb290LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKaW5kZXgg
ODQxYTY0ZTI4ZDFiMmY0ZmUwZTg3ZTRiNzAxZjhiODI2MThhZTZhOS4uNTgzNzlhNGMwOWU2NTNm
OTI4NjY1ZWY0YWMwM2FhZjE0ODA0ZDQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfcm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jv
b3QuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSb290T2JqZWN0IDogcHVibGljIFJlZkNvdW50
ZWQ8Um9vdE9iamVjdD4sIHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogICAgIGZyaWVu
ZCBjbGFzcyBKYXZhSlNPYmplY3Q7CiAKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5Sb290T2JqZWN0KCk7CisgICAgdmlydHVhbCB+Um9vdE9iamVjdCgpOwogICAgIAogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IGNyZWF0ZShjb25zdCB2b2lkKiBuYXRpdmVI
YW5kbGUsIEpTR2xvYmFsT2JqZWN0Kik7CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgZ2NJc1Byb3RlY3RlZChKU09iamVjdCopOwogCiAgICAgY29uc3Qgdm9pZCogbmF0aXZl
SGFuZGxlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIGNvbnN0OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25z
dDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCopOwogCiAgICAg
dm9pZCBhZGRSdW50aW1lT2JqZWN0KFZNJiwgUnVudGltZU9iamVjdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGUwNjI3MWZh
ODFjOTcwNTUwM2NjOGJhMWQ5OGFjMGNkNDEzYjFjZWEuLmRhMTIyMDNhNDUzNTgxZjYxOGMwZDlh
MmEwMWIzYmE5MTBhNzM3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFdFQkNPUkVfRVhQT1JUIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNzUmVmUHRyPE5v
ZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0ZWRT
dHlsZSwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBDU1NPTSBmdW5jdGlvbnMuIERvbid0IG1h
a2UgdGhlc2UgcHVibGljLgogICAgIHZpcnR1YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXggZmZmODNlOTdjNjI3
ZDViYWMxMWNmMDIwZGMzMWFhYjVmNTAzY2I2NC4uNDRjZGFiYzI4YjhmZGY3ZDI2NjM1ZTMzNTM4
NGNhMTk3ZmY0NWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCkBAIC01OCw3ICs1
OCw3IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUsIGNvbnN0
IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250
ZXh0KERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOworICAgIENTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQm
LCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1w
dHlTdHJpbmcoKSk7CiAKICAgICBVUkwgYmFzZVVSTDsKICAgICBTdHJpbmcgY2hhcnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmgKaW5kZXggZmE2NGJmNDY4NmU1ODY2NWQzMjkxODc2MTBkNmIwOWM5MWU1
NTA2My4uZDQxMzY2MjQyZjRiN2JjOWNlNGY1ZjgzMTIxZmExNTMxYzFlYzAzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfkNTU1ZhbHVl
KCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7Cisg
ICAgdm9pZCBkZXN0cm95KCk7CiAKIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2lzQ1NTT01T
YWZlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01XaW5kb3dDU1MuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01XaW5kb3dDU1MuaAppbmRleCBmNzU1ZjhhMzgyMjY0MTk0
YWU4MGI4MWNkNjlkYzk1NmNiOGFhMTk3Li43MDcwYWU2YTk5ODEzMTZlMmM3YzQ5YmM0MTAyNjdk
MTNmOTk0YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NV2luZG93Q1NTLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTVdpbmRvd0NTUy5oCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93Q1NTIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NV2luZG93Q1NTPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3NSZWZQdHI8RE9NV2luZG93Q1NTPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01XaW5kb3dDU1M+IGNyZWF0ZSgpOwogCiAgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJp
bmcmIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKICAgICBib29sIHN1cHBv
cnRzKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmgKaW5kZXggOTUwMDAwN2NmOGQxMjg0ZjJjYmJiZDA5NzczZDRi
ZDk2NzJkOTBkZi4uODE3ZTcyM2EwMTNjNTc4ZmI5NGE4NTUwZDkyYWFkODFmNmE2MjE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtMTM5LDcgKzEzOSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAg
U3R5bGVTaGVldENvbnRlbnRzKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAgICAgU3R5bGVTaGVl
dENvbnRlbnRzKGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyYpOwogCiAgICAgdm9pZCBjbGVhckNo
YXJzZXRSdWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCAwYTNlNjdjZmNh
MjMxNzRjYmY2ODg2NWM2ODc4ZmY0YTdmYzk1MTE3Li43NmJiM2RkOTA2OTQ0ZGY3NWZmZmRkODgw
ZTEwMmE1NDIyNWM3ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKQEAgLTMzLDcg
KzMzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBkYXRhTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKENoYXJhY3RlckRhdGEsIG1fZGF0YSk7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGVuZ3RoKCk7IH0KICAgICBTdHJpbmcgc3Vi
c3RyaW5nRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpZW50UmVjdC5oCmluZGV4IDlkMWQ4OWVlMjIzNTFkMjMxMDRjYzQ4MWEzZjIw
NzUxODZkNzY4YjEuLjVjOTU0ZjAzYjNlODlkYmMwMjJiOTk3MmI0NWZlYWJkMzdmYTJhZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NsaWVudFJlY3QuaApAQCAtNTAsOSArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQo
KTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50UmVjdCgp
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDbGllbnRSZWN0KGNvbnN0IEludFJl
Y3QmKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2xpZW50UmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKKyAgICAgICAgQ2xpZW50UmVjdCgpOworICAgICAgICBleHBsaWNpdCBDbGll
bnRSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgZXhwbGljaXQgQ2xpZW50UmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKIAogICAgICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIH07IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAppbmRleCBmMmY3ZDkxMjI4ZjI2YmJmZTE4ZDQ2OGUz
YmUwZjUxMGJiYWMyOWY1Li5hOTQ0YjE4YzMyZjU1ZGI2MDgxNzVkZmM1YzBmNWJhZmIxODU2MWJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaApAQCAtNDAsMTQgKzQwLDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENsaWVudFJlY3RMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpZW50UmVj
dExpc3QpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBjcmVh
dGUoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
Q2xpZW50UmVjdExpc3QocXVhZHMpKTsgfQotICAgICAgICBXRUJDT1JFX0VYUE9SVCB+Q2xpZW50
UmVjdExpc3QoKTsKKyAgICAgICAgfkNsaWVudFJlY3RMaXN0KCk7CiAKICAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIENsaWVudFJlY3QqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50UmVjdExp
c3QoKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2xpZW50UmVjdExpc3QoY29u
c3QgVmVjdG9yPEZsb2F0UXVhZD4mKTsKKyAgICAgICAgQ2xpZW50UmVjdExpc3QoKTsKKyAgICAg
ICAgZXhwbGljaXQgQ2xpZW50UmVjdExpc3QoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mKTsKIAog
ICAgICAgICBWZWN0b3I8UmVmUHRyPENsaWVudFJlY3Q+PiBtX2xpc3Q7CiAgICAgfTsgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA4NzlmYzA0MGExOTU3N2RiOWY2ODFjNjA0NDM2
ODI4ZGM1M2YzZjVhLi4yMjQwYzMxMThmMjEyMTBjYjc0NWQwODQzNjc4ODZjZDVjZjYzYWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTg4LDEzICs4OCwxMyBAQCBwdWJsaWM6
CiAgICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KICAg
ICBib29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkTm9kZUNvdW50KCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjaGlsZE5vZGVDb3VudCgpIGNvbnN0OworICAgIE5vZGUqIGNoaWxkTm9kZSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAgICBib29sIGluc2VydEJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKICAgICBib29sIHJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlbW92ZUNoaWxkKE5vZGUqIGNoaWxkLCBF
eGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29k
ZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBib29sIHJlbW92ZUNoaWxkKE5vZGUqIGNo
aWxkLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGJvb2wgYXBw
ZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG9ubHkgdXNlZCBk
dXJpbmcgcGFyc2luZy4KICAgICAvLyBUaGV5IGRvbid0IHNlbmQgRE9NIG11dGF0aW9uIGV2ZW50
cyBvciBoYW5kbGUgcmVwYXJlbnRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlci5oCmluZGV4IGJjM2JhYmI5MTc2M2Y2MThmM2NjYjQ4YzgzY2Ux
MjU3Nzk2ODNkMzcuLjBhMWRiMDMxZWRhNmQ4MWQ3MjQ5NmQ3YTkwMDViMGI4YzhmNjRlNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oCkBA
IC0zMywxMyArMzMsMTMgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3Mg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
OworICAgIGV4cGxpY2l0IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKKyAgICB2
aXJ0dWFsIH5Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigpOwogICAgIHZvaWQgb2JzZXJ2ZUNv
bnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uaAppbmRleCA3ZDhiOGU3MjlkMjIxZTgwNTU2NmIwYzllYjdkM2ExODVkMDcyZDEz
Li40NzRiMjIyNjBiNzUzYmMwZGViMWY1NTkwNDhmOWZhYmRhNDE3ZjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSos
IGNvbnN0IFVSTCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1F
VHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOworICAgIHN0YXRpYyBi
b29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwogCiBwcml2YXRlOgog
ICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4
IDFiN2YyMGViNDI3MGRkZjA4MTM2ZTY1YzA4MTBiMmU0NzFkMzY2ZjAuLjYzNDI4ZWY4MGE0MGMw
OWYzZWQ5MThhNmVlMTllNTM2YjAxM2ZjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
RGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB+RGF0
YVRyYW5zZmVyKCk7CisgICAgICAgIH5EYXRhVHJhbnNmZXIoKTsKIAogICAgICAgICBTdHJpbmcg
ZHJvcEVmZmVjdCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldERyb3BFZmZlY3QoY29uc3QgU3Ry
aW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuaAppbmRleCBmMTQxYTM1ODQy
OWM5N2M3OTNlYWNlMWY1YzRhNWU3OGQyZmJkOTE4Li4xZDUzYjUzMWZiOGI1ODUxZTJkNjE1OGI2
ODdhYmNkZTEzMWQwMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgRGV2aWNlTW90aW9uRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PERldmljZU1vdGlvbkRhdGE+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBBY2NlbGVyYXRpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24+IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2VsZXJh
dGlvbj4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZVgsIGRvdWJsZSB4LCBib29sIGNhblByb3ZpZGVZ
LCBkb3VibGUgeSwgYm9vbCBjYW5Qcm92aWRlWiwgZG91YmxlIHopOworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBY2NlbGVyYXRpb24+IGNyZWF0ZShib29sIGNhblByb3ZpZGVYLCBkb3VibGUg
eCwgYm9vbCBjYW5Qcm92aWRlWSwgZG91YmxlIHksIGJvb2wgY2FuUHJvdmlkZVosIGRvdWJsZSB6
KTsKIAogICAgICAgICBib29sIGNhblByb3ZpZGVYKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92
aWRlWDsgfQogICAgICAgICBib29sIGNhblByb3ZpZGVZKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Q
cm92aWRlWTsgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBSb3RhdGlv
blJhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU+
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRy
PFJvdGF0aW9uUmF0ZT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEs
IGJvb2wgY2FuUHJvdmlkZUJldGEsICBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEs
IGRvdWJsZSBnYW1tYSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJvdGF0aW9uUmF0ZT4g
Y3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlk
ZUJldGEsICBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7
CiAKICAgICAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2NhblBy
b3ZpZGVBbHBoYTsgfQogICAgICAgICBib29sIGNhblByb3ZpZGVCZXRhKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5Qcm92aWRlQmV0YTsgfQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGJvb2wgbV9jYW5Qcm92aWRlR2FtbWE7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERldmljZU1vdGlvbkRhdGE+IGNyZWF0ZShQYXNzUmVmUHRyPEFjY2VsZXJhdGlvbj4gYWNj
ZWxlcmF0aW9uLCBQYXNzUmVmUHRyPEFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc1JlZlB0cjxSb3RhdGlvblJhdGU+IHJvdGF0aW9uUmF0ZSwgYm9vbCBjYW5Qcm92aWRlSW50
ZXJ2YWwsIGRvdWJsZSBpbnRlcnZhbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbkRhdGEuaAppbmRleCA0OGE3YWFjYTkwZjE4MDJmYzYxNzA1MTA4ZDdjNjYwYzBkY2Q2
MzE0Li5mYWNmOTE3MDk0ZTg3NDIwYmI1N2YzMDk4MzZlYzIyZjAwZTViNzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCkBAIC0zNSw5ICszNSw5IEBAIGNs
YXNzIERldmljZU9yaWVudGF0aW9uRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPERldmljZU9yaWVu
dGF0aW9uRGF0YT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU9yaWVu
dGF0aW9uRGF0YT4gY3JlYXRlKCk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gY3JlYXRlKGJvb2wg
Y2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJs
ZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hLCBib29sIGNhblByb3Zp
ZGVDb21wYXNzSGVhZGluZywgZG91YmxlIGNvbXBhc3NIZWFkaW5nLCBib29sIGNhblByb3ZpZGVD
b21wYXNzQWNjdXJhY3ksIGRvdWJsZSBjb21wYXNzQWNjdXJhY3kpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhh
LCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNh
blByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVDb21wYXNzSGVhZGlu
ZywgZG91YmxlIGNvbXBhc3NIZWFkaW5nLCBib29sIGNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3ks
IGRvdWJsZSBjb21wYXNzQWNjdXJhY3kpOwogI2Vsc2UKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShib29sIGNhblByb3Zp
ZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwg
Ym9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBjYW5Qcm92aWRlQWJzb2x1
dGUgPSBmYWxzZSwgYm9vbCBhYnNvbHV0ZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91
YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92
aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBjYW5Qcm92aWRlQWJzb2x1dGUgPSBmYWxzZSwg
Ym9vbCBhYnNvbHV0ZSA9IGZhbHNlKTsKICNlbmRpZgogCiAgICAgZG91YmxlIGFscGhhKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE1OGZiYzM3ZTRkY2IxZmJmMzBlMjdjY2EwYWZm
MDEwZGJmOGZlMTkuLjAxNDE1YWI5YzExNmQ0OWRlNWNiNmQ5NWVhZGJlNWE1ZGE5MDk5MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yOTksNyArMjk5LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8
RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CisgICAgc3RhdGljIEhhc2hTZXQ8RG9jdW1lbnQq
PiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVyeU1h
dGNoZXIoKTsKIApAQCAtNDIxLDggKzQyMSw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01hbmlm
ZXN0KCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxUZXh0PiBjcmVh
dGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIFBhc3NSZWZQdHI8VGV4dD4g
Y3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBQYXNzUmVmUHRyPENvbW1l
bnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBQYXNzUmVmUHRyPENE
QVRBU2VjdGlvbj4gY3JlYXRlQ0RBVEFTZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVhdGVQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gY3JlYXRlRW50aXR5UmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW1wb3J0
Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbXBv
cnROb2RlKGltcG9ydGVkTm9kZSwgdHJ1ZSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBp
bXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50TlMo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudE5T
KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogICAgIGJvb2wg
Y3NzUmVnaW9uc0VuYWJsZWQoKSBjb25zdDsKQEAgLTU1OCw3ICs1NTgsNyBAQCBwdWJsaWM6CiAg
ICAgICogY29uc3RydWN0ZWQgZnJvbSB0aGVzZSB3aGljaCBpcyB1c2VkIHRvIGNyZWF0ZSB0aGUg
YSBuZXcgc3R5bGUgc2VsZWN0b3Igd2hpY2ggY29sbGF0ZXMgYWxsIG9mIHRoZSBzdHlsZXNoZWV0
cwogICAgICAqIGZvdW5kIGFuZCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgZGVyaXZlZCBzdHls
ZXMgZm9yIGFsbCByZW5kZXJpbmcgb2JqZWN0cy4KICAgICAgKi8KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKKyAg
ICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKIAog
ICAgIHZvaWQgc2NoZWR1bGVPcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRlKCk7CiAKQEAgLTU2OCwx
NCArNTY4LDE0IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiBmb3JtRWxlbWVudHNTdGF0
ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lVmlldyogdmlldygpIGNv
bnN0OyAvLyBjYW4gYmUgTlVMTAorICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OyAvLyBjYW4g
YmUgTlVMTAogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0gLy8g
Y2FuIGJlIE5VTEwKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBwYWdlKCkgY29uc3Q7IC8vIGNh
biBiZSBOVUxMCi0gICAgV0VCQ09SRV9FWFBPUlQgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3Q7
IC8vIGNhbiBiZSBOVUxMCisgICAgUGFnZSogcGFnZSgpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAor
ICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogCiAgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NS
ZWZQdHI8UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CisgICAgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRl
UmFuZ2UoKTsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBjcmVhdGVOb2RlSXRlcmF0
b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywKICAgICAgICAgUGFzc1JlZlB0cjxO
b2RlRmlsdGVyPiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJik7
CkBAIC01ODgsMjQgKzU4OCwyNCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0PiBjcmVh
dGVFZGl0aW5nVGV4dE5vZGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHJlY2FsY1N0eWxl
KFN0eWxlOjpDaGFuZ2UgPSBTdHlsZTo6Tm9DaGFuZ2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIHZvaWQgdXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGJvb2wgdXBkYXRlU3R5bGVJZk5lZWRlZEZvck5vZGUoY29uc3QgTm9kZSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5b3V0KCk7CisgICAgdm9pZCB1cGRhdGVMYXlv
dXQoKTsKICAgICBlbnVtIFJ1blBvc3RMYXlvdXRUYXNrcyB7CiAgICAgICAgIFJ1blBvc3RMYXlv
dXRUYXNrc0FzeW5jaHJvbm91c2x5LAogICAgICAgICBSdW5Qb3N0TGF5b3V0VGFza3NTeW5jaHJv
bm91c2x5LAogICAgIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoUnVuUG9zdExheW91dFRhc2tzID0gUnVuUG9zdExheW91dFRh
c2tzQXN5bmNocm9ub3VzbHkpOworICAgIHZvaWQgdXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKFJ1blBvc3RMYXlvdXRUYXNrcyA9IFJ1blBvc3RMYXlvdXRUYXNrc0FzeW5jaHJv
bm91c2x5KTsKICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnRJZ25vcmlu
Z1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50Kik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
cGFnZSBib3ggKG1hcmdpbiBib3hlcyBhbmQgcGFnZSBib3JkZXJzKSBpcyB2aXNpYmxlLgotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKKyAg
ICBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCk7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBwcmVmZXJyZWQgcGFnZSBzaXplIGFuZCBtYXJnaW5zIGluIHBpeGVscywgYXNzdW1pbmcg
OTYKICAgICAvLyBwaXhlbHMgcGVyIGluY2guIHBhZ2VTaXplLCBtYXJnaW5Ub3AsIG1hcmdpblJp
Z2h0LCBtYXJnaW5Cb3R0b20sCiAgICAgLy8gbWFyZ2luTGVmdCBtdXN0IGJlIGluaXRpYWxpemVk
IHRvIHRoZSBkZWZhdWx0IHZhbHVlcyB0aGF0IGFyZSB1c2VkIGlmCiAgICAgLy8gYXV0byBpcyBz
cGVjaWZpZWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGlu
dCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBpbnQmIG1hcmdpbkxlZnQpOworICAg
IHZvaWQgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYg
cGFnZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJv
dHRvbSwgaW50JiBtYXJnaW5MZWZ0KTsKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7
IH0KIApAQCAtNjI1LDE0ICs2MjUsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGl2aW5nUmVu
ZGVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlclZpZXcoKSAmJiAhcmVuZGVyVHJlZUJlaW5n
RGVzdHJveWVkKCk7IH0KIAogICAgIEFYT2JqZWN0Q2FjaGUqIGV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUoKSBjb25zdDsKKyAgICBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAg
ICAgdm9pZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAogICAgIC8vIHRvIGdldCB2aXN1YWxseSBv
cmRlcmVkIGhlYnJldyBhbmQgYXJhYmljIHBhZ2VzIHJpZ2h0CiAgICAgdm9pZCBzZXRWaXN1YWxs
eU9yZGVyZWQoKTsKICAgICBib29sIHZpc3VhbGx5T3JkZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlzdWFsbHlPcmRlcmVkOyB9CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcigpIGNvbnN0OworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIoKSBjb25zdDsK
IAogICAgIHZvaWQgb3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwogICAgIHZvaWQg
aW1wbGljaXRPcGVuKCk7CkBAIC02NjYsNyArNjY2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgYmFzZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVRhcmdldDsgfQogICAgIHZv
aWQgcHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFVS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJM
T3ZlcnJpZGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVS
TCYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzM4LDcgKzczOCw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgc2VsZWN0ZWRTdHlsZXNoZWV0U2V0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFN0
eWxlc2hlZXRTZXQoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNl
dEZvY3VzZWRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4sIEZvY3VzRGlyZWN0aW9uID0gRm9j
dXNEaXJlY3Rpb25Ob25lKTsKKyAgICBib29sIHNldEZvY3VzZWRFbGVtZW50KFBhc3NSZWZQdHI8
RWxlbWVudD4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKICAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZEVsZW1lbnQuZ2V0
KCk7IH0KICAgICBVc2VyQWN0aW9uRWxlbWVudFNldCYgdXNlckFjdGlvbkVsZW1lbnRzKCkgIHsg
cmV0dXJuIG1fdXNlckFjdGlvbkVsZW1lbnRzOyB9CiAgICAgY29uc3QgVXNlckFjdGlvbkVsZW1l
bnRTZXQmIHVzZXJBY3Rpb25FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckFjdGlvbkVs
ZW1lbnRzOyB9CkBAIC03NTksNyArNzU5LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGNzc1Rh
cmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzVGFyZ2V0OyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBjc3NUYXJnZXRNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRG9jdW1l
bnQsIG1fY3NzVGFyZ2V0KTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjKCk7CisgICAgdm9pZCBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7
CiAgICAgdm9pZCBzY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCB1bnNjaGVkdWxlU3R5
bGVSZWNhbGMoKTsKICAgICBib29sIGhhc1BlbmRpbmdTdHlsZVJlY2FsYygpIGNvbnN0OwpAQCAt
ODA2LDcgKzgwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZvaWQg
c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CiAgICAgRXZlbnRMaXN0ZW5lciogZ2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFdpbmRvd0V2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiA9IDApOworICAgIHZvaWQgZGlzcGF0
Y2hXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4g
PSAwKTsKICAgICB2b2lkIGRpc3BhdGNoV2luZG93TG9hZEV2ZW50KCk7CiAKICAgICBQYXNzUmVm
UHRyPEV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgRXhjZXB0aW9u
Q29kZSYpOwpAQCAtODgyLDcgKzg4Miw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBvcmlnaW4o
KSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkb21haW4oKSBjb25zdDsKKyAg
ICBTdHJpbmcgZG9tYWluKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREb21haW4oY29uc3QgU3RyaW5n
JiBuZXdEb21haW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyBsYXN0TW9kaWZpZWQo
KSBjb25zdDsKQEAgLTkyNywxMCArOTI3LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBo
YXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICBz
dGF0aWMgYm9vbCBoYXNWYWxpZE5hbWVzcGFjZUZvckF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1lbnQqIGJvZHkoKSBjb25zdDsK
KyAgICBIVE1MRWxlbWVudCogYm9keSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Qm9keShQYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
SFRNTEhlYWRFbGVtZW50KiBoZWFkKCk7CisgICAgSFRNTEhlYWRFbGVtZW50KiBoZWFkKCk7CiAK
ICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMoKSBjb25zdCB7IHJldHVybiAq
bV9tYXJrZXJzOyB9CiAKQEAgLTk5Miw3ICs5OTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNO
b2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb2Rlc1dpdGhQ
bGFjZWhvbGRlclN0eWxlOyB9CiAgICAgdm9pZCBzZXRIYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0
eWxlKCkgeyBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUgPSB0cnVlOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8SWNvblVSTD4mIHNob3J0Y3V0SWNvblVSTHMoKTsK
KyAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIHNob3J0Y3V0SWNvblVSTHMoKTsKICAgICBjb25z
dCBWZWN0b3I8SWNvblVSTD4mIGljb25VUkxzKGludCBpY29uVHlwZXNNYXNrKTsKICAgICB2b2lk
IGFkZEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2l6ZSwgSWNvblR5cGUpOwogCkBAIC0xMDUyLDEzICsxMDUyLDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNr
cyhFbGVtZW50Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdl
ZENhbGxiYWNrcyhFbGVtZW50Kik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3Vs
ZENyZWF0ZVJlbmRlcmVycyhib29sKTsKKyAgICB2b2lkIHNldFNob3VsZENyZWF0ZVJlbmRlcmVy
cyhib29sKTsKICAgICBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVycygpOwogCiAgICAgdm9pZCBz
ZXREZWNvZGVyKFBhc3NSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4pOwogICAgIFRleHRSZXNv
dXJjZURlY29kZXIqIGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+KSBjb25zdDsKICAgICB2b2lkIGRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoTENo
YXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuKSBjb25zdAogICAgIHsKQEAgLTEwNzQsNyArMTA3NCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lRWxlbWVudHNTaG91bGRJZ25vcmVTY3JvbGxpbmco
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRWxlbWVudHNTaG91bGRJZ25vcmVTY3JvbGxpbmc7IH0K
IAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eShib29sIGYpIHsgbV9hbm5vdGF0ZWRSZWdpb25zRGly
dHkgPSBmOyB9CisgICAgdm9pZCBzZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkoYm9vbCBmKSB7IG1f
YW5ub3RhdGVkUmVnaW9uc0RpcnR5ID0gZjsgfQogICAgIGJvb2wgYW5ub3RhdGVkUmVnaW9uc0Rp
cnR5KCkgY29uc3QgeyByZXR1cm4gbV9hbm5vdGF0ZWRSZWdpb25zRGlydHk7IH0KICAgICBib29s
IGhhc0Fubm90YXRlZFJlZ2lvbnMgKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbm5vdGF0ZWRSZWdp
b25zOyB9CiAgICAgdm9pZCBzZXRIYXNBbm5vdGF0ZWRSZWdpb25zKGJvb2wgZikgeyBtX2hhc0Fu
bm90YXRlZFJlZ2lvbnMgPSBmOyB9CkBAIC0xMDg0LDggKzEwODQsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogc3ZnRXh0ZW5zaW9u
cygpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogYWNjZXNzU1ZH
RXh0ZW5zaW9ucygpOworICAgIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogc3ZnRXh0ZW5z
aW9ucygpOworICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogYWNjZXNzU1ZHRXh0ZW5zaW9ucygp
OwogCiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAgICAgdm9pZCBpbml0Q29udGVu
dFNlY3VyaXR5UG9saWN5KCk7CkBAIC0xMTEwLDggKzExMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c3RhdGVPYmplY3QpOwogICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlJiBldmVudFF1ZXVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ldmVudFF1ZXVlOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKKyAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKKyAgICB2b2lkIHJlbW92ZU1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgICBNZWRpYUNhblN0YXJ0TGlz
dGVuZXIqIHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKQEAgLTExMjUsMTIgKzExMjUsMTIgQEAgcHVibGljOgogICAgIH07CiAKICAg
ICB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiwgdW5zaWduZWQgc2hv
cnQgZmxhZ3MsIEZ1bGxTY3JlZW5DaGVja1R5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVl
bigpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2Via2l0V2lsbEVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoRWxlbWVudCopOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVs
ZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxl
bWVudCopOworICAgIHZvaWQgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1l
bnQqKTsKICAgICAKICAgICB2b2lkIHNldEZ1bGxTY3JlZW5SZW5kZXJlcihSZW5kZXJGdWxsU2Ny
ZWVuKik7CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbFNjcmVlblJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9mdWxsU2NyZWVuUmVuZGVyZXI7IH0KQEAgLTExNDEsNyArMTE0MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZ1bGxTY3JlZW5FbGVtZW50UmVtb3ZlZCgpOwogICAgIHZvaWQgcmVt
b3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1YnRyZWUoTm9kZSosIGJvb2wgYW1vbmdDaGlsZHJlbk9u
bHkgPSBmYWxzZSk7CiAgICAgYm9vbCBpc0FuaW1hdGluZ0Z1bGxTY3JlZW4oKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCk7CisgICAg
dm9pZCBzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wpOwogCiAgICAgLy8gVzNDIEFQSQogICAg
IGJvb2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdDsKQEAgLTExOTAsOCArMTE5MCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRETlNQcmVmZXRjaCgpOwogCiAgICAgdW5zaWduZWQg
d2hlZWxFdmVudEhhbmRsZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudEhhbmRs
ZXJDb3VudDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQWRkV2hlZWxFdmVudEhhbmRs
ZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVy
KCk7CisgICAgdm9pZCBkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigpOworICAgIHZvaWQgZGlkUmVt
b3ZlV2hlZWxFdmVudEhhbmRsZXIoKTsKIAogICAgIGRvdWJsZSBsYXN0SGFuZGxlZFVzZXJHZXN0
dXJlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0SGFuZGxlZFVzZXJHZXN0dXJlVGlt
ZXN0YW1wOyB9CiAgICAgdm9pZCByZXNldExhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAo
KTsKQEAgLTE2MjMsOCArMTYyMyw4IEBAIHB1YmxpYzoKICAgICAvLyAgICAgIGRvY3VtZW50IGlm
IGl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgbWV0YSB0YWcuCiAgICAgLy8gICAgLSBpc1RlbGVwaG9u
ZU51bWJlclBhcnNpbmdFbmFibGVkKCkgPT0gaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dl
ZCgpICYmIHBhZ2UoKS0+c2V0dGluZ3MoKS0+aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxl
ZCgpCiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0Fs
bG93ZWQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGVsZXBob25lTnVtYmVy
UGFyc2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGlzVGVsZXBob25lTnVtYmVyUGFyc2lu
Z0FsbG93ZWQoKSBjb25zdDsKKyAgICBib29sIGlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJs
ZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgdm9pZCBzZXRQYXJzZXJGZWF0dXJl
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBEb2N1bWVudCosIHZvaWQq
IHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgKaW5kZXggNDc5NDlmZTgw
YmRkOWIxMWU2OGRhZTYyNTZlYTJiMzMwNmZiYjQ2My4uOTIzZTJiYTI1NTI3ODk4NWNhNDRhMmY3
ZGQxOTM3ZWNhMzc5MzcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgKQEAgLTEy
Niw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAgICAgYm9vbCBhY3RpdmVNYXRjaCgpIGNvbnN0OwogICAgIERvY3VtZW50TWFya2Vy
RGV0YWlscyogZGV0YWlscygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggYjg1YTM5MzQ0MjNlMTM5NjhjZDE0NWExN2JmMjFi
ZDZlNGFjYmIyYi4uZGM2NTgxZDRkYjQ1NDUwMzIxM2RhZmFhMDhmNDcxYTQ2N2ZmNmVlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaApAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UqLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CiAgICAgdm9pZCBh
ZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9k
ZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJrZXJEZXRhaWxzPik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqLCBi
b29sIGFjdGl2ZU1hdGNoKTsKKyAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5n
ZSosIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGFkZE1h
cmtlcihSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBTdHJpbmcgZGVzY3JpcHRp
b24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMsIGNvbnN0IFJldGFpblB0
cjxpZD4mIG1ldGFkYXRhKTsKICAgICB2b2lkIGFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5h
dGl2ZXNNYXJrZXIoUmFuZ2UqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25z
KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWFya2VycyhSYW5n
ZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJr
ZXJzKCksIFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyT3JOb3QgPSBEb05vdFJlbW92
ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKICAgICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9k
ZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpLCAgUmVtb3ZlUGFydGlhbGx5
T3ZlcmxhcHBpbmdNYXJrZXJPck5vdCA9IERvTm90UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdN
YXJrZXIpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVNYXJrZXJzKERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpOworICAg
IHZvaWQgcmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVu
dE1hcmtlcjo6QWxsTWFya2VycygpKTsKICAgICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9kZSosIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkp
OwogICAgIHZvaWQgcmVwYWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0g
RG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcnNJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYpOwpAQCAtODQsOSArODQs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXJrZXJzQWN0aXZlKE5vZGUqLCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29sKTsKIAogICAgIERvY3VtZW50TWFy
a2VyKiBtYXJrZXJDb250YWluaW5nUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPERvY3VtZW50TWFy
a2VyKj4gbWFya2Vyc0ZvcihOb2RlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0gRG9j
dW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPERv
Y3VtZW50TWFya2VyKj4gbWFya2Vyc0luUmFuZ2UoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbnRSZWN0PiByZW5kZXJlZFJl
Y3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgVmVjdG9yPERv
Y3VtZW50TWFya2VyKj4gbWFya2Vyc0ZvcihOb2RlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7CisgICAgVmVjdG9yPERvY3VtZW50
TWFya2VyKj4gbWFya2Vyc0luUmFuZ2UoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZXMpOworICAgIFZlY3RvcjxJbnRSZWN0PiByZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgdm9pZCBjbGVhckRlc2NyaXB0aW9uT25NYXJrZXJz
SW50ZXJzZWN0aW5nUmFuZ2UoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMpOwog
CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uLmgKaW5kZXggOTNmMzBjNjJmZmNjNDhlM2U2NDA4ZTNhM2M1YTlmN2Qx
ZjYzNzY4OC4uOWViMjYzZDMwZDY2MDBiNzNjNjFkZWNiMjVhY2YzZDI4Njc4MjRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCkBA
IC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVJbmplY3RlZFN0eWxl
U2hlZXRDYWNoZSgpOwogICAgIHZvaWQgdXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXV0aG9yU2hlZXQoUGFzc1JlZjxT
dHlsZVNoZWV0Q29udGVudHM+IGF1dGhvclNoZWV0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZFVzZXJTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gdXNlclNoZWV0KTsKKyAg
ICB2b2lkIGFkZEF1dGhvclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBhdXRob3JT
aGVldCk7CisgICAgdm9pZCBhZGRVc2VyU2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+
IHVzZXJTaGVldCk7CiAKICAgICBlbnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9IDAsIE9wdGlt
aXplZFVwZGF0ZSwgRnVsbFVwZGF0ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2MjhlOWJh
NGY0YzQyZmY0Mjc1Nzg2MDE3ZGYxNTg0NDhjODQxNDRiLi42YmE2YjMwZmE1N2Y2NGE4MWI4YjM1
YTNhMmU1MzJhYjZmYmYxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTE0Miw5ICsxNDIsOSBA
QCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxs
c2NyZWVuZXJyb3IpOwogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0F0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICBib29sIGhhc0F0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIHZvaWQgc2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAg
ICB2b2lkIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgc2V0U3luY2hyb25p
emVkTGF6eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSk7CiAgICAgYm9vbCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZhc3RIYXNBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFz
dEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAjaWZuZGVmIE5ERUJV
RwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIGJvb2wgZmFzdEF0dHJpYnV0ZUxvb2t1cEFs
bG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogI2VuZGlmCiAKICNpZmRlZiBEVU1Q
X05PREVfU1RBVElTVElDUwpAQCAtMTc0LDEwICsxNzQsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgYm9vbCBo
YXNBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
QXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlTlMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHN0YXRp
YyBib29sIHBhcnNlQXR0cmlidXRlTmFtZShRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC0yMjcsMTUgKzIyNywx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsV2lkdGgoKTsKICAgICB2aXJ0dWFs
IGludCBzY3JvbGxIZWlnaHQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgYm91bmRz
SW5Sb290Vmlld1NwYWNlKCk7CisgICAgSW50UmVjdCBib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsK
IAogICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCk7CiAgICAg
UGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAKICAg
ICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNsYXRlZCBpbnRvIGNs
aWVudCBjb29yZGluYXRlcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNsaWVudFJlY3Qo
KSBjb25zdDsKKyAgICBJbnRSZWN0IGNsaWVudFJlY3QoKSBjb25zdDsKICAgICAvLyBSZXR1cm5z
IHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNsYXRlZCBpbnRvIHNjcmVlbiBjb29yZGlu
YXRlcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHNjcmVlblJlY3QoKSBjb25zdDsKKyAg
ICBJbnRSZWN0IHNjcmVlblJlY3QoKSBjb25zdDsKIAogICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAgICAgYm9vbCByZW1vdmVBdHRyaWJ1dGVOUyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpOwpAQCAtMzI0LDggKzMyNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHZvaWQgZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93
Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8
U2hhZG93Um9vdD4gY3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJik7CisgICAgU2hhZG93
Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3Jl
YXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJik7CiAKICAgICBTaGFkb3dSb290KiB1c2VyQWdl
bnRTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCYgZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdCgpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzSFRNTENvbnRlbnRBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIFVSTCBnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owor
ICAgIFVSTCBnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAg
IFVSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25z
dDsKQEAgLTQwOCwxMyArNDA4LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Rm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICB2aXJ0
dWFsIHZvaWQgYmx1cigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGlubmVyVGV4dCgp
OworICAgIFN0cmluZyBpbm5lclRleHQoKTsKICAgICBTdHJpbmcgb3V0ZXJUZXh0KCk7CiAgCiAg
ICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHNldWRvKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQc2V1ZG8oY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBzZXRQc2V1ZG8oY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXplRm9yUmVzaXppbmcoKSBjb25zdDsKICAg
ICB2b2lkIHNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoY29uc3QgTGF5b3V0U2l6ZSYpOwpAQCAt
NDQzLDggKzQ0Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVu
KCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBQc2V1ZG9FbGVtZW50KiBi
ZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUHNldWRvRWxl
bWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgUHNldWRvRWxlbWVudCogYmVm
b3JlUHNldWRvRWxlbWVudCgpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRv
RWxlbWVudCgpIGNvbnN0OwogICAgIGJvb2wgY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpIGNvbnN0
OwogICAgIHZvaWQgZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKIApAQCAtNTAx
LDcgKzUwMSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIAogICAgIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4odW5zaWduZWQgc2hvcnQgZmxhZ3MpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudChib29sKTsKICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFu
Y2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvb2wpOwogCkBAIC01NjMsNyArNTYzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJTdHlsZURlcml2ZWREYXRhQmVmb3JlRGV0YWNoaW5n
UmVuZGVyZXIoKTsKICAgICB2b2lkIGNsZWFySG92ZXJBbmRBY3RpdmVTdGF0dXNCZWZvcmVEZXRh
Y2hpbmdSZW5kZXJlcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlTGlua1VS
TCgpIGNvbnN0OworICAgIFVSTCBhYnNvbHV0ZUxpbmtVUkwoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IDFiZTVlYmI4
MGFlMDc5MzMzM2NhOTMyOGMyMjEzMmE1MDllNjEwNGQuLmQ3ZjY0MGU4MDNiODA2YTM3OWMwNTY2
Nzc5NDNkOGE4ZGFhODEyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnQpOwogICAgIH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggNzZiMzBhYjhlMjRhZjJiMGY2
ZDZkNmE4ZTc0OGRiNjZmZjQ3NTY2Ni4uMTBmNGFiNjMwNjFjYTFiYjBiZGFhNTMxMGY5NGY5MWMy
NDk1MzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyTWFwKCk7CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7
CisgICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7
CiAgICAgYm9vbCBjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSkgY29uc3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0RpY3RhdGlvbkFsdGVybmF0aXZlLmgKaW5kZXggZjY5ZGQwYjhhZDIwN2ZlNmExZmQ1ZTYzYjUz
ZWU0NjkzNmRlMzI4NC4uMDhmY2VhMzg2N2NiNWM5Y2FiMTkyMzg0NjYwYjU1NjZkZDdiNTljZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaApAQCAt
MzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0
ZXJuYXRpdmUgewotICAgIFdFQkNPUkVfRVhQT1JUIERpY3RhdGlvbkFsdGVybmF0aXZlKHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHVpbnQ2NF90IGNvbnRleHQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIERpY3RhdGlvbkFsdGVybmF0aXZlKCk7CisgICAgRGljdGF0aW9uQWx0ZXJuYXRp
dmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdWludDY0X3QgY29udGV4dCk7Cisg
ICAgRGljdGF0aW9uQWx0ZXJuYXRpdmUoKTsKICAgICB1bnNpZ25lZCByYW5nZVN0YXJ0OwogICAg
IHVuc2lnbmVkIHJhbmdlTGVuZ3RoOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgK
aW5kZXggM2MyMmNiZDhkZjE0MWIyYzA3NTRmNzY0YTE3ZGM4NmE0ODEyZDEyZC4uM2Y4NWNkNDM2
ZGRmZTEwNzg1NDJmMGM0YmQ1MWZjMmJkOWY0YmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dENvbW1hbmQuaApAQCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIENvbXBvc2l0ZUVkaXRD
b21tYW5kKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZvaWQgc2V0
U3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsK
KyAgICB2b2lkIHNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAK
IHByaXZhdGU6CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmgKaW5kZXggNWUxNzYyMjRmY2RkN2Q4OGZhMzg1ZjEyMzEzOGQ3OThm
MTlmZWQ0NS4uZjIwYTQxY2UxZGZiMGQxNjBmMmQwMTU5MWNmYzlhZGJkNDliNWY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFZGl0aW5nU3R5bGUocHJvcGVydHlJRCwgdmFs
dWUpKTsKICAgICB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB+RWRpdGluZ1N0eWxlKCk7CisgICAg
fkVkaXRpbmdTdHlsZSgpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGUoKSB7
IHJldHVybiBtX211dGFibGVTdHlsZS5nZXQoKTsgfQogICAgIGJvb2wgdGV4dERpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmMGU2
ZGFlNWM0NmQzNTBhZWE5NWQ2NTMxOWMzZGViNTViMTFlM2UxLi44MTE4YjlkYjM1YjRhZDI3ZGY3
NmFjNjhhMzEzNTcxNzQxMmUwZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRWRpdG9yKEZyYW1lJik7CiAgICAgfkVk
aXRvcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRWRpdG9yQ2xpZW50KiBjbGllbnQoKSBjb25z
dDsKKyAgICBFZGl0b3JDbGllbnQqIGNsaWVudCgpIGNvbnN0OwogICAgIFRleHRDaGVja2VyQ2xp
ZW50KiB0ZXh0Q2hlY2tlcigpIGNvbnN0OwogCiAgICAgQ29tcG9zaXRlRWRpdENvbW1hbmQqIGxh
c3RFZGl0Q29tbWFuZCgpIHsgcmV0dXJuIG1fbGFzdEVkaXRDb21tYW5kLmdldCgpOyB9CkBAIC0x
MDksMzAgKzEwOSwzMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRv
d24oS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgaGFuZGxlVGV4dEV2ZW50KFRleHRFdmVudCop
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5FZGl0KCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYW5FZGl0UmljaGx5KCkgY29uc3Q7CisgICAgYm9vbCBjYW5FZGl0KCkg
Y29uc3Q7CisgICAgYm9vbCBjYW5FZGl0UmljaGx5KCkgY29uc3Q7CiAKICAgICBib29sIGNhbkRI
VE1MQ3V0KCk7CiAgICAgYm9vbCBjYW5ESFRNTENvcHkoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNhbkRIVE1MUGFzdGUoKTsKKyAgICBib29sIGNhbkRIVE1MUGFzdGUoKTsKICAgICBib29s
IHRyeURIVE1MQ29weSgpOwogICAgIGJvb2wgdHJ5REhUTUxDdXQoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHRyeURIVE1MUGFzdGUoKTsKKyAgICBib29sIHRyeURIVE1MUGFzdGUoKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQ3V0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjYW5Db3B5KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5QYXN0
ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuRGVsZXRlKCkgY29uc3Q7Cisg
ICAgYm9vbCBjYW5DdXQoKSBjb25zdDsKKyAgICBib29sIGNhbkNvcHkoKSBjb25zdDsKKyAgICBi
b29sIGNhblBhc3RlKCkgY29uc3Q7CisgICAgYm9vbCBjYW5EZWxldGUoKSBjb25zdDsKICAgICBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGN1
dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weSgpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGFzdGUoKTsKKyAgICB2b2lkIGN1dCgpOworICAgIHZvaWQgY29weSgpOworICAgIHZv
aWQgcGFzdGUoKTsKICAgICB2b2lkIHBhc3RlKFBhc3RlYm9hcmQmKTsKICAgICB2b2lkIHBhc3Rl
QXNQbGFpblRleHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBlcmZvcm1EZWxldGUoKTsK
KyAgICB2b2lkIHBlcmZvcm1EZWxldGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIGNvcHlVUkwo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3B5VVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmKTsKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIHZvaWQgY29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKQEAgLTE0MCw1
MSArMTQwLDUxIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyByZWFkUGxhaW5UZXh0RnJvbVBhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmRlbnQoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG91dGRlbnQoKTsKKyAgICB2b2lkIGluZGVudCgpOwor
ICAgIHZvaWQgb3V0ZGVudCgpOwogICAgIHZvaWQgdHJhbnNwb3NlKCk7CiAKICAgICBib29sIHNo
b3VsZEluc2VydEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIFBhc3NSZWZQ
dHI8UmFuZ2U+LCBFZGl0b3JJbnNlcnRBY3Rpb24pOwogICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4
dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbikgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopIGNvbnN0OworICAg
IGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAgICBib29sIHNob3VsZEFw
cGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwgUmFuZ2UqKTsKIAogICAgIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbik7
CiAKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVHJpU3RhdGUgc2VsZWN0
aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7Cisg
ICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3Q7CiAgICAgU3RyaW5nIHNlbGVjdGlvblN0YXJ0Q1NTUHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEKTsKICAgICAKICAgICBUcmlTdGF0ZSBzZWxlY3Rpb25Vbm9yZGVyZWRM
aXN0U3RhdGUoKSBjb25zdDsKICAgICBUcmlTdGF0ZSBzZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRl
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRPcmRl
cmVkTGlzdCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0VW5v
cmRlcmVkTGlzdCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkRlY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxOb2RlPiBpbmNy
ZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8
Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJl
ZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwo
KTsKKyAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydE9yZGVyZWRMaXN0KCk7CisgICAgUGFzc1Jl
ZlB0cjxOb2RlPiBpbnNlcnRVbm9yZGVyZWRMaXN0KCk7CisgICAgYm9vbCBjYW5JbmNyZWFzZVNl
bGVjdGlvbkxpc3RMZXZlbCgpOworICAgIGJvb2wgY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWwoKTsKKyAgICBQYXNzUmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7
CisgICAgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQo
KTsKKyAgICBQYXNzUmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRl
cmVkKCk7CisgICAgdm9pZCBkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwogICAgCiAgICAg
dm9pZCByZW1vdmVGb3JtYXR0aW5nQW5kU3R5bGUoKTsKIAogICAgIHZvaWQgY2xlYXJMYXN0RWRp
dENvbW1hbmQoKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
bnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGlu
ZygpOworICAgIHZvaWQgZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklm
T3BlbkZvck1vcmVUeXBpbmcoKTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBi
b29sIGtpbGxSaW5nLCBib29sIGlzVHlwaW5nQWN0aW9uKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29sIHNtYXJ0RGVsZXRlKTsKKyAg
ICBib29sIGRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uLCBUZXh0R3JhbnVs
YXJpdHksIGJvb2wga2lsbFJpbmcsIGJvb2wgaXNUeXBpbmdBY3Rpb24pOworICAgIHZvaWQgZGVs
ZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGJvb2wgc21hcnREZWxldGUpOwogI2lmIFBMQVRG
T1JNKElPUykKICAgICB2b2lkIGNsZWFyVGV4dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCk7CisgICAgdm9pZCByZW1vdmVVbmNoYW5nZWFibGVT
dHlsZXMoKTsKICNlbmRpZgogICAgIAogICAgIGJvb2wgZGlzcGF0Y2hDUFBFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmLCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kpOwogICAgIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uID0g
RWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKKyAgICB2b2lkIGFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0
aWVzKiwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CiAgICAgdm9pZCBhcHBs
eVBhcmFncmFwaFN0eWxlKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9u
VW5zcGVjaWZpZWQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlTdHlsZVRvU2VsZWN0
aW9uKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24pOworICAgIHZvaWQgYXBwbHlTdHlsZVRv
U2VsZWN0aW9uKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24pOwogICAgIHZvaWQgYXBwbHlQ
YXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24pOwog
CiAgICAgdm9pZCBhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5k
Pik7CkBAIC0xOTcsNTggKzE5Nyw1OCBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBDb21tYW5kIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbW1hbmQoKTsKKyAgICAgICAg
Q29tbWFuZCgpOwogICAgICAgICBDb21tYW5kKGNvbnN0IEVkaXRvckludGVybmFsQ29tbWFuZCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIFBhc3NSZWZQdHI8RnJhbWU+KTsKIAotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXIgPSBTdHJpbmco
KSwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGV4ZWN1dGUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkgY29uc3Q7CisgICAgICAg
IGJvb2wgZXhlY3V0ZShjb25zdCBTdHJpbmcmIHBhcmFtZXRlciA9IFN0cmluZygpLCBFdmVudCog
dHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIGJvb2wgZXhlY3V0ZShFdmVudCog
dHJpZ2dlcmluZ0V2ZW50KSBjb25zdDsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
U3VwcG9ydGVkKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbmFibGVk
KEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1N1cHBv
cnRlZCgpIGNvbnN0OworICAgICAgICBib29sIGlzRW5hYmxlZChFdmVudCogdHJpZ2dlcmluZ0V2
ZW50ID0gMCkgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgVHJpU3RhdGUgc3RhdGUo
RXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBUcmlTdGF0ZSBzdGF0
ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyB2YWx1
ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc1RleHRJbnNlcnRpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1RleHRJ
bnNlcnRpb24oKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IEVkaXRvcklu
dGVybmFsQ29tbWFuZCogbV9jb21tYW5kOwogICAgICAgICBFZGl0b3JDb21tYW5kU291cmNlIG1f
c291cmNlOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAgICAgfTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBDb21tYW5kIGNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7IC8v
IENvbW1hbmQgc291cmNlIGlzIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZy4KKyAgICBDb21t
YW5kIGNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7IC8vIENvbW1hbmQgc291cmNl
IGlzIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZy4KICAgICBDb21tYW5kIGNvbW1hbmQoY29u
c3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgY29tbWFuZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRp
bmcoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7IC8vIFdvcmtzIHdpdGhvdXQgYSBmcmFtZS4K
KyAgICBzdGF0aWMgYm9vbCBjb21tYW5kSXNTdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZyhj
b25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsgLy8gV29ya3Mgd2l0aG91dCBhIGZyYW1lLgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIEV2ZW50KiB0
cmlnZ2VyaW5nRXZlbnQpOworICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBFdmVu
dCogdHJpZ2dlcmluZ0V2ZW50KTsKICAgICBib29sIGluc2VydFRleHRGb3JDb25maXJtZWRDb21w
b3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW5z
ZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7
CisgICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBFdmVudCogdHJp
Z2dlcmluZ0V2ZW50KTsKICAgICBib29sIGluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVu
dChjb25zdCBTdHJpbmcmLCBib29sIHNlbGVjdEluc2VydGVkVGV4dCwgVGV4dEV2ZW50KiB0cmln
Z2VyaW5nRXZlbnQpOwogICAgIGJvb2wgaW5zZXJ0TGluZUJyZWFrKCk7CiAgICAgYm9vbCBpbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3IoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgYm9vbCBpc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgdG9nZ2xlQ29udGludW91
c1NwZWxsQ2hlY2tpbmcoKTsKICAgICBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpOwog
ICAgIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAgICAgdm9pZCBpZ25vcmVTcGVsbGlu
ZygpOwogICAgIHZvaWQgbGVhcm5TcGVsbGluZygpOwogICAgIGludCBzcGVsbENoZWNrZXJEb2N1
bWVudFRhZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTZWxlY3Rpb25VbmdyYW1tYXRp
Y2FsKCk7CisgICAgYm9vbCBpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWwoKTsKICAgICBTdHJpbmcg
bWlzc3BlbGxlZFNlbGVjdGlvblN0cmluZygpIGNvbnN0OwogICAgIFN0cmluZyBtaXNzcGVsbGVk
V29yZEF0Q2FyZXRPclJhbmdlKE5vZGUqIGNsaWNrZWROb2RlKSBjb25zdDsKICAgICBWZWN0b3I8
U3RyaW5nPiBndWVzc2VzRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwoYm9v
bCYgbWlzc3BlbGxlZCwgYm9vbCYgdW5ncmFtbWF0aWNhbCk7CiAgICAgYm9vbCBpc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpIGNvbnN0OwogICAgIGJvb2wgaXNTcGVsbENoZWNr
aW5nRW5hYmxlZEZvcihOb2RlKikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3Jk
U3RhcnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbkFmdGVyVHlwaW5nLCBib29s
IGRvUmVwbGFjZW1lbnQpOworICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9X
b3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb25BZnRlclR5cGluZywgYm9vbCBkb1JlcGxhY2VtZW50KTsKICAgICB2b2lk
IG1hcmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJlZlB0cjxSYW5nZT4m
IGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
cihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3Jh
bW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CiAgICAgdm9p
ZCBtYXJrQW5kUmVwbGFjZUZvcihQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiwgY29uc3Qg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCiAgICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CiAjaWYgUExBVEZPUk0oSU9TKQpA
QCAtMjU3LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2Vk
U3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogCiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uID0gZmFsc2UpOworICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKICAgICB2b2lkIHNob3dTcGVsbGluZ0d1ZXNzUGFuZWwoKTsKICAgICBi
b29sIHNwZWxsaW5nUGFuZWxJc1Nob3dpbmcoKTsKQEAgLTI4MSwyNCArMjgxLDI0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNob3dDb2xvclBhbmVsKCk7CiAgICAgdm9pZCB0b2dnbGVCb2xkKCk7CiAg
ICAgdm9pZCB0b2dnbGVVbmRlcmxpbmUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOworICAgIHZvaWQgc2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CiAKICAgICAvLyBzbWFydEluc2VydERl
bGV0ZUVuYWJsZWQgYW5kIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgYXJlIAogICAg
IC8vIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbWVhbmluZyB0aGF0IGVuYWJsaW5nIG9uZSB3aWxsIGRp
c2FibGUgdGhlIG90aGVyLgogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAg
ICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKICAgICAKLSAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGhhc0JpZGlTZWxlY3Rpb24oKSBjb25zdDsKKyAgICBib29sIGhh
c0JpZGlTZWxlY3Rpb24oKSBjb25zdDsKIAogICAgIC8vIGludGVybmF0aW9uYWwgdGV4dCBpbnB1
dCBjb21wb3NpdGlvbgogICAgIGJvb2wgaGFzQ29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NvbXBvc2l0aW9uTm9kZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYsIHVu
c2lnbmVkIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJik7IC8vIGlmIG5vIGV4aXN0aW5n
IGNvbXBvc2l0aW9uLCByZXBsYWNlcyBzZWxlY3Rpb24KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJp
bmcmLCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiwgdW5zaWduZWQgc2VsZWN0
aW9uU3RhcnQsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCk7CisgICAgdm9pZCBjb25maXJtQ29tcG9z
aXRpb24oKTsKKyAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmKTsgLy8g
aWYgbm8gZXhpc3RpbmcgY29tcG9zaXRpb24sIHJlcGxhY2VzIHNlbGVjdGlvbgorICAgIHZvaWQg
Y2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICBib29sIGNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rp
b25Jc0ludmFsaWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBjb21w
b3NpdGlvblJhbmdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRDb21wb3Np
dGlvblNlbGVjdGlvbih1bnNpZ25lZCYgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkJiBzZWxlY3Rp
b25FbmQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbXBvc2l0aW9uUmFuZ2UoKSBj
b25zdDsKKyAgICBib29sIGdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHVuc2lnbmVkJiBzZWxlY3Rp
b25TdGFydCwgdW5zaWduZWQmIHNlbGVjdGlvbkVuZCkgY29uc3Q7CiAKICAgICAvLyBnZXR0aW5n
IGludGVybmF0aW9uYWwgdGV4dCBpbnB1dCBjb21wb3NpdGlvbiBzdGF0ZSAoZm9yIHVzZSBieSBJ
bmxpbmVUZXh0Qm94KQogICAgIFRleHQqIGNvbXBvc2l0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29tcG9zaXRpb25Ob2RlLmdldCgpOyB9CkBAIC0zMDcsMTIgKzMwNywxMiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjb21wb3NpdGlvblVzZXNDdXN0b21VbmRlcmxpbmVzKCkgY29uc3QgeyByZXR1
cm4gIW1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzLmlzRW1wdHkoKTsgfQogICAgIGNvbnN0
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIGN1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5l
cygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzOyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdl
KGJvb2wpOworICAgIHZvaWQgc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoYm9v
bCk7CiAgICAgYm9vbCBpZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpIGNvbnN0IHsg
cmV0dXJuIG1faWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2U7IH0KIAogICAgIHZvaWQg
c2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKGJvb2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
UGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9p
bnQpOworICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApAQCAtMzI2LDI1ICszMjYsMjUg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UoKTsKIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1NYXJrZWRUZXh0
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChjb25z
dCBTdHJpbmcmLCBFbGVtZW50Kik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QWxp
Z25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRy
PFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlk
PiBtZXRhZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREaWN0YXRpb25QaHJhc2Vz
QXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGlj
dGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVudCk7
CisgICAgdm9pZCBjb25maXJtTWFya2VkVGV4dCgpOworICAgIHZvaWQgc2V0VGV4dEFzQ2hpbGRP
ZkVsZW1lbnQoY29uc3QgU3RyaW5nJiwgRWxlbWVudCopOworICAgIHZvaWQgc2V0VGV4dEFsaWdu
bWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uKTsKKyAg
ICB2b2lkIGluc2VydERpY3RhdGlvblBocmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0
cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpOworICAg
IHZvaWQgc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093blB0cjxWZWN0
b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0
YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBhZGRUb0tp
bGxSaW5nKFJhbmdlKiwgYm9vbCBwcmVwZW5kKTsKIAogICAgIHZvaWQgc3RhcnRBbHRlcm5hdGl2
ZVRleHRVSVRpbWVyKCk7CiAgICAgLy8gSWYgdXNlciBjb25maXJtZWQgYSBjb3JyZWN0aW9uIGlu
IHRoZSBjb3JyZWN0aW9uIHBhbmVsLCBjb3JyZWN0aW9uIGhhcyBub24temVybyBsZW5ndGgsIG90
aGVyd2lzZSBpdCBtZWFucyB0aGF0IHVzZXIgaGFzIGRpc21pc3NlZCB0aGUgcGFuZWwuCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBT
dHJpbmcmIGNvcnJlY3Rpb24pOworICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWxBc0lnbm9yZWQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGVBc0ZyYWdt
ZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29s
IG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFz
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKKyAgICB2b2lkIHBh
c3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBib29sIHNtYXJ0UmVw
bGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOworICAgIHZvaWQgcGFzdGVBc1BsYWlu
VGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNtYXJ0UmVwbGFjZSk7CiAKICAgICAvLyBUaGlzIGlz
IG9ubHkgY2FsbGVkIG9uIHRoZSBtYWMgd2hlcmUgcGFzdGUgaXMgaW1wbGVtZW50ZWQgcHJpbWFy
aWx5IGF0IHRoZSBXZWJLaXQgbGV2ZWwuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZUFz
UGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKTsKKyAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRCeXBh
c3NpbmdESFRNTCgpOwogIAogICAgIHZvaWQgY2xlYXJNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKQEAgLTM1Myw3ICszNTMsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHNl
bGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CisgICAgYm9vbCBmaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKIAogICAgIFBhc3NSZWZQdHI8UmFu
Z2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9ucyk7CiAg
ICAgUGFzc1JlZlB0cjxSYW5nZT4gZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlzaWJsZShjb25zdCBT
dHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zKTsKQEAgLTM2MSwxOCArMzYxLDE4IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBtYXJrKCkgY29uc3Q7IC8vIE1hcmssIHRv
IGJlIHVzZWQgYXMgZW1hY3MgdXNlcyBpdC4KICAgICB2b2lkIHNldE1hcmsoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21wdXRlQW5kU2V0VHlw
aW5nU3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiAsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVj
aWZpZWQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlF
bGVtZW50KCkgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoU3R5bGVQ
cm9wZXJ0aWVzKiAsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpOworICAgIHZv
aWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBs
eUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKikgY29uc3Q7CisgICAgSW50UmVj
dCBmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSopIGNvbnN0OwogCiAgICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJh
bWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOworICAgIHZvaWQgdXBkYXRlRWRpdG9y
VUlOb3dJZlNjaGVkdWxlZCgpOwogICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
bmV3U2VsZWN0aW9uLCBFQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNvdW50TWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5n
JiwgUmFuZ2UqLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbGltaXQsIGJvb2wgbWFya01hdGNoZXMs
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiopOworICAgIHVuc2lnbmVkIGNvdW50TWF0Y2hlc0ZvclRl
eHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbGltaXQsIGJv
b2wgbWFya01hdGNoZXMsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiopOwogICAgIGJvb2wgbWFya2Vk
VGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sKTsKKyAgICB2b2lkIHNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoYm9vbCk7CiAKICAgICB2b2lkIHRleHRG
aWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50Kik7CiAgICAgdm9pZCB0ZXh0RmllbGREaWRFbmRF
ZGl0aW5nKEVsZW1lbnQqKTsKQEAgLTM4MCwxNSArMzgwLDE1IEBAIHB1YmxpYzoKICAgICBib29s
IGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiwgS2V5Ym9hcmRFdmVudCopOwog
ICAgIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50KiBpbnB1dCk7CiAg
ICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgV3JpdGluZ0RpcmVjdGlvbiBiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0
YXJ0KCkgY29uc3Q7CisgICAgV3JpdGluZ0RpcmVjdGlvbiBiYXNlV3JpdGluZ0RpcmVjdGlvbkZv
clNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxh
Y2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgYm9v
bCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RC
bG9ja3F1b3RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRo
VGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVw
bGFjZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgaW50IGZyb20sIGludCBsZW5ndGgpIGNvbnN0
OworICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwg
Ym9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVI
YW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOworICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRS
ZXBsYWNlKTsKKyAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlLCBpbnQgZnJvbSwgaW50IGxlbmd0aCkgY29uc3Q7CiAgICAgdm9pZCB1
cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIG9ubHlIYW5kbGVXb3Jk
c0NvbnRhaW5pbmdTZWxlY3Rpb24pOwogICAgIHZvaWQgZGVsZXRlZEF1dG9jb3JyZWN0aW9uQXRQ
b3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcpOwog
ICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltcGxpZnlNYXJrdXAoTm9kZSogc3RhcnRO
b2RlLCBOb2RlKiBlbmROb2RlKTsKKyAgICB2b2lkIHNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0
Tm9kZSwgTm9kZSogZW5kTm9kZSk7CiAKICAgICB2b2lkIGRldmljZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpOwogCkBAIC00MDEsMjUgKzQwMSwyNSBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVNlbGVjdGlv
biBhdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mKSBjb25zdDsKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cHBlcmNhc2VXb3JkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb3dlcmNh
c2VXb3JkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYXBpdGFsaXplV29yZCgpOworICAg
IHZvaWQgdXBwZXJjYXNlV29yZCgpOworICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpOworICAgIHZv
aWQgY2FwaXRhbGl6ZVdvcmQoKTsKICNlbmRpZgogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JF
UExBQ0VNRU5UKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5l
bCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5n
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb25FbmFibGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICB2b2lkIHNob3dT
dWJzdGl0dXRpb25zUGFuZWwoKTsKKyAgICBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2lu
ZygpOworICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKKyAgICBib29sIGlzQXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CisgICAgdm9pZCB0b2dnbGVBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbigpOworICAgIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9u
RW5hYmxlZCgpOworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOworICAg
IGJvb2wgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgIHZvaWQgdG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOworICAgIGJvb2wgaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkKCk7CisgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnQoKTsKKyAgICBib29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgp
OworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKQEAgLTQyNywyNSArNDI3LDI1IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlbmRlclN0eWxlKiBzdHlsZUZvclNlbGVjdGlvblN0YXJ0KEZyYW1lKiAsIE5vZGUgKiZub2Rl
VG9SZW1vdmUpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9ySW5RdW90ZWRDb250ZW50KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnRGb3JTZWxlY3Rpb24oYm9vbCYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IE5TRGljdGlvbmFyeSogZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
CisgICAgc3RhdGljIFJlbmRlclN0eWxlKiBzdHlsZUZvclNlbGVjdGlvblN0YXJ0KEZyYW1lKiAs
IE5vZGUgKiZub2RlVG9SZW1vdmUpOworICAgIGJvb2wgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
SW5RdW90ZWRDb250ZW50KCk7CisgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRGb3JTZWxl
Y3Rpb24oYm9vbCYpIGNvbnN0OworICAgIE5TRGljdGlvbmFyeSogZm9udEF0dHJpYnV0ZXNGb3JT
ZWxlY3Rpb25TdGFydCgpIGNvbnN0OworICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRXaXRoSW1h
Z2VBbHRUZXh0KCk7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiB3ZWJDb250ZW50
RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBi
b29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CiAgICAgdm9pZCB0YWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxl
Y3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVv
dGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChO
b2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CisgICAgdm9p
ZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKKyAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEVGTCkK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQo
UGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CisgICAgdm9pZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJv
YXJkJik7CisgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVt
ZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9S
TShJT1MpCkBAIC00NjgsNyArNDY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hcmtNaXNzcGVs
bGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVs
bGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICAgICBUZXh0Q2hl
Y2tpbmdUeXBlTWFzayByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlw
ZU1hc2spOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlbGVjdGVkVGV4dChUZXh0SXRl
cmF0b3JCZWhhdmlvcikgY29uc3Q7CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dChUZXh0SXRlcmF0
b3JCZWhhdmlvcikgY29uc3Q7CiAKICAgICB2b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CiAgICAg
ZW51bSBTZXRDb21wb3NpdGlvbk1vZGUgeyBDb25maXJtQ29tcG9zaXRpb24sIENhbmNlbENvbXBv
c2l0aW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDdjMDlhYTNiNzZjZGQzMDU1MDE0NzJiOWM5
ZDAxOTI1OTQ5OGM0ZDQuLjk5ZWY5NjE5ODgxZGMxZWE5YmNiNjFmZTZlMTk0MDhjMmFmNDU2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5oCkBAIC00MSwxMSArNDEsMTEgQEAgY2xhc3MgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIoKSB7IH0KICAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KLSAgICBXRUJDT1JFX0VYUE9S
VCB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0
aXZlcz4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzaG93QWx0ZXJuYXRpdmVzKE5TVmlldyosIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlByaW1hcnlTdHJpbmcsIHVpbnQ2NF90IGNvbnRleHQsIHZvaWQoXmFjY2VwdGFu
Y2VIYW5kbGVyKShOU1N0cmluZyopKTsKLSAgICB2b2lkIFdFQkNPUkVfRVhQT1JUIHJlbW92ZUFs
dGVybmF0aXZlcyh1aW50NjRfdCBjb250ZXh0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
U3RyaW5nPiBhbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHQpOworICAgIHVp
bnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVz
PiYpOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHNob3dBbHRlcm5hdGl2ZXMoTlNWaWV3
KiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUHJpbWFyeVN0cmluZywgdWludDY0X3Qg
Y29udGV4dCwgdm9pZCheYWNjZXB0YW5jZUhhbmRsZXIpKE5TU3RyaW5nKikpOworICAgIHZvaWQg
cmVtb3ZlQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGNvbnRleHQpOworICAgIFZlY3RvcjxTdHJpbmc+
IGFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVy
bmF0aXZlLCB1aW50NjRfdCBjb250ZXh0LCBOU1RleHRBbHRlcm5hdGl2ZXMqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRi
ZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIzY2Q2YmFmMGE5NjMuLjYzODc3NDY0MzFiZWMwZWRjNmMwYjQ0
YjcyYWI2OGUyZTU4Y2U3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuaApAQCAtNDQsMjAgKzQ0LDIwIEBAIHB1YmxpYzoKIAogICAgIEJhY2tG
b3J3YXJkQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KSBjb25zdDsKKyAgICBib29sIGNhbkdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpIGNvbnN0
OwogICAgIHZvaWQgZ29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGdvQmFjaygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ29Gb3J3YXJk
KCk7CisgICAgYm9vbCBnb0JhY2soKTsKKyAgICBib29sIGdvRm9yd2FyZCgpOwogCiAgICAgdm9p
ZCBhZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKICAgICB2b2lkIHNldEN1cnJlbnRJ
dGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAgIAogICAgIGludCBjb3VudCgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIGludCBiYWNrQ291bnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgZm9yd2FyZENvdW50KCkgY29uc3Q7CisgICAgaW50IGJhY2tDb3VudCgpIGNvbnN0Owor
ICAgIGludCBmb3J3YXJkQ291bnQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEhpc3Rv
cnlJdGVtKiBpdGVtQXRJbmRleChpbnQpOworICAgIEhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChp
bnQpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuaAppbmRleCBhZTNjOTdkZDM3NTY2MjRhZTI5ZmYyMGZlMTEyNDM3MDAzMmZkMjVh
Li4zYjA1YmU5ZjA2YzE1ZGNmZTNkNDU2MjVlOThmZjNmNDFkNjE1N2FkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKQEAgLTQ3LDMxICs0NywzMSBAQCBwdWJsaWM6
CiAgICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ29CYWNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0ZvcndhcmQo
KTsKKyAgICB2b2lkIGdvQmFjaygpOworICAgIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CiAgICAgICAgIAotICAgIFdF
QkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKiBiYWNrSXRlbSgpOwotICAgIFdFQkNPUkVfRVhQT1JU
IEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJ
dGVtKiBmb3J3YXJkSXRlbSgpOworICAgIEhpc3RvcnlJdGVtKiBiYWNrSXRlbSgpOworICAgIEhp
c3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOworICAgIEhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgp
OwogICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgSGlzdG9yeUl0
ZW1WZWN0b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0
KGludCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsKKyAgICB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGlu
dCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsKKyAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0KGlu
dCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGludCBjYXBhY2l0
eSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FwYWNpdHkoaW50KTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGVuYWJsZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVu
YWJsZWQoYm9vbCk7CisgICAgaW50IGNhcGFjaXR5KCk7CisgICAgdm9pZCBzZXRDYXBhY2l0eShp
bnQpOworICAgIGJvb2wgZW5hYmxlZCgpOworICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIGludCBiYWNrTGlzdENvdW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQg
Zm9yd2FyZExpc3RDb3VudCgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29u
dGFpbnNJdGVtKEhpc3RvcnlJdGVtKik7CisgICAgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0
ZW0qKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY2xvc2VkKCk7CisgICAgYm9vbCBjbG9zZWQoKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOwotICAgIFdFQkNPUkVfRVhQT1JU
IEhpc3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzKCk7CisgICAgdm9pZCByZW1vdmVJdGVtKEhpc3Rv
cnlJdGVtKik7CisgICAgSGlzdG9yeUl0ZW1WZWN0b3ImIGVudHJpZXMoKTsKIAogI2lmIFBMQVRG
T1JNKElPUykKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGN1cnJlbnQoKSBvdmVycmlkZTsKQEAgLTgx
LDcgKzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgQmFja0ZvcndhcmRMaXN0KFBhZ2UqKTsKKyAgICBleHBsaWNpdCBCYWNrRm9y
d2FyZExpc3QoUGFnZSopOwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEhpc3RvcnlJdGVtVmVj
dG9yIG1fZW50cmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAppbmRleCBhZTNi
NThlZjhlOGIwNjUwMDI4N2FiODY3YzJlZTAyYTBmNGRiNDU1Li40OTdjYzZmY2Q2MzE2NDM4MWQ4
ZDE1ZDBmMDE5MzdkNTU2MDI3YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5o
CkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBk
ZXN0cm95KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4pOwotICAgIFdF
QkNPUkVfRVhQT1JUIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKiBjYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YSgpOworICAgIHZvaWQgc2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjp1bmlxdWVf
cHRyPENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPik7CisgICAgQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEqIGNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKCk7CiAKICAgICB1c2luZyBDYWNoZWRGcmFtZUJh
c2U6OmRvY3VtZW50OwogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6dmlldzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaAppbmRleCBmOWI4NGQ1ZTVjZWM2YzRiNDdlN2RkZTBjYTk2ZWE5YTQw
NGEzYzBmLi5kODIyMzYzZmVkNDU2NTE3ZmQyYmU1ZTIyMTEwMjA3MTZkYjAwYTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC00MCwxMyArNDAsMTMgQEAgc3RydWN0IENvb2tpZTsK
IC8vIEZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgdGFrZSBhIERvY3VtZW50IHBvaW50ZXIgdG8gZGV0
ZXJtaW5lIHdoaWNoIGNvb2tpZSBzdG9yYWdlIHRvIHVzZS4gV2Ugc2hvdWxkIG1lcmdlIHRoYXQg
aW50byBjYWxsIHNpdGVzLCBhbmQgdXNlIFBsYXRmb3JtQ29va2llSmFyIGRpcmVjdGx5LgogCiAv
LyBUaGVzZSB0d28gZnVuY3Rpb25zIGltcGxlbWVudCBkb2N1bWVudC5jb29raWUgQVBJLCB3aXRo
IHNwZWNpYWwgcnVsZXMgZm9yIEh0dHBPbmx5IGNvb2tpZXMuCi1XRUJDT1JFX0VYUE9SVCBTdHJp
bmcgY29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IFVSTCYpOwotV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpOworU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmKTsK
K3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKTsKIAotV0VCQ09SRV9FWFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBE
b2N1bWVudCopOwotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2ll
PiYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBEb2N1bWVudCopOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7Citib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
RG9jdW1lbnQqLCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVDb29r
aWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGU3ZDI4MWI3OTE3ZjAwNmM3Mjc2MzM5ZDM4Yzgx
YWNkM2RlMDc4YTYuLjA5N2IzNWI2NDM4NDU1ZDRmYjgwNWE2YzU2ZTMwNWI4YWE4MjU3YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuaApAQCAtNjYsMTIgKzY2LDEyIEBAIGNsYXNzIENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
JiBzaGFyZWQoKTsKKyAgICBzdGF0aWMgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSYg
c2hhcmVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBVUkwmLCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZUl0ZW0+KTsKICAgICBib29sIGNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbXB0eSgpOworICAgIHZvaWQgZW1wdHkoKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
TmV2ZXJEZXN0cm95ZWQ8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGFhNDgzYWFmMDlkZTgyY2QyMjAyMmYy
N2U5Y2I5YTFiODkyOTI5OWUuLjRlMmE3MTBmZGM0M2ViZDY5YWJjYmM2YmUyNDljYzcyYWFiZmY4
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC04MywyNCArODMs
MjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IERvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRhdGEpKTsKICAgICAgICAgfQot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Eb2N1bWVudExvYWRlcigpOworICAgICAg
ICB2aXJ0dWFsIH5Eb2N1bWVudExvYWRlcigpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RnJhbWUoRnJhbWUqKTsKKyAgICAgICAgdm9pZCBzZXRGcmFtZShGcmFtZSopOwogICAg
ICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGF0dGFjaFRvRnJhbWUoKTsKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRldGFjaEZyb21GcmFtZSgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoVG9GcmFtZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJv
bUZyYW1lKCk7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlTG9hZGVyKiBtYWlu
UmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0
cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAgICAgICBGcmFt
ZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIG1h
aW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPFJlc291cmNlQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBEb2N1bWVu
dFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIAotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNv
bnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdENvcHkoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QoKSBjb25zdDsKKyAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3RDb3B5KCkgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0OwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QoKTsKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKSB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpOyB9CkBAIC0xMDgs
MTYgKzEwOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGE7
IH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0aGUgc2FtZSBhcyByZXF1ZXN0VVJMKCku
IFdlIHNob3VsZCByZW1vdmUgb25lIG9mIHRoZW0uCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsK
KyAgICAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0OwogCiAgICAgICAgIGNv
bnN0IFVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
U3RyaW5nJiByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCgpIGNvbnN0OworICAgICAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7
CisgICAgICAgIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0OwogI2lmIFBM
QVRGT1JNKElPUykKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNlZW1zIHRvIHZpb2xh
dGUgdGhlIGVuY2Fwc3VsYXRpb24gb2YgdGhpcyBjbGFzcy4KLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRSZXNwb25zZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldFJlc3BvbnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgICAgICB2
b2lkIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwm
KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c3RvcExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBzZXRDb21taXR0ZWQoYm9vbCBjb21taXR0ZWQp
IHsgbV9jb21taXR0ZWQgPSBjb21taXR0ZWQ7IH0KICAgICAgICAgYm9vbCBpc0NvbW1pdHRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0dGVkOyB9Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNMb2FkaW5nKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CiAK
ICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgbWFpbkRvY3VtZW50RXJyb3IoKSBjb25zdCB7
IHJldHVybiBtX21haW5Eb2N1bWVudEVycm9yOyB9CiAKQEAgLTEzOSw4ICsxMzksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNDbGllbnRSZWRpcmVjdChib29sIGlz
Q2xpZW50UmVkaXJlY3QpIHsgbV9pc0NsaWVudFJlZGlyZWN0ID0gaXNDbGllbnRSZWRpcmVjdDsg
fQogICAgICAgICB2b2lkIGhhbmRsZWRPbmxvYWRFdmVudHMoKTsKICAgICAgICAgYm9vbCB3YXNP
bmxvYWRIYW5kbGVkKCkgeyByZXR1cm4gbV93YXNPbmxvYWRIYW5kbGVkOyB9Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwotICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsK
KyAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAgICBjb25zdCBTdHJp
bmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7
IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE1MCwyMyArMTUwLDIzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
ICAgICB2b2lkIHNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPik7CisgICAgICAgIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZl
Kik7CisgICAgICAgIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPik7CiAgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZy
YW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICAgICAgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgICAg
ICBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChS
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAKICAgICAg
ICAgLy8gUmV0dXJuIHRoZSBBcmNoaXZlUmVzb3VyY2UgZm9yIHRoZSBVUkwgb25seSB3aGVuIGxv
YWRpbmcgYW4gQXJjaGl2ZQogICAgICAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hpdmVSZXNvdXJj
ZUZvclVSTChjb25zdCBVUkwmKSBjb25zdDsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNz
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlKCkgY29uc3Q7CisgICAgICAgIFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UoKSBjb25zdDsKIAogICAgICAg
ICAvLyBSZXR1cm4gYW4gQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMLCBlaXRoZXIgY3JlYXRp
bmcgZnJvbSBsaXZlIGRhdGEgb3IKICAgICAgICAgLy8gcHVsbGluZyBmcm9tIHRoZSBBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXMo
KSBjb25zdDsKKyAgICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNl
KGNvbnN0IFVSTCYpIGNvbnN0OworICAgICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4+IHN1YnJlc291cmNlcygpIGNvbnN0OwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBib29s
IGlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKFJlc291cmNlTG9hZGVyKikgY29uc3Q7CkBAIC0xODUs
OCArMTg1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0b3BSZWNvcmRp
bmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsgfQogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OworICAgICAgICBVUkwgdXJsRm9y
SGlzdG9yeSgpIGNvbnN0OworICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1
cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBUaGVzZSBhY2Nlc3NvcnMgYWNjb21tb2RhdGUgV2Vi
Q29yZSdzIHNvbWV3aGF0IGZpY2tsZSBjdXN0b20gb2YgY3JlYXRpbmcgaGlzdG9yeQogICAgICAg
ICAvLyBpdGVtcyBmb3IgcmVkaXJlY3RzLCBidXQgb25seSBzb21ldGltZXMuIEZvciAic291cmNl
IiBhbmQgImRlc3RpbmF0aW9uIiwKQEAgLTIwOSw3ICsyMDksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0TWFpblJlc291cmNlRGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRh
QnVmZmVyaW5nUG9saWN5KTsKIAogICAgICAgICB2b2lkIHN0YXJ0TG9hZGluZ01haW5SZXNvdXJj
ZSgpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICAKICAgICAgICAgLy8gU3VwcG9ydCBp
Y29uRGF0YWJhc2UgaW4gc3luY2hyb25vdXMgbW9kZS4KICAgICAgICAgdm9pZCBpY29uTG9hZERl
Y2lzaW9uQXZhaWxhYmxlKCk7CkBAIC0yMjcsOCArMjI3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgYWRkU3VicmVzb3VyY2VMb2FkZXIoUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxvYWRlciopOwot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFBsdWdJblN0cmVhbUxvYWRlcihSZXNvdXJj
ZUxvYWRlciopOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVBsdWdJblN0cmVh
bUxvYWRlcihSZXNvdXJjZUxvYWRlciopOworICAgICAgICB2b2lkIGFkZFBsdWdJblN0cmVhbUxv
YWRlcihSZXNvdXJjZUxvYWRlciopOworICAgICAgICB2b2lkIHJlbW92ZVBsdWdJblN0cmVhbUxv
YWRlcihSZXNvdXJjZUxvYWRlciopOwogCiAgICAgICAgIHZvaWQgc3VicmVzb3VyY2VMb2FkZXJG
aW5pc2hlZExvYWRpbmdPbmVQYXJ0KFJlc291cmNlTG9hZGVyKik7CiAKQEAgLTI1NCw3ICsyNTQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVGhlIFdlYktpdCBsYXllciBj
YWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhlIGRhdGEgdG8KICAgICAg
ICAgLy8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OworICAgICAgICB2b2lkIGNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpOwogCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9z
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUhvc3QuZ2V0KCk7IH0KIApAQCAt
MjY5LDcgKzI2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOworICAgICAgICBEb2N1bWVudExvYWRl
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogCiAgICAg
ICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOwogCkBAIC0yOTQsMTAgKzI5NCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdm9pZCBm
aW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1haW5SZWNl
aXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3Zl
cnJpZGU7CiAKICAgICAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IGUwNmZhYTBlNjJjZTNkMzcwMjY5ZjBkYTQ1M2Vk
YjhmMjc5ODM5OTcuLjgxZDBmMTI5ZGZlM2M1Yjk1NTQ3MGM5ZjVkMjAzNGM5M2ZmMDZhOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC01MiwxMSArNTIsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgYmVnaW4oKTsKICAgICB2b2lkIGJlZ2luKGNvbnN0IFVSTCYsIGJv
b2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJE
b2N1bWVudCA9IDApOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90
IGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKKyAgICB2b2lkIGVuZCgp
OwogICAgIAogICAgIHZvaWQgc2V0RnJhbWUoRnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUgPSBmcmFt
ZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBib29sIHVzZXJDaG9zZW4pOworICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgYm9vbCB1c2VyQ2hvc2VuKTsKIAogICAgIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgdm9pZCBzZXRNSU1F
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIHsgbV9taW1lVHlwZSA9IHR5cGU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IGJi
M2RmODg1MmE0ZGIzYzY5OGM3NjI1NTYwNDAyMGY4NmM4ZGYyM2MuLmU1NDFlODMyMDQ3Y2EyZjI1
ZTQ3Y2E2Y2U1NDgxZmI1MTk1MDU3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBsaWNhdGlvbkNhY2hlKTsgfQogICAgIAotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRlbGV0ZUNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
Kik7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4q
KTsKICAgICAKICAgICB+QXBwbGljYXRpb25DYWNoZSgpOwogCkBAIC04OSw3ICs4OSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBzdGF0aWMgYm9vbCByZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQ2NF90
IGRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHN0YXRpYyBpbnQ2NF90
IGRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIAogICAgIGludDY0X3Qg
ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVkU2l6ZUlu
U3RvcmFnZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDg2YzE3NzQwZTliNTRjMDkzMTI4MTgzZmRiMDE0
YTBlYzEyY2Y3ZGYuLjc4NWUxMzczMTQ1NjQ2ZTA3NmM0ZWViZTU3YWNmMGRkYmY3OGFiOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIHZvaWQgZmFp
bGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBVUkwmIG9yaWdpbmFsVVJMKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBt
YXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2Fk
RmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
KyAgICAgICAgYm9vbCBtYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOworICAgICAgICBib29sIG1h
eWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgICAgIGJvb2wgbWF5YmVMb2FkU3luY2hy
b25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAgICAgICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXgg
NTdhNTQ1ZmY5NzJjNmU4NzZlOWNkMTlmMzEyMGE5OTZkNDIzZjkxNy4uNGI5NmQ3MTU0NmE1MWM0
NzdkZmRkMmMzYzE0NDQyMWU1NDNkOWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTUzLDIwICs1
MywyMCBAQCBwdWJsaWM6CiAgICAgICAgIERpc2tPck9wZXJhdGlvbkZhaWx1cmUKICAgICB9Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE1heGltdW1TaXplKGludDY0X3Qgc2l6ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
aW50NjRfdCBtYXhpbXVtU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TWF4aW11bVNpemUoaW50
NjRfdCBzaXplKTsKKyAgICBpbnQ2NF90IG1heGltdW1TaXplKCkgY29uc3Q7CiAgICAgYm9vbCBp
c01heGltdW1TaXplUmVhY2hlZCgpIGNvbnN0OwogICAgIGludDY0X3Qgc3BhY2VOZWVkZWQoaW50
NjRfdCBjYWNoZVRvU2F2ZSk7CiAKICAgICBpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdE9yaWdpblF1b3RhOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXREZWZhdWx0T3JpZ2luUXVvdGEoaW50NjRfdCBxdW90YSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbios
IGludDY0X3QmIHVzYWdlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbGN1bGF0ZVF1b3Rh
Rm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgcXVvdGEpOworICAgIHZv
aWQgc2V0RGVmYXVsdE9yaWdpblF1b3RhKGludDY0X3QgcXVvdGEpOworICAgIGJvb2wgY2FsY3Vs
YXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90JiB1c2FnZSk7
CisgICAgYm9vbCBjYWxjdWxhdGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbios
IGludDY0X3QmIHF1b3RhKTsKICAgICBib29sIGNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmln
aW5FeGNsdWRpbmdDYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiosIEFwcGxpY2F0aW9uQ2FjaGUq
LCBpbnQ2NF90JiByZW1haW5pbmdTaXplKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0b3Jl
VXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90
YSk7CisgICAgYm9vbCBzdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiosIGludDY0X3QgcXVvdGEpOwogICAgIGJvb2wgY2hlY2tPcmlnaW5RdW90YShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqLCBBcHBsaWNhdGlvbkNhY2hlKiBvbGRDYWNoZSwgQXBwbGljYXRpb25D
YWNoZSogbmV3Q2FjaGUsIGludDY0X3QmIHRvdGFsU3BhY2VOZWVkZWQpOwogCiAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYpOyAvLyBDYWNoZSB0
byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgpAQCAtODUsMTcgKzg1LDE3IEBAIHB1YmxpYzoK
ICAgICAvLyBSZW1vdmVzIHRoZSBncm91cCBpZiB0aGUgY2FjaGUgdG8gYmUgcmVtb3ZlZCBpcyB0
aGUgbmV3ZXN0IG9uZSAoc28sIHN0b3JlTmV3ZXN0Q2FjaGUoKSBuZWVkcyB0byBiZSBjYWxsZWQg
YmVmb3JlaGFuZCB3aGVuIHVwZGF0aW5nKS4KICAgICB2b2lkIHJlbW92ZShBcHBsaWNhdGlvbkNh
Y2hlKik7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOworICAgIHZvaWQg
ZW1wdHkoKTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBXRUJDT1JFX0VYUE9SVCBzdG9yZUNvcHlP
ZkNhY2hlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
Kik7CisgICAgc3RhdGljIGJvb2wgc3RvcmVDb3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hl
RGlyZWN0b3J5LCBBcHBsaWNhdGlvbkNhY2hlSG9zdCopOwogCiAgICAgYm9vbCBtYW5pZmVzdFVS
THMoVmVjdG9yPFVSTD4qIHVybHMpOwogICAgIGJvb2wgY2FjaGVHcm91cFNpemUoY29uc3QgU3Ry
aW5nJiBtYW5pZmVzdFVSTCwgaW50NjRfdCogc2l6ZSk7CiAgICAgYm9vbCBkZWxldGVDYWNoZUdy
b3VwKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dmFjdXVtRGF0YWJhc2VGaWxlKCk7CisgICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIFNlY3VyaXR5T3JpZ2luSGFzaD4mKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKKyAgICB2b2lkIGdldE9yaWdpbnNXaXRoQ2Fj
aGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+Jik7
CisgICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICBzdGF0aWMgaW50NjRfdCB1bmtu
b3duUXVvdGEoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBpbnQ2NF90IG5vUXVvdGEoKSB7
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCA3ZjFjMzJl
Y2U4OTRmM2IxZTRiOTllZWI0ODFhYjVkOTE4OTg0ZDM2Li4yZWYwNDA0NTJiZTVhZTg3ZDA4ODIw
ZjY1MWUxZGZjYWYzZWEzNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA5OWY1YTg2NzVkNzljNzExZWJi
ZWUwY2NiNmUzNWUxZjRlNGRjZDYwLi40OGYwYzYwMjYxMzVhMDM0MGJmY2Y2YmUwMzY0MmY5Yzkz
YmNhZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
NTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkSW1hZ2UoY29uc3QgVVJMJiwgSW1hZ2Uq
LCBDYWNoZUJlaGF2aW9yVHlwZSwgU2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFn
ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhl
IG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KLSAgICBXRUJD
T1JFX0VYUE9SVCBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsg
Ly8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUg
eWV0LgorICAgIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0
aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCisgICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRo
ZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBhZjk0ODBlMWNjZGZjMWVjZmVjMTljNjBmMDU3
ZmUzNzYyOGJkZmI2Li5mNzM4Nzc4Y2NjYzY1Mzk2YmJiNTI0MWJjMTJmOWYzY2RmMjkyZWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTE2
LDggKzExNiw4IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3Jp
dHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQogICAgIHZvaWQgc2V0TG9hZFBy
aW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKKyAgICB2b2lkIGFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCopOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50Kik7CiAgICAgYm9vbCBoYXNDbGllbnRzKCkgY29uc3QgeyByZXR1cm4gIW1f
Y2xpZW50cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suaXNFbXB0eSgp
OyB9CiAgICAgYm9vbCBoYXNDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkgeyBy
ZXR1cm4gbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkgfHwgbV9jbGllbnRzQXdhaXRpbmdDYWxs
YmFjay5jb250YWlucyhjbGllbnQpOyB9CiAgICAgYm9vbCBkZWxldGVJZlBvc3NpYmxlKCk7CkBA
IC0yMjAsNyArMjIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVhc2VQcmVsb2FkQ291bnQo
KSB7IEFTU0VSVChtX3ByZWxvYWRDb3VudCk7IC0tbV9wcmVsb2FkQ291bnQ7IH0KICAgICAKICAg
ICB2b2lkIHJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSogaCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZSogaCk7CisgICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZSogaCk7CiAgICAgCiAgICAgYm9vbCBjYW5Vc2VDYWNoZVZhbGlkYXRvcigpIGNvbnN0Owog
CkBAIC0yNDksNyArMjQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0
YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworICAgIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWRE
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aAppbmRleCBjZTczOTIyMGJhMWFlYzgxZjBiMzQyNTdjZjMwOGFkMTA4ZGFkYjM3Li41YjZiNDI1
NDA1MmZmMTIzZGQ0YjQ0YjU5ZjM1Nzg1ODBhOTJjMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaApAQCAtNDksNyArNDksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKENhY2hlZFJlc291cmNl
Kik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKGNvbnN0IENhY2hlZFJlc291cmNlSGFu
ZGxlQmFzZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSopOworICAgIHZvaWQgc2V0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICAK
IHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlJiBvcGVyYXRvcj0oY29uc3Qg
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlJikgeyByZXR1cm4gKnRoaXM7IH0gCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDcw
NzZjODYwY2M5NGFkMDQ0YWI2MGZmNDE2YjRhMzE2ZmU5MWY1Y2IuLjA5MmRjOWVkODEzZGEwNzY5
M2Y1MDczNGVhYWRkOWMyMmI2M2Q2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC0xMTcsMTMgKzExNywxMyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxvYWREb25lKENhY2hlZFJlc291cmNlKiwgYm9vbCBzaG91bGRQZXJm
b3JtUG9zdExvYWRBY3Rpb25zID0gdHJ1ZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdh
cmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKTsKKyAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0
RG9jdW1lbnRSZXNvdXJjZXMoKTsKICAgICAKICAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3Vu
dChjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgaW50IHJlcXVlc3RDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdENvdW50OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUHJl
bG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKKyAgICBib29sIGlzUHJlbG9h
ZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUHJlbG9h
ZHMoKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1ByZWxvYWRzKCk7CiAgICAgdm9pZCBwcmVsb2Fk
KENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggM2FjZGQ1ZTBlM2E3N2JlMTljNmQ1
MWJiN2I1NWJlYjMzNGRmNjZjZi4uNDEzNGI0Yzg1ZTY2OTc0ZDYxNTdkNTY5ZjdkNjkzODQ3NWQy
NzhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQqKSBjb25zdDsKICAgICB2b2lkIGZv
Y3VzZWRGcmFtZUNoYW5nZWQoRnJhbWUqKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFBh
Z2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKKyAgICBQYWdl
KiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgY29uc3Q7CiAgICAgdm9pZCBz
aG93KCkgY29uc3Q7CiAKICAgICBib29sIGNhblJ1bk1vZGFsKCkgY29uc3Q7CkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29u
c3QgU3RyaW5nJik7CiAgICAgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSosIGNvbnN0
IFN0cmluZyYpOwogICAgIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJp
bmcmKTsKICAgICBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKIAogICAgIEludFJl
Y3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwcmludChGcmFtZSopOworICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsK
IAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKICAgICB2b2lkIGRpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbigpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBib29s
IHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKTsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9jdXNOU1ZpZXcoTlNWaWV3Kik7CisgICAg
dm9pZCBmb2N1c05TVmlldyhOU1ZpZXcqKTsKICNlbmRpZgogCiAgICAgYm9vbCBzZWxlY3RJdGVt
V3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmgKaW5kZXggODM3NTUzMmM0MDVlODY3YWRjYTJlOWMyZDMxMDllNjhi
YzRlN2Q0Mi4uYzk5NjY5Y2U2ZjE2MjA0MDQ3N2FmNjMzZWFhZmZkYWEzMjg2MzYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCkBAIC01MCwxNiArNTAs
MTYgQEAgcHVibGljOgogICAgIH5Db250ZXh0TWVudUNvbnRyb2xsZXIoKTsKIAogICAgIENvbnRl
eHRNZW51KiBjb250ZXh0TWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnUuZ2V0KCk7
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ29udGV4dE1lbnUoKTsKKyAgICB2b2lk
IGNsZWFyQ29udGV4dE1lbnUoKTsKIAogICAgIHZvaWQgaGFuZGxlQ29udGV4dE1lbnVFdmVudChF
dmVudCopOwogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KEV2ZW50KiwgUGFzc1JlZlB0cjxDb250
ZXh0TWVudVByb3ZpZGVyPik7CiAKICAgICB2b2lkIHBvcHVsYXRlKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qKTsKKyAg
ICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSopOwogICAgIHZv
aWQgYWRkSW5zcGVjdEVsZW1lbnRJdGVtKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNo
ZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsKKyAgICB2b2lkIGNo
ZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0Q29udGV4dE1lbnVDb250ZXh0KGNvbnN0IENvbnRleHRNZW51Q29udGV4dCYgY29udGV4dCkg
eyBtX2NvbnRleHQgPSBjb250ZXh0OyB9CiAgICAgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0JiBj
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAppbmRleCA5N2ExNTUyNDFjNzVjZmY2ZDgzZmM4YzA4MGZhYTVkYmRiY2MwZjk0Li4zM2FlZDQ1
MjhiZDc5OWI3MGNlNzBiNjIwMWUwMTQ3ZWVmY2U5ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKQEAgLTEyNCwxMCArMTI0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQ
YXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVy
cygpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMo
KSBjb25zdDsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkaXNwYXRjaEFs
bFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHMoKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCk7CisgICAgICAgIHN0YXRp
YyBib29sIGRpc3BhdGNoQWxsUGVuZGluZ0JlZm9yZVVubG9hZEV2ZW50cygpOworICAgICAgICBz
dGF0aWMgdm9pZCBkaXNwYXRjaEFsbFBlbmRpbmdVbmxvYWRFdmVudHMoKTsKIAogICAgICAgICBz
dGF0aWMgRmxvYXRSZWN0IGFkanVzdFdpbmRvd1JlY3QoUGFnZSosIGNvbnN0IEZsb2F0UmVjdCYg
cGVuZGluZ0NoYW5nZXMpOwogCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiA9IDApOwog
ICAgICAgICB2b2lkIGJsdXIoKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiA9IDApOworICAgICAgICB2b2lkIGNsb3NlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqID0gMCk7CiAgICAgICAgIHZvaWQgcHJpbnQoKTsKICAgICAgICAgdm9p
ZCBzdG9wKCk7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxET01XaW5kb3c+
IG9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBTdHJpbmcmIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLAorICAgICAgICBQYXNzUmVm
UHRyPERPTVdpbmRvdz4gb3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWlj
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcsCiAg
ICAgICAgICAgICBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRv
dyk7CiAKICAgICAgICAgdm9pZCBzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZl
V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERPTVdp
bmRvdyYpPiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pOwpAQCAtMjE2LDcgKzIxNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBBYnN0cmFjdFZpZXcgSW50
ZXJmYWNlCiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Q7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgICAgIC8vIENT
U09NIFZpZXcgTW9kdWxlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5o
CmluZGV4IDQ5MjkwYmM0MmY2Y2Q5ZWNmNTRjODE0YjdhYjY1NzQ4ODU3Y2I0NmQuLmMxODRhMGU2
YTM0M2UyOGRmNGRjODMzNzRlOTQ1NjVmZmUxMzFmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dFeHRlbnNpb24uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCgpIGNvbnN0IHsgcmV0dXJuICptX3dvcmxkOyB9CiAKIHByaXZhdGU6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBl
cldvcmxkJik7CisgICAgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxk
Jik7CiAKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIFJlZlB0cjxG
cmFtZT4gbV9kaXNjb25uZWN0ZWRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCAyNWE2MTZmYmYxMTUyZjUyNTExMGI5MzBkNGNmMjVlZjA1NTAyZjYzLi40N2UzY2M5
N2Q3YzgzZjgxZjFhZmUyNzVhYjExZGNjOTI4OGM5YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCkBAIC01NywxMCArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIERyYWdDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnRW50ZXJlZChEcmFnRGF0
YSYpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFeGl0ZWQoRHJhZ0RhdGEmKTsK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnVXBkYXRlZChEcmFnRGF0
YSYpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBlcmZvcm1EcmFnT3BlcmF0aW9uKERy
YWdEYXRhJik7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWQoRHJhZ0RhdGEmKTsK
KyAgICAgICAgdm9pZCBkcmFnRXhpdGVkKERyYWdEYXRhJik7CisgICAgICAgIERyYWdPcGVyYXRp
b24gZHJhZ1VwZGF0ZWQoRHJhZ0RhdGEmKTsKKyAgICAgICAgYm9vbCBwZXJmb3JtRHJhZ09wZXJh
dGlvbihEcmFnRGF0YSYpOwogCiAgICAgICAgIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQoKSBj
b25zdCB7IHJldHVybiBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlOyB9CiAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9mSXRlbXNUb0JlQWNjZXB0ZWQ7IH0KQEAgLTgwLDkgKzgwLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBEcmFnU291cmNlQWN0aW9uIGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihj
b25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCk7CiAgICAgICAgIAogICAgICAgICBFbGVtZW50
KiBkcmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiwgRWxlbWVudCogc3RhcnQsIGNvbnN0IElu
dFBvaW50JiwgRHJhZ1N0YXRlJikgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhZ0VuZGVkKCk7CisgICAgICAgIHZvaWQgZHJhZ0VuZGVkKCk7CiAgICAgICAgIAotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0IEludFBvaW50Jik7Cisg
ICAgICAgIHZvaWQgcGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdP
cGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25z
dCBJbnRQb2ludCYgZHJhZ09yaWdpbik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBt
YXhEcmFnSW1hZ2VTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAxYjAy
NmUyODlmZTM0ZDA0YjQ5ZmRhNTFmN2ZmZTBjYjlmOGM5MmM5Li43YjJjYzE0Njg0MjQzOGM3NTYw
ZWI3Mzg1NWRiMzkzOTdhMTFkYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAg
LTE0NywxNCArMTQ3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5R
dWFkKGNvbnN0IEZsb2F0UXVhZCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSGl0VGVzdFJlc3Vs
dCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYsCisgICAgSGl0VGVzdFJl
c3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYsCiAgICAgICAgIEhp
dFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50LAogICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0g
TGF5b3V0U2l6ZSgpKTsKIAogICAgIGJvb2wgbW91c2VQcmVzc2VkKCkgY29uc3QgeyByZXR1cm4g
bV9tb3VzZVByZXNzZWQ7IH0KICAgICBOb2RlKiBtb3VzZVByZXNzTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW91c2VQcmVzc05vZGUuZ2V0KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4pOyAvLyBB
IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmVzZXR0aW5nIGNhcHR1cmluZyBlbGVtZW50IHRv
IDAuCisgICAgdm9pZCBzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQoUGFzc1JlZlB0cjxF
bGVtZW50Pik7IC8vIEEgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZXNldHRpbmcgY2FwdHVy
aW5nIGVsZW1lbnQgdG8gMC4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCB1
cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEYXRhVHJhbnNmZXIq
KTsKQEAgLTE3OCwyMiArMTc4LDIyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRnJhbWUqIHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShOb2RlKik7CiAgICAgc3RhdGljIEZyYW1lKiBzdWJmcmFtZUZvckhp
dFRlc3RSZXN1bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxPdmVyZmxvdyhTY3JvbGxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IDApOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbG9n
aWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsKKyAgICBib29sIHNjcm9sbE92ZXJmbG93
KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9
IDApOworICAgIGJvb2wgc2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7CisgICAgYm9vbCBsb2dpY2FsU2Ny
b2xsUmVjdXJzaXZlbHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHks
IE5vZGUqIHN0YXJ0aW5nTm9kZSA9IDApOwogCiAgICAgYm9vbCB0YWJzVG9MaW5rcyhLZXlib2Fy
ZEV2ZW50KikgY29uc3Q7CiAgICAgYm9vbCB0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5Ym9hcmRF
dmVudCopIGNvbnN0OwogCiAgICAgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFzc01vdXNlTW92ZWRFdmVudFRvU2Ny
b2xsYmFycyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICBib29sIHBhc3NNb3VzZU1v
dmVkRXZlbnRUb1Njcm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKICAgICB2
b2lkIGxvc3RNb3VzZUNhcHR1cmUoKTsKIAogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUg
PSAwLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOwogICAgIGJvb2wgaGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
OworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
ICAgICB2b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxFdmVudCopOwog
ICAgIGJvb2wgaGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VuZENvbnRleHRNZW51
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgYm9vbCBzZW5kQ29udGV4dE1l
bnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIHNlbmRDb250ZXh0
TWVudUV2ZW50Rm9yS2V5KCk7CiAjZW5kaWYKIApAQCAtMjMwLDQxICsyMzAsNDEgQEAgcHVibGlj
OgogICAgIGJvb2wgbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKSBjb25z
dDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBhY2Nlc3NLZXlNb2RpZmllcnMoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhbmRsZUFjY2Vzc0tleShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCYpOworICAgIGJvb2wgaGFuZGxlQWNjZXNzS2V5KGNvbnN0IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCYpOworICAgIGJvb2wga2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2
ZW50Jik7CiAgICAgdm9pZCBkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVu
dCopOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1v
dmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2FyZEV2ZW50Kik7CisgICAgdm9pZCBoYW5kbGVL
ZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2FyZEV2ZW50Kik7
CiAKICAgICBib29sIGhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZl
bnQqIHVuZGVybHlpbmdFdmVudCA9IDAsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElu
cHV0S2V5Ym9hcmQpOwogICAgIHZvaWQgZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0
RXZlbnQqKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBjb25zdDsK
KyAgICBib29sIGV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNv
bnN0OwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJhZ09wZXJhdGlvbik7CisgICAgdm9pZCBkcmFnU291
cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uKTsKICNl
bmRpZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwogCiAgICAgdm9pZCBjYXBzTG9j
a1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsgLy8gT25seSBjYWxsZWQgYnkgRnJhbWVTZWxlY3Rpb24K
ICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbmRTY3JvbGxFdmVudCgpOyAvLyBEaXR0
bworICAgIHZvaWQgc2VuZFNjcm9sbEV2ZW50KCk7IC8vIERpdHRvCiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgZGVmaW5lZChfX09CSkNfXykKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbW91c2VEb3duKE5TRXZlbnQgKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBtb3VzZURyYWdnZWQoTlNFdmVudCAqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1v
dXNlVXAoTlNFdmVudCAqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdXNlTW92ZWQoTlNF
dmVudCAqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2ZW50KE5TRXZlbnQgKik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3aGVlbEV2ZW50KE5TRXZlbnQgKik7CisgICAgdm9pZCBt
b3VzZURvd24oTlNFdmVudCAqKTsKKyAgICB2b2lkIG1vdXNlRHJhZ2dlZChOU0V2ZW50ICopOwor
ICAgIHZvaWQgbW91c2VVcChOU0V2ZW50ICopOworICAgIHZvaWQgbW91c2VNb3ZlZChOU0V2ZW50
ICopOworICAgIGJvb2wga2V5RXZlbnQoTlNFdmVudCAqKTsKKyAgICBib29sIHdoZWVsRXZlbnQo
TlNFdmVudCAqKTsKICNlbHNlCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3VzZURvd24oV2Vi
RXZlbnQgKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3VzZVVwKFdlYkV2ZW50ICopOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW91c2VNb3ZlZChXZWJFdmVudCAqKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGtleUV2ZW50KFdlYkV2ZW50ICopOwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgd2hlZWxFdmVudChXZWJFdmVudCAqKTsKKyAgICB2b2lkIG1vdXNlRG93bihXZWJFdmVu
dCAqKTsKKyAgICB2b2lkIG1vdXNlVXAoV2ViRXZlbnQgKik7CisgICAgdm9pZCBtb3VzZU1vdmVk
KFdlYkV2ZW50ICopOworICAgIGJvb2wga2V5RXZlbnQoV2ViRXZlbnQgKik7CisgICAgYm9vbCB3
aGVlbEV2ZW50KFdlYkV2ZW50ICopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VW
RU5UUykKQEAgLTI3MiwxNSArMjcyLDE1IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgIVBMQVRG
T1JNKElPUykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhc3NNb3VzZU1vdmVkRXZlbnRUb1Nj
cm9sbGJhcnMoTlNFdmVudCAqKTsKKyAgICB2b2lkIHBhc3NNb3VzZU1vdmVkRXZlbnRUb1Njcm9s
bGJhcnMoTlNFdmVudCAqKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZEZha2VFdmVu
dHNBZnRlcldpZGdldFRyYWNraW5nKE5TRXZlbnQgKmluaXRpYXRpbmdFdmVudCk7CisgICAgdm9p
ZCBzZW5kRmFrZUV2ZW50c0FmdGVyV2lkZ2V0VHJhY2tpbmcoTlNFdmVudCAqaW5pdGlhdGluZ0V2
ZW50KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldEFjdGl2YXRp
b25FdmVudE51bWJlcihpbnQgbnVtKSB7IG1fYWN0aXZhdGlvbkV2ZW50TnVtYmVyID0gbnVtOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNFdmVudCAqY3VycmVudE5TRXZlbnQoKTsK
KyAgICBzdGF0aWMgTlNFdmVudCAqY3VycmVudE5TRXZlbnQoKTsKICNlbHNlCiAgICAgc3RhdGlj
IFdlYkV2ZW50ICpjdXJyZW50RXZlbnQoKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpAQCAt
MjkxLDcgKzI5MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaEV2ZW50Jik7CisgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYpOwogI2VuZGlmCiAKICAgICBib29sIHVzZUhhbmRDdXJzb3IoTm9kZSosIGJv
b2wgaXNPdmVyTGluaywgYm9vbCBzaGlmdEtleSk7CkBAIC0zMTUsMTQgKzMxNSwxNCBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUHJl
c3NFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CisgICAgYm9vbCBo
YW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYp
OwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50
RG91YmxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogICAgIGJv
b2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5k
bGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7
CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKKyAgICBib29sIGhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAog
ICAgIE9wdGlvbmFsQ3Vyc29yIHNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiwgYm9v
bCBzaGlmdEtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuaAppbmRleCA2YWUxNTdkZjM3ZDM1Mzc1YTU1NTRmYzM2OTEwZTlk
OTgwOTcxY2IyLi5iZTExMmIxMzE4MGRiNTA5ZGFjM2M5YWJkYjA2Y2VlNjgxNzAzODYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxl
ci5oCkBAIC01NCwxNiArNTQsMTYgQEAgcHVibGljOgogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdo
ZW4gYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gaGFzIGFjdHVhbGx5IHN0
YXJ0ZWQgdG8gYW5pbWF0ZS4KICAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoUmVuZGVy
RWxlbWVudCosIGRvdWJsZSBzdGFydFRpbWUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
YXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVzdGluZwotICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25z
dCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVz
dGluZwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyhEb2N1bWVudCopIGNvbnN0OyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcKKyAgICBi
b29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCisgICAg
Ym9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cHJvcGVydHksIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCisgICAg
dW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3VtZW50KikgY29uc3Q7IC8vIFRv
IGJlIHVzZWQgb25seSBmb3IgdGVzdGluZwogICAgIAogICAgIGJvb2wgaXNSdW5uaW5nQW5pbWF0
aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgQW5pbWF0aW9uQmFz
ZTo6UnVubmluZ1N0YXRlKSBjb25zdDsKICAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5p
bWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgQW5pbWF0aW9u
QmFzZTo6UnVubmluZ1N0YXRlKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNT
dXNwZW5kZWQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRp
b25zKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CisgICAg
Ym9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0OworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsK
KyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUpCiAgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9ucygpOwogI2VuZGlmCkBAIC03NSw4
ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luQW5pbWF0aW9uVXBkYXRlKCk7CiAgICAg
dm9pZCBlbmRBbmltYXRpb25VcGRhdGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxs
b3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWQoYm9vbCk7CisgICAg
Ym9vbCBhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWQoKSBjb25zdDsKKyAgICB2b2lk
IHNldEFsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZChib29sKTsKICAgICAKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkQW5pbWF0aW9uT2ZQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDMzYmFjMjFiYWIwZDM1YTdjM2FmMDQ3
NGEwMGU3YjY2ZGFiYmJmY2IuLmZhMTRkMzUwMDU1ZTVlMzE4MzkwYTRhMTIxNGY2NWIzN2U0Njc4
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTQ5LDE2ICs0OSwxNiBAQCBjbGFzcyBTY3JvbGxp
bmdTdGF0ZVRyZWU7CiBjbGFzcyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVibGljIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBjcmVhdGUoUGFnZSopOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKKyAgICB2aXJ0dWFsIH5Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAKICAgICBTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdU
cmVlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdUcmVlLmdldCgpOyB9CiAKICAgICB2b2lk
IHNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRpZXNDaGFuZ2VkKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNj
cm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xs
LCBTZXRPclN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKKyAgICB2b2lkIHNjaGVkdWxlVXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3Qg
RmxvYXRQb2ludCYsIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRPclN5bmNTY3JvbGxpbmdM
YXllclBvc2l0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IoUGFnZSopOworICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Io
UGFnZSopOwogCiAgICAgdm9pZCBzZXRTY3JvbGxpbmdUcmVlKFBhc3NSZWZQdHI8U2Nyb2xsaW5n
VHJlZT4gc2Nyb2xsaW5nVHJlZSkgeyBtX3Njcm9sbGluZ1RyZWUgPSBzY3JvbGxpbmdUcmVlOyB9
CiAKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxQ
b3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50
JiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwsIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRp
b24pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBTdHJpbmcgc2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KQEAgLTc2LDI5ICs3NiwyOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzKEZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBk
YXRlZChGcmFtZVZpZXcqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZyYW1l
Vmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1l
VmlldyopIG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHJlcXVl
c3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVW
aWV3KiwgY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBl
LCBTY3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVU
cmVlKFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGNsZWFyU3RhdGVUcmVlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBTY3JvbGxpbmdO
b2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJ
RCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRldGFjaEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZUlEKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZVRyZWUoKSBvdmVycmlkZTsKICAgICAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGUo
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJiwgR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVk
Tm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWludHMmLCBHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5ZXIq
IHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBo
aWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5zZXRDbGlw
TGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5n
Tm9kZUlELCBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllciwgR3JhcGhpY3NMYXllciogc2Nyb2xs
ZWRDb250ZW50c0xheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSogPSBudWxscHRyKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwg
R3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVu
dHNMYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xh
eWVyKiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cik7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdO
b2RlSUQsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51bGxwdHIpOwogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5u
aW5nQmVoYXZpb3IpIG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHN5bmNDaGlsZFBvc2l0aW9ucyhjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpIG92ZXJy
aWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9s
bGJhckxheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2hpbGRQb3NpdGlvbnMoY29uc3QgTGF5
b3V0UmVjdCYgdmlld3BvcnRSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
YWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJh
ck9yaWVudGF0aW9uKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyop
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1l
VmlldyhGcmFtZVZpZXcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucykgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCA0NDhhMzVhMjU4
MTU4ZWQyZmIyODg1MzIwMTIwNTFlNmFkMmFlNmQ0Li4zMGVjNzgwNzJjMTZjMTZjYTQ3MzI4YjMz
Mjc1NjUyNjQxMmYyYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxj
dWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25W
YWx1ZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25W
YWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGN1bGF0aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUo
c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIENhbGN1bGF0aW9uUGVybWl0dGVk
VmFsdWVSYW5nZSk7CisgICAgc3RhdGljIFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRl
KHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1pdHRl
ZFZhbHVlUmFuZ2UpOwogICAgIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdDsK
IAogICAgIGJvb2wgc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRDbGFtcFRvTm9uTmVnYXRpdmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRG
aWx0ZXIuaAppbmRleCA2N2EzYWExMzNkZjAwOTI1ZmQxYzJmZTAzM2MzZDAzY2UxYWQyNTkxLi5j
M2Q2MzRkNDdkN2ZiNTdhZWMyNjA5MWFhNWM2MjBkMzRhMzhkNDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29udGVudEZpbHRlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICBleHBsaWNpdCBDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+Q29udGVudEZpbHRlcigpOworICAgIH5Db250ZW50RmlsdGVyKCk7
CiAKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAgICAg
dm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKTsKQEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgY2hhciogZ2V0UmVwbGFjZW1lbnREYXRhKGludCYgbGVuZ3RoKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdFQkNPUkVfRVhQT1JUIENvbnRlbnRGaWx0ZXIoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShOU0tleWVkQXJjaGl2ZXIgKikgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVy
ICosIENvbnRlbnRGaWx0ZXImKTsKKyAgICBDb250ZW50RmlsdGVyKCk7CisgICAgdm9pZCBlbmNv
ZGUoTlNLZXllZEFyY2hpdmVyICopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShOU0tl
eWVkVW5hcmNoaXZlciAqLCBDb250ZW50RmlsdGVyJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZVVuYmxvY2tSZXF1ZXN0QW5kRGlz
cGF0Y2hJZlN1Y2Nlc3NmdWwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KTsKKyAgICBib29sIGhhbmRsZVVuYmxvY2tSZXF1ZXN0QW5kRGlzcGF0Y2hJZlN1Y2Nl
c3NmdWwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKICNl
bmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGV4dE1lbnUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKaW5kZXgg
ZmY5ZDM2YmY1MzljOGRkZTNiN2U0MTM4NzIzOGU3MWJmZDE1NDk1ZS4uZjBhODBkN2Y0MmFmOTUy
MTdiYWY4NjgxOGU3MGQxNDVlZTViYzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0
TWVudS5oCkBAIC03Nyw4ICs3Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB1
bnNpZ25lZCBpdGVtQ291bnQoKSBjb25zdDsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0
Zm9ybU1lbnVEZXNjcmlwdGlvbiBwbGF0Zm9ybURlc2NyaXB0aW9uKCkgY29uc3Q7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVE
ZXNjcmlwdGlvbik7CisgICAgICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBsYXRmb3JtRGVz
Y3JpcHRpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uKTsKIAogICAgICAgICBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlv
biByZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOwogI2VuZGlmIC8vIFVTRShDUk9TU19QTEFU
Rk9STV9DT05URVhUX01FTlVTKQpAQCAtMTAxLDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICB9OwogCiAjaWYgIVVTRShDUk9TU19QTEFURk9STV9DT05URVhUX01FTlVTKQotV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9y
KFBsYXRmb3JtTWVudURlc2NyaXB0aW9uKTsKK1ZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRl
eHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CiBQbGF0Zm9ybU1lbnVE
ZXNjcmlwdGlvbiBwbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbihWZWN0b3I8Q29udGV4dE1lbnVJdGVt
PiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
eHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgK
aW5kZXggZDYwNDBlYjNlOTA5YmNjYzczNGU5YzkxNTk3NGM3MmU2YmZlN2JkNi4uNDE1M2I1ZjAz
ZmVkZDYzNGFhNDg3MDY4NzY5ZGMzNjNkY2EzYmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTE4OCwyMiArMTg4LDIyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBDb250ZXh0TWVudUl0ZW0gewogICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbnRleHRN
ZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlLCBDb250ZXh0TWVudUFjdGlvbiwgY29uc3QgU3Ry
aW5nJiwgQ29udGV4dE1lbnUqIHN1Yk1lbnUgPSAwKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Q29udGV4dE1lbnVJdGVtKENvbnRleHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBj
b25zdCBTdHJpbmcmLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCk7CisgICAgICAgIENvbnRl
eHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlLCBDb250ZXh0TWVudUFjdGlvbiwgY29uc3Qg
U3RyaW5nJiwgQ29udGV4dE1lbnUqIHN1Yk1lbnUgPSAwKTsKKyAgICAgICAgQ29udGV4dE1lbnVJ
dGVtKENvbnRleHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcm
LCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCk7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
fkNvbnRleHRNZW51SXRlbSgpOworICAgICAgICB+Q29udGV4dE1lbnVJdGVtKCk7CiAKICAgICAg
ICAgdm9pZCBzZXRUeXBlKENvbnRleHRNZW51SXRlbVR5cGUpOwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUoKSBjb25zdDsKKyAgICAgICAgQ29udGV4dE1l
bnVJdGVtVHlwZSB0eXBlKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRBY3Rpb24oQ29udGV4
dE1lbnVBY3Rpb24pOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24oKSBjb25zdDsKKyAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKCkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wgPSB0cnVlKTsKLSAgICAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjaGVja2VkKCkgY29uc3Q7CisgICAgICAgIGJvb2wgY2hlY2tlZCgpIGNv
bnN0OwogCiAgICAgICAgIHZvaWQgc2V0RW5hYmxlZChib29sID0gdHJ1ZSk7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgpIGNvbnN0OworICAgICAgICBib29sIGVuYWJsZWQo
KSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldFN1Yk1lbnUoQ29udGV4dE1lbnUqKTsKIApAQCAt
MjI1LDE2ICsyMjUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBWZWN0
b3I8Q29udGV4dE1lbnVJdGVtPiYgc3ViTWVudUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9zdWJN
ZW51SXRlbXM7IH0KICNlbHNlCiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKTsKKyAg
ICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlv
bik7CiAgICAgICAgIGV4cGxpY2l0IENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudSogc3ViTWVu
dSA9IDApOwogICAgICAgICBDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVBY3Rpb24sIGNvbnN0
IFN0cmluZyYsIGJvb2wgZW5hYmxlZCwgYm9vbCBjaGVja2VkLCBWZWN0b3I8Q29udGV4dE1lbnVJ
dGVtPiYgc3VibWVudUl0ZW1zKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybU1l
bnVJdGVtRGVzY3JpcHRpb24gcmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICAgICAg
UGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIHJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7
CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisgICAgICAg
IFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBs
YXRmb3JtU3ViTWVudSgpIGNvbnN0OworICAgICAgICBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBw
bGF0Zm9ybVN1Yk1lbnUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdWJNZW51KFZlY3RvcjxD
b250ZXh0TWVudUl0ZW0+Jik7CiAKICNlbmRpZiAvLyBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVY
VF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFk
Q29waWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCmlu
ZGV4IDhkZGE1MTY1ODA5M2IwM2U5ZGI1ZDBkMDU1OGRjYjY4NDcyNDJiZGEuLjM5OGU4NGVkNGU1
MzEwYWMxZTcyOGJjMjNiOGE5ODFmNDk3MTlhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTA3LDcgKzEwNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZlcnRpYmxlPFJlZkNvdW50
ZWRUeXBlKiwgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVmQ291bnRlZFR5cGU+Kj46OnZhbHVlLCAi
VCBpcyBub3QgY29udmVydGlibGUgdG8gVGhyZWFkU2FmZVJlZkNvdW50ZWQhIik7CiAKICAgICAg
ICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlZkNvdW50ZWRUeXBlPiBUeXBlOwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFQmIHJlZlB0cikKKyAgICAgICAgc3Rh
dGljIFR5cGUgY29weShjb25zdCBUJiByZWZQdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiByZWZQdHI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKaW5kZXggZGFm
ZjAxNzA5ZTYzMDYzMmNkZjZhYTMyM2U0ZDRlMGFlZWExODlhYS4uNDEwMDQzMGRlZjBmYTQ4Mzk1
MGVhOWRmOTgxYzc4MWMxNTU2Y2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKQEAgLTEy
Niw3ICsxMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBDdXN0b20KICAg
ICAgICAgfTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgQ3Vyc29yJiBm
cm9tVHlwZShDdXJzb3I6OlR5cGUpOworICAgICAgICBzdGF0aWMgY29uc3QgQ3Vyc29yJiBmcm9t
VHlwZShDdXJzb3I6OlR5cGUpOwogCiAgICAgICAgIEN1cnNvcigpCiAjaWYgIVBMQVRGT1JNKElP
UykKQEAgLTEzOCwxNiArMTM4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQog
CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ3Vyc29yKEltYWdl
KiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBDdXJz
b3IoY29uc3QgQ3Vyc29yJik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIGNvbnN0IEludFBvaW50
JiBob3RTcG90KTsKKyAgICAgICAgQ3Vyc29yKGNvbnN0IEN1cnNvciYpOwogCiAjaWYgRU5BQkxF
KE1PVVNFX0NVUlNPUl9TQ0FMRSkKICAgICAgICAgLy8gSG90IHNwb3QgaXMgaW4gaW1hZ2UgcGl4
ZWxzLgogICAgICAgICBDdXJzb3IoSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCwgZmxv
YXQgaW1hZ2VTY2FsZUZhY3Rvcik7CiAjZW5kaWYKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB+
Q3Vyc29yKCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIEN1cnNvciYgb3BlcmF0b3I9KGNvbnN0
IEN1cnNvciYpOworICAgICAgICB+Q3Vyc29yKCk7CisgICAgICAgIEN1cnNvciYgb3BlcmF0b3I9
KGNvbnN0IEN1cnNvciYpOwogCiAgICAgICAgIGV4cGxpY2l0IEN1cnNvcihUeXBlKTsKICAgICAg
ICAgVHlwZSB0eXBlKCkgY29uc3QKQEAgLTE2MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIEltYWdlIHNjYWxlIGluIGltYWdlIHBpeGVscyBwZXIgbG9naWNhbCAo
VUkpIHBpeGVsLgogICAgICAgICBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZVNjYWxlRmFjdG9yOyB9CiAjZW5kaWYKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
UGxhdGZvcm1DdXJzb3IgcGxhdGZvcm1DdXJzb3IoKSBjb25zdDsKKyAgICAgICAgUGxhdGZvcm1D
dXJzb3IgcGxhdGZvcm1DdXJzb3IoKSBjb25zdDsKIAogICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRhYmFzZVN0cmF0ZWd5LmgKaW5kZXggOTI5ZTJiZDc4MTYwMjA2ZjFkZTk5ZDNkY2MxNGZl
Y2M3M2Q5ZTUwZC4uNmIyOTI3ODRlNmEyZmU1ZGY2ZTQ3YzhmZjMwMmFmM2E0NGFmNWZiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuaApAQCAtMzcsMTEgKzM3
LDExIEBAIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgRGF0YWJhc2VT
dHJhdGVneSB7CiBwdWJsaWM6CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIGdldERhdGFiYXNlU2VydmVy
KCk7CisgICAgdmlydHVhbCBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBnZXREYXRhYmFzZVNlcnZl
cigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlJZGVu
dGlmaWVyKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnlJZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EaXNwbGF5U2xlZXBEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGlzcGxheVNsZWVwRGlzYWJsZXIuaAppbmRleCAwNTI4OTZmZmJiMjNmYjBlNDVi
YmMxMjUwZWQ0YjA0MzI3M2IwZDM5Li40NzYyZDU1MzE5MzY0MGMxM2MyMWY3ZDZjZTk5OTY2NGMz
ODEwYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNwbGF5U2xlZXBE
aXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc3BsYXlTbGVlcERpc2Fi
bGVyLmgKQEAgLTMxLDEwICszMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEaXNw
bGF5U2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5U2xlZXBEaXNhYmxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5EaXNwbGF5U2xlZXBEaXNhYmxlcigpOworICAgIHZpcnR1YWwgfkRpc3Bs
YXlTbGVlcERpc2FibGVyKCk7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBEaXNw
bGF5U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKik7CisgICAgRGlzcGxheVNsZWVwRGlzYWJsZXIo
Y29uc3QgY2hhciopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXgg
ODgwMTI2ZDFmNGIwMTkzYzM0YzdjYTY1YTQyNzU4NDExNmJiYjFkNi4uZjNhMzVhNzMzZTc2NjNj
YjA1ZjBiN2Y5YzYxOGFiNTQwMTdjNDJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CkBAIC04MiwxMCArODIsMTAgQEAgcHVibGljOgogICAgIGVudW0gRmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IHsgRG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBDb252ZXJ0RmlsZW5hbWVzIH07CiAKICAg
ICAvLyBjbGllbnRQb3NpdGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRy
YWcgZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3Ag
bGVmdAotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJh
Z09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxp
Y2F0aW9uTm9uZSk7CisgICAgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0
aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIERy
YWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlv
biwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICNpZiBQTEFU
Rk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIERyYWdEYXRhKGNvbnN0IERyYWdE
YXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0
YU1hcCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEo
aW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVu
dERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuaAppbmRleCBkNGM1ZTk0MDJhYTEzZTlmYTI1N2NjMDg4ZThhMDc2
NjI1MDkxOWQ4Li40MGI0ZGNlYWFlZDhjYThhOWM4MjYzZmEwN2RhY2ZiZTJjNGI4NzdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5r
SW5OZXdXaW5kb3coKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5l
d1dpbmRvdygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rp
c2soKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgp
OwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpOwpA
QCAtODksNDIgKzg5LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xv
b2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKTsKICAgICBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCk7CisgICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKTsKKyAgICBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU3BlbGxpbmdNZW51KCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1No
b3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdyk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0NoZWNrU3BlbGxpbmcoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZ1doaWxlVHlwaW5nKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3Jh
bW1hcldpdGhTcGVsbGluZygpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7CisgICAgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0l0YWxpYygpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdV
bmRlcmxpbmUoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpOworICAg
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOwogICAgIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCk7
CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKTsKKyAgICBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKTsKKyAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5n
QXV0b21hdGljYWxseSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhib29sIHNob3cpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNl
bWVudCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2Zvcm1hdGlvbnNNZW51KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01ha2VVcHBlckNhc2UoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1Nob3dGb250cygpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKTsK
KyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpOworICAgIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1N0YXJ0U3BlYWtpbmcoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcFNw
ZWFraW5nKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1
dG9tYXRpY2FsbHkoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9u
c01lbnUoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMo
Ym9vbCBzaG93KTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUo
KTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKTsKKyAgICBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKTsKKyAgICBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU21hcnRMaW5rcygpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0
UmVwbGFjZW1lbnQoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRp
b25zTWVudSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCk7
CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKTsKKyAgICBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpOwogICAgIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlm
CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdNZWRpYVBsYXkoKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVk
aWFQYXVzZSgpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQo
KTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKICNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAogI2lmICFQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3MuaAppbmRleCA0NWViZDg4
YWUwZTFhNTNjYmRhZWQzZWVjZTg0ZWNkOWQzYmRmZjliLi40MGYxZTIxOTFkZWVkMTMxNmQ2NmM4
ZjExYjI0ZGY2MWZkNDMxNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtRXhwb3J0TWFjcm9zLmgKQEAgLTQ2LDEzICs0Niw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBP
UlREQVRBIFdURl9JTVBPUlQKICNlbmRpZgogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgV1RG
X0VYUE9SVCBvbmNlIFdFQkNPUkVfRVhQT1JUIGlzIHVzZWQgaW5zdGVhZCBvZiBXZWJDb3JlLmV4
cC5pbi4KLSNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0VYUE9SVAotCiAjZWxzZSAvLyAhVVNF
KEVYUE9SVF9NQUNST1MpCiAKLSNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKLQogI2lmIE9TKFdJTkRP
V1MpICYmICFDT01QSUxFUihHQ0MpCiAKICNpZiBkZWZpbmVkKFdFQkNPUkVfSVNfTElOS0VEX0lO
X1NBTUVfQklOQVJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9IYXJkd2FyZUxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0hhcmR3YXJlTGlzdGVuZXIuaAppbmRleCAxZjQ3NjdjY2FiOWNhMjA0YWRiYjViYzBlMTM4
NGVkMGE5NmU1ZTVlLi43MTBkODc4Njg3YWEyNGU0N2FiMThhNDc3MWViNWZiMjIzNmZmMjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJlTGlz
dGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0hhcmR3YXJl
TGlzdGVuZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKSA9IDA7CiAgICAgfTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gY3JlYXRlKENs
aWVudCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gY3Jl
YXRlKENsaWVudCYpOwogICAgIHZpcnR1YWwgfkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcigpIHsgfQog
ICAgIAogICAgIEF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgaGFyZHdhcmVBY3Rpdml0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZpdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggZDg5NzYzZTI0NDlmNzhlMzBmNGQ1MjRkNjczMGFhNjZm
MmM1ZGE4ZS4uYjk5Zjc5M2Y2MmNlZDMwOWExN2JkYjg5ODBjMGRhMWRhNjMwZjEzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvU2Vzc2lvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CisgICAgc3Rh
dGljIEF1ZGlvU2Vzc2lvbiYgc2hhcmVkU2Vzc2lvbigpOwogCiAgICAgZW51bSBDYXRlZ29yeVR5
cGUgewogICAgICAgICBOb25lLApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBs
YXlBbmRSZWNvcmQsCiAgICAgICAgIEF1ZGlvUHJvY2Vzc2luZywKICAgICB9OwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlKTsKKyAgICB2b2lkIHNldENh
dGVnb3J5KENhdGVnb3J5VHlwZSk7CiAgICAgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0KaW5kZXggZGZhMmI2NjI5Y2ZkZTZiMTA1M2Q5MTYwYzNkZGEyYmJhNmQ0MDll
My4uZTVlYjc3ZGIzOGYzOTdhN2EwZDkzYzAwYzliNGVhNTNmYzFlN2FjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0KQEAgLTgyLDkgKzgyLDkgQEAgU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5
ZXIsIE1QVm9sdW1lVmlld1dpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWYKICNk
ZWZpbmUgTVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlIGdldE1QTm93UGxheWlu
Z0luZm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZSgpCiAjZGVmaW5lIE1QVm9sdW1lVmlld1dpcmVsZXNz
Um91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGdldE1QVm9sdW1lVmlld1dpcmVs
ZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKIAotV0VCQ09SRV9FWFBP
UlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9u
ID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7Ci1XRUJD
T1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZp
Y2F0aW9uIjsKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
Tm90aWZpY2F0aW9uIjsKK05TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmlj
YXRpb24iOworTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90
aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNh
dGlvbiI7CitOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNh
dGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiI7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA5ZTQ1YmI5NGQ1NDA1MDVmYWVhYjRjODg2ZjUy
NzBjNGY4OGE5YzBiLi45NjQxMGQ0NzgxNTk0N2ExNDE2MTI5MDQ0YWE1NjBjMDdmNzFiOTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAg
LTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFy
cmF5KCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTE5NSw4ICsxOTUsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICBDZXJ0YWluICAgICAvLyBUaGUgcmVwZXRpdGlvbiBjb3VudCBpcyBrbm93biB0byBiZSBj
b3JyZWN0LgogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShQYXNzTmF0
aXZlSW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0
bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSAwKTsKKyAgICBCaXRtYXBJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAgQml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogPSAwKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCmluZGV4IDcwMWM2YTE3YzlmOWMyMmNiM2NiZDY2NjhiNjYzOWJmNzRl
NGUyZmUuLmMwZWRiMTBkYzRmOGRjZTMxMDM1NGZkZDg5ZWRmNzFiN2U4N2Q3MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJs
aWM6CiAgICAgQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkgOiBtX2Nv
bG9yKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpKSwgbV92YWxpZCh0cnVlKSB7IH0K
ICAgICAvLyBDcmVhdGVzIGEgbmV3IGNvbG9yIGZyb20gdGhlIHNwZWNpZmljIENNWUsgYW5kIGFs
cGhhIHZhbHVlcy4KICAgICBDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBr
LCBmbG9hdCBhKSA6IG1fY29sb3IobWFrZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwgaywgYSkpLCBt
X3ZhbGlkKHRydWUpIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbG9yKGNvbnN0
IFN0cmluZyYpOworICAgIGV4cGxpY2l0IENvbG9yKGNvbnN0IFN0cmluZyYpOwogICAgIGV4cGxp
Y2l0IENvbG9yKGNvbnN0IGNoYXIqKTsKIAogICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNoZWNr
ZWQoaW50IHIsIGludCBnLCBpbnQgYikKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gUmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBhY2NvcmRpbmcgdG8gSFRNTDUKICAgICAv
LyAtIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3Nl
cmlhbGl6YXRpb24tb2YtYS1jb2xvcgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxp
emVkKCkgY29uc3Q7CisgICAgU3RyaW5nIHNlcmlhbGl6ZWQoKSBjb25zdDsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgYXMgZWl0aGVyICNSUkdHQkIgb3IgI1JSR0dCQkFB
CiAgICAgLy8gVGhlIGxhdHRlciBmb3JtYXQgaXMgbm90IGEgdmFsaWQgQ1NTIGNvbG9yLCBhbmQg
c2hvdWxkIG9ubHkgYmUgc2VlbiBpbiBEUlQgZHVtcHMuCkBAIC0xMTQsOCArMTE0LDggQEAgcHVi
bGljOgogICAgIFJHQkEzMiByZ2IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9IC8vIFByZXNl
cnZlIHRoZSBhbHBoYS4KICAgICB2b2lkIHNldFJHQihpbnQgciwgaW50IGcsIGludCBiKSB7IG1f
Y29sb3IgPSBtYWtlUkdCKHIsIGcsIGIpOyBtX3ZhbGlkID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0
UkdCKFJHQkEzMiByZ2IpIHsgbV9jb2xvciA9IHJnYjsgbV92YWxpZCA9IHRydWU7IH0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldFJHQkEoZmxvYXQmIHIsIGZsb2F0JiBnLCBmbG9hdCYgYiwg
ZmxvYXQmIGEpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UkdCQShkb3VibGUm
IHIsIGRvdWJsZSYgZywgZG91YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0OworICAgIHZvaWQgZ2V0
UkdCQShmbG9hdCYgciwgZmxvYXQmIGcsIGZsb2F0JiBiLCBmbG9hdCYgYSkgY29uc3Q7CisgICAg
dm9pZCBnZXRSR0JBKGRvdWJsZSYgciwgZG91YmxlJiBnLCBkb3VibGUmIGIsIGRvdWJsZSYgYSkg
Y29uc3Q7CiAgICAgdm9pZCBnZXRIU0woZG91YmxlJiBoLCBkb3VibGUmIHMsIGRvdWJsZSYgbCkg
Y29uc3Q7CiAKICAgICBDb2xvciBsaWdodCgpIGNvbnN0OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yKENH
Q29sb3JSZWYpOworICAgIENvbG9yKENHQ29sb3JSZWYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMg
Ym9vbCBwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYsIFJHQkEzMiYpOwpAQCAtMTQ1LDExICsx
NDUsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCwgUkdCQTMyJik7CiAKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGJsYWNr
ID0gMHhGRjAwMDAwMDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgUkdCQTMyIHdo
aXRlID0gMHhGRkZGRkZGRjsKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHdoaXRlID0gMHhGRkZG
RkZGRjsKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGRhcmtHcmF5ID0gMHhGRjgwODA4MDsKICAg
ICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyYXkgPSAweEZGQTBBMEEwOwogICAgIHN0YXRpYyBjb25z
dCBSR0JBMzIgbGlnaHRHcmF5ID0gMHhGRkMwQzBDMDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgY29uc3QgUkdCQTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKKyAgICBzdGF0aWMgY29u
c3QgUkdCQTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKICAgICBzdGF0aWMgY29uc3QgUkdC
QTMyIGN5YW4gPSAweEZGMDBGRkZGOwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aAppbmRleCA5OGFkMzAyMTdhMGNmZmZkYjA1Y2UwYWMzMmIyMTRmOGZiNGE4MTljLi44ZmViMzg3
NjNiMmE4OTM3MTc1ZDNmYmUzNDBjODUyNzE1YjZmMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAt
NDIsNyArNDIsNyBAQCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ7CiBjbGFzcyBE
aXNwbGF5UmVmcmVzaE1vbml0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IGNyZWF0ZShEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKKyAgICB2aXJ0dWFsIH5E
aXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKICAgICAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjYWxs
YmFjayByZXF1ZXN0IHdhcyBzY2hlZHVsZWQsIGZhbHNlIGlmIGl0IGNvdWxkbid0IGJlCiAgICAg
Ly8gKGUuZy4sIGhhcmR3YXJlIHJlZnJlc2ggaXMgbm90IGF2YWlsYWJsZSkKQEAgLTc1LDggKzc1
LDggQEAgcHVibGljOgogICAgIE11dGV4JiBtdXRleCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KIAog
cHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9u
aXRvcihQbGF0Zm9ybURpc3BsYXlJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
aGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh2b2lkKiBkYXRh
KTsKKyAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQp
OworICAgIHN0YXRpYyB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1h
aW5UaHJlYWQodm9pZCogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwbGF5RGlkUmVm
cmVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKaW5kZXggNjQxZGIwMGZhNGMxNzk3MTE3
NDIyYWY4NjBiYjEwY2Y2Yzc0ZDhjOS4uMGM1ZWRmNjgzNzgzZGYwMmIwZGJhMGZiYTM5NWEwOTM4
YjI4Y2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCkBAIC01MCw4ICs1MCw4IEBAIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgQWZmaW5lVHJhbnNmb3JtIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBBZmZp
bmVUcmFuc2Zvcm0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0oZG91Ymxl
IGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7Cisg
ICAgQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgQWZmaW5lVHJhbnNmb3JtKGRvdWJsZSBhLCBkb3Vi
bGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOwogCiAjaWYgVVNF
KENHKQogICAgIEFmZmluZVRyYW5zZm9ybShjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYpOwpAQCAt
NjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBk
b3VibGUmIHgyLCBkb3VibGUmIHkyKSBjb25zdDsKIAogICAgIC8vIFJvdW5kcyB0aGUgbWFwcGVk
IHBvaW50IHRvIHRoZSBuZWFyZXN0IGludGVnZXIgdmFsdWUuCi0gICAgV0VCQ09SRV9FWFBPUlQg
SW50UG9pbnQgbWFwUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBJbnRQb2ludCBt
YXBQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRmxv
YXRQb2ludCBtYXBQb2ludChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgRmxvYXRQb2lu
dCBtYXBQb2ludChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAKICAgICBJbnRTaXplIG1hcFNp
emUoY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCkBAIC03NCwxMCArNzQsMTAgQEAgcHVibGljOgog
ICAgIC8vIGJveCBjb21wdXRhdGlvbnMgYnV0IG1heSBub3QgYmUgd2hhdCBpcyB3YW50ZWQgaW4g
b3RoZXIgY29udGV4dHMuCiAgICAgSW50UmVjdCBtYXBSZWN0KGNvbnN0IEludFJlY3QmKSBjb25z
dDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZsb2F0UmVj
dCYpIGNvbnN0OworICAgIEZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0
OwogICAgIEZsb2F0UXVhZCBtYXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYpIGNvbnN0OwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Q7CisgICAgYm9vbCBpc0lkZW50
aXR5KCkgY29uc3Q7CiAKICAgICBkb3VibGUgYSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3Jt
WzBdOyB9CiAgICAgdm9pZCBzZXRBKGRvdWJsZSBhKSB7IG1fdHJhbnNmb3JtWzBdID0gYTsgfQpA
QCAtOTQsMjggKzk0LDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFrZUlkZW50aXR5KCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIG11bHRpcGx5KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgb3RoZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybSYg
c2NhbGUoZG91YmxlKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIG11bHRpcGx5KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgb3RoZXIpOworICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUoZG91YmxlKTsg
CiAgICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7IAogICAg
IEFmZmluZVRyYW5zZm9ybSYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0mIHJvdGF0ZShkb3VibGUgZCk7CiAgICAgQWZmaW5lVHJhbnNm
b3JtJiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpOwor
ICAgIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0mIHNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKICAgICBBZmZp
bmVUcmFuc2Zvcm0mIGZsaXBYKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3Jt
JiBmbGlwWSgpOworICAgIEFmZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKICAgICBBZmZpbmVUcmFu
c2Zvcm0mIHNrZXcoZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSk7CiAgICAgQWZmaW5lVHJh
bnNmb3JtJiBza2V3WChkb3VibGUgYW5nbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSYgc2tld1ko
ZG91YmxlIGFuZ2xlKTsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBnZXQgdGhlIGxlbmd0aCBv
ZiBhbiBheGlzLWFsaWduZWQgdW5pdCB2ZWN0b3IKICAgICAvLyBvbmNlIGl0IGhhcyBiZWVuIG1h
cHBlZCB0aHJvdWdoIHRoZSB0cmFuc2Zvcm0KLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgeFNj
YWxlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIHlTY2FsZSgpIGNvbnN0Owor
ICAgIGRvdWJsZSB4U2NhbGUoKSBjb25zdDsKKyAgICBkb3VibGUgeVNjYWxlKCkgY29uc3Q7CiAK
ICAgICBkb3VibGUgZGV0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ludmVy
dGlibGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJz
ZSgpIGNvbnN0OworICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7CisgICAgQWZmaW5lVHJh
bnNmb3JtIGludmVyc2UoKSBjb25zdDsKIAogICAgIHZvaWQgYmxlbmQoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4IDky
MWZiODRiZTBmZjI4YTMzMzk0MzlkNjAxYWVjYjdkYjc4MjVmNGIuLmUxODU5YjI5ZWYyMDNiOGUz
MDYwMTJiMjU0YjY5YWM3NmE4ZWRjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC0yNiwyNCArMjYs
MjQgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogCi1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkIChe
YmxvY2spKENHUmVjdCByZWN0KSk7Ci1XRUJDT1JFX0VYUE9SVCBCT09MICgqd2tDR0NvbnRleHRH
ZXRTaG91bGRTbW9vdGhGb250cykoQ0dDb250ZXh0UmVmKTsKLVdFQkNPUkVfRVhQT1JUIENHUGF0
dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdl
UmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NH
Q29udGV4dFJlc2V0Q2xpcCkoQ0dDb250ZXh0UmVmKTsKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5n
UmVmICgqd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKShDRlN0cmluZ1JlZik7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlwaHMpOwot
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQqIHN0
eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2b2lkKiBn
bHlwaHMpOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqICgqd2tHZXRNSU1FVHlwZUZvckV4dGVu
c2lvbikoTlNTdHJpbmcqKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVz
cG9uc2VMYXN0TW9kaWZpZWREYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7Ci1XRUJDT1JF
X0VYUE9SVCB2b2lkICgqd2tTZXRCYXNlQ1RNKShDR0NvbnRleHRSZWYsIENHQWZmaW5lVHJhbnNm
b3JtKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldFBhdHRlcm5QaGFzZUluVXNlclNwYWNl
KShDR0NvbnRleHRSZWYsIENHUG9pbnQgcG9pbnQpOwotV0VCQ09SRV9FWFBPUlQgQ0dBZmZpbmVU
cmFuc2Zvcm0gKCp3a0dldFVzZXJUb0Jhc2VDVE0pKENHQ29udGV4dFJlZik7Ci1XRUJDT1JFX0VY
UE9SVCBib29sICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7Ci1XRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tTZXRVcEZvbnRDYWNoZSkoKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgKCp3a1NpZ25hbENGUmVhZFN0cmVhbUVuZCkoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTaWduYWxDRlJlYWRTdHJlYW1IYXNCeXRlcykoQ0ZSZWFk
U3RyZWFtUmVmIHN0cmVhbSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTaWduYWxDRlJlYWRT
dHJlYW1FcnJvcikoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FcnJvciAqZXJyb3Ip
OwotV0VCQ09SRV9FWFBPUlQgQ0ZSZWFkU3RyZWFtUmVmICgqd2tDcmVhdGVDdXN0b21DRlJlYWRT
dHJlYW0pKHZvaWQgKigqZm9ybUNyZWF0ZSkoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkICopLAordm9p
ZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FMYXllciAq
LCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOworQk9P
TCAoKndrQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpKENHQ29udGV4dFJlZik7CitDR1Bh
dHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFn
ZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Cit2b2lkICgqd2tDR0NvbnRleHRSZXNldENs
aXApKENHQ29udGV4dFJlZik7IAorQ0ZTdHJpbmdSZWYgKCp3a0NvcHlDRkxvY2FsaXphdGlvblBy
ZWZlcnJlZE5hbWUpKENGU3RyaW5nUmVmKTsKK3ZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZv
aWQqIGdseXBocyk7CitPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5
bGVHcm91cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGds
eXBocyk7CitOU1N0cmluZyogKCp3a0dldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKShOU1N0cmluZyop
OworTlNEYXRlICooKndrR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUpKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKTsKK3ZvaWQgKCp3a1NldEJhc2VDVE0pKENHQ29udGV4dFJlZiwgQ0dB
ZmZpbmVUcmFuc2Zvcm0pOwordm9pZCAoKndrU2V0UGF0dGVyblBoYXNlSW5Vc2VyU3BhY2UpKENH
Q29udGV4dFJlZiwgQ0dQb2ludCBwb2ludCk7CitDR0FmZmluZVRyYW5zZm9ybSAoKndrR2V0VXNl
clRvQmFzZUNUTSkoQ0dDb250ZXh0UmVmKTsKK2Jvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4
dCkoQ0dDb250ZXh0UmVmKTsKK3ZvaWQgKCp3a1NldFVwRm9udENhY2hlKSgpOwordm9pZCAoKndr
U2lnbmFsQ0ZSZWFkU3RyZWFtRW5kKShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtKTsKK3ZvaWQgKCp3
a1NpZ25hbENGUmVhZFN0cmVhbUhhc0J5dGVzKShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtKTsKK3Zv
aWQgKCp3a1NpZ25hbENGUmVhZFN0cmVhbUVycm9yKShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBD
RlN0cmVhbUVycm9yICplcnJvcik7CitDRlJlYWRTdHJlYW1SZWYgKCp3a0NyZWF0ZUN1c3RvbUNG
UmVhZFN0cmVhbSkodm9pZCAqKCpmb3JtQ3JlYXRlKShDRlJlYWRTdHJlYW1SZWYsIHZvaWQgKiks
IAogICAgIHZvaWQgKCpmb3JtRmluYWxpemUpKENGUmVhZFN0cmVhbVJlZiwgdm9pZCAqKSwgCiAg
ICAgQm9vbGVhbiAoKmZvcm1PcGVuKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyZWFtRXJyb3IgKiwg
Qm9vbGVhbiAqLCB2b2lkICopLCAKICAgICBDRkluZGV4ICgqZm9ybVJlYWQpKENGUmVhZFN0cmVh
bVJlZiwgVUludDggKiwgQ0ZJbmRleCwgQ0ZTdHJlYW1FcnJvciAqLCBCb29sZWFuICosIHZvaWQg
KiksIApAQCAtNTIsMTA0ICs1MiwxMDQgQEAgV0VCQ09SRV9FWFBPUlQgQ0ZSZWFkU3RyZWFtUmVm
ICgqd2tDcmVhdGVDdXN0b21DRlJlYWRTdHJlYW0pKHZvaWQgKigqZm9ybUNyZWF0ZSkKICAgICB2
b2lkICgqZm9ybVNjaGVkdWxlKShDRlJlYWRTdHJlYW1SZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJp
bmdSZWYsIHZvaWQgKiksIAogICAgIHZvaWQgKCpmb3JtVW5zY2hlZHVsZSkoQ0ZSZWFkU3RyZWFt
UmVmLCBDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmLCB2b2lkICopLAogICAgIHZvaWQgKmNvbnRl
eHQpOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqICgqd2tDb3B5TlNVUkxSZXNwb25zZVN0YXR1
c0xpbmUpKE5TVVJMUmVzcG9uc2UqKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldE5TVVJM
Q29ubmVjdGlvbkRlZmVyc0NhbGxiYWNrcykoTlNVUkxDb25uZWN0aW9uICosIEJPT0wpOwotV0VC
Q09SRV9FWFBPUlQgdm9pZCAoKndrU2V0TlNVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShO
U011dGFibGVVUkxSZXF1ZXN0ICosIEJPT0wpOwotV0VCQ09SRV9FWFBPUlQgaWQgKCp3a0NyZWF0
ZU5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwotV0VCQ09SRV9FWFBPUlQgdW5z
aWduZWQgKCp3a0luaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QpKHVu
c2lnbmVkIHByZWZlcnJlZENvbm5lY3Rpb25Db3VudCk7Ci1XRUJDT1JFX0VYUE9SVCBpbnQgKCp3
a0dldEhUVFBSZXF1ZXN0UHJpb3JpdHkpKENGVVJMUmVxdWVzdFJlZik7Ci1XRUJDT1JFX0VYUE9S
VCB2b2lkICgqd2tTZXRIVFRQUmVxdWVzdE1heGltdW1Qcmlvcml0eSkoaW50IHByaW9yaXR5KTsK
LVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldEhUVFBSZXF1ZXN0UHJpb3JpdHkpKENGVVJMUmVx
dWVzdFJlZiwgaW50IHByaW9yaXR5KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldEhUVFBS
ZXF1ZXN0TWluaW11bUZhc3RMYW5lUHJpb3JpdHkpKGludCBwcmlvcml0eSk7Ci1XRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tIVFRQUmVxdWVzdEVuYWJsZVBpcGVsaW5pbmcpKENGVVJMUmVxdWVzdFJl
Zik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENG
UmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBv
cnQpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlv
bkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRp
b25TdHJpbmcpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZh
dGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQTWVzc2FnZVJl
ZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVm
IHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9y
dCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVy
SU9TVmVyc2lvbikoaW50KTsKLVdFQkNPUkVfRVhQT1JUIGludCAoKndrR2V0RGV2aWNlQ2xhc3Mp
KHZvaWQpOwotV0VCQ09SRV9FWFBPUlQgQ0dTaXplICgqd2tHZXRTY3JlZW5TaXplKSh2b2lkKTsK
LVdFQkNPUkVfRVhQT1JUIENHU2l6ZSAoKndrR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSkodm9pZCk7
Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2NhbGUpKENBTGF5ZXIg
Kik7Ci1XRUJDT1JFX0VYUE9SVCBmbG9hdCAoKndrR2V0U2NyZWVuU2NhbGVGYWN0b3IpKHZvaWQp
OwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNHQjE4MDMwQ29tcGxpYW5jZVJlcXVpcmVkKSh2
b2lkKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NHUGF0aEFkZFJvdW5kZWRSZWN0KShDR011
dGFibGVQYXRoUmVmIHBhdGgsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtKiBtYXRyaXgsIENHUmVj
dCByZWN0LCBDR0Zsb2F0IGNvcm5lcldpZHRoLCBDR0Zsb2F0IGNvcm5lckhlaWdodCk7Ci1XRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVS
TFJlcXVlc3RSZWYpOwotV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVz
cG9uc2VDZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7Ci1XRUJDT1JFX0VYUE9SVCBD
RlN0cmluZ0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7
CitOU1N0cmluZyogKCp3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSkoTlNVUkxSZXNwb25z
ZSopOwordm9pZCAoKndrU2V0TlNVUkxDb25uZWN0aW9uRGVmZXJzQ2FsbGJhY2tzKShOU1VSTENv
bm5lY3Rpb24gKiwgQk9PTCk7Cit2b2lkICgqd2tTZXROU1VSTFJlcXVlc3RTaG91bGRDb250ZW50
U25pZmYpKE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgQk9PTCk7CitpZCAoKndrQ3JlYXRlTlNVUkxD
b25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7Cit1bnNpZ25lZCAoKndrSW5pdGlhbGl6ZU1h
eGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCkodW5zaWduZWQgcHJlZmVycmVkQ29ubmVj
dGlvbkNvdW50KTsKK2ludCAoKndrR2V0SFRUUFJlcXVlc3RQcmlvcml0eSkoQ0ZVUkxSZXF1ZXN0
UmVmKTsKK3ZvaWQgKCp3a1NldEhUVFBSZXF1ZXN0TWF4aW11bVByaW9yaXR5KShpbnQgcHJpb3Jp
dHkpOwordm9pZCAoKndrU2V0SFRUUFJlcXVlc3RQcmlvcml0eSkoQ0ZVUkxSZXF1ZXN0UmVmLCBp
bnQgcHJpb3JpdHkpOwordm9pZCAoKndrU2V0SFRUUFJlcXVlc3RNaW5pbXVtRmFzdExhbmVQcmlv
cml0eSkoaW50IHByaW9yaXR5KTsKK3ZvaWQgKCp3a0hUVFBSZXF1ZXN0RW5hYmxlUGlwZWxpbmlu
ZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKK3ZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7Cit2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShD
RlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Cit2
b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7CitD
RkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVh
bVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKK2Jvb2wgKCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJJ
T1NWZXJzaW9uKShpbnQpOworaW50ICgqd2tHZXREZXZpY2VDbGFzcykodm9pZCk7CitDR1NpemUg
KCp3a0dldFNjcmVlblNpemUpKHZvaWQpOworQ0dTaXplICgqd2tHZXRBdmFpbGFibGVTY3JlZW5T
aXplKSh2b2lkKTsKK3ZvaWQgKCp3a1NldExheWVyQ29udGVudHNTY2FsZSkoQ0FMYXllciAqKTsK
K2Zsb2F0ICgqd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcikodm9pZCk7Citib29sICgqd2tJc0dCMTgw
MzBDb21wbGlhbmNlUmVxdWlyZWQpKHZvaWQpOwordm9pZCAoKndrQ0dQYXRoQWRkUm91bmRlZFJl
Y3QpKENHTXV0YWJsZVBhdGhSZWYgcGF0aCwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qIG1hdHJp
eCwgQ0dSZWN0IHJlY3QsIENHRmxvYXQgY29ybmVyV2lkdGgsIENHRmxvYXQgY29ybmVySGVpZ2h0
KTsgCit2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVSTFJlcXVl
c3RSZWYpOworQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWlu
KShOU1VSTFJlc3BvbnNlKik7CitDRlN0cmluZ0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZT
dHJpbmdFbmNvZGluZykodm9pZCk7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotV0VCQ09SRV9FWFBP
UlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdl
KSgpOwotV0VCQ09SRV9FWFBPUlQgV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50
aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3Rl
Y3Rpb25TcGFjZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91
bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOwotV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
KCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSkoKTsKK1dLQ0ZVUkxDcmVkZW50aWFsUmVm
ICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwordm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hv
dWxkQ29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKK3ZvaWQgKCp3
a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZik7CiAjZW5kaWYKIAotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrR2V0
VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZvbnRSZWYsIGNvbnN0IFVuaUNoYXJbXSwg
Q0dHbHlwaFtdLCBzaXplX3QpOwotV0VCQ09SRV9FWFBPUlQgQ1RMaW5lUmVmICgqd2tDcmVhdGVD
VExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5k
ZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRy
aWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9p
ZCopLCB2b2lkKik7Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tDVEZvbnRUcmFuc2Zvcm1HbHlw
aHMpKENURm9udFJlZiBmb250LCBDR0dseXBoIGdseXBoc1tdLCBDR1NpemUgYWR2YW5jZXNbXSwg
Q0ZJbmRleCBjb3VudCwgd2tDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMpOworYm9vbCAo
KndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZvbnRSZWYsIGNvbnN0IFVuaUNo
YXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOworQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRo
VW5pQ2hhclByb3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5n
SW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2
b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lk
Kik7Citib29sICgqd2tDVEZvbnRUcmFuc2Zvcm1HbHlwaHMpKENURm9udFJlZiBmb250LCBDR0ds
eXBoIGdseXBoc1tdLCBDR1NpemUgYWR2YW5jZXNbXSwgQ0ZJbmRleCBjb3VudCwgd2tDVEZvbnRU
cmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMpOwogCi1XRUJDT1JFX0VYUE9SVCBDR1NpemUgKCp3a0NU
UnVuR2V0SW5pdGlhbEFkdmFuY2UpKENUUnVuUmVmKTsKK0NHU2l6ZSAoKndrQ1RSdW5HZXRJbml0
aWFsQWR2YW5jZSkoQ1RSdW5SZWYpOwogCi1XRUJDT1JFX0VYUE9SVCBDVFR5cGVzZXR0ZXJSZWYg
KCp3a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKShjb25z
dCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJD
b3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3Nl
KShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmIG9w
dGlvbnMpOworQ1RUeXBlc2V0dGVyUmVmICgqd2tDcmVhdGVDVFR5cGVzZXR0ZXJXaXRoVW5pQ2hh
clByb3ZpZGVyQW5kT3B0aW9ucykoY29uc3QgVW5pQ2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0
cmluZ0luZGV4LCBDRkluZGV4KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRl
cywgdm9pZCopLCB2b2lkICgqZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqKSwg
dm9pZCosIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKIAogI2lmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SKQotV0VCQ09SRV9FWFBPUlQgQ0dDb250ZXh0UmVmICgqd2tJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlKShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgQ0dJbWFn
ZVJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKShDR0NvbnRleHRSZWYgY29udGV4
dCk7CitDR0NvbnRleHRSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJl
ZiBzdXJmYWNlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSk7CitDR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1h
Z2UpKENHQ29udGV4dFJlZiBjb250ZXh0KTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX1NJTVVM
QVRPUikKIAogI2lmIFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCi1XRUJDT1JFX0VYUE9SVCB2b2lk
ICgqd2tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbikoQ0ZTdHJp
bmdSZWYpOwordm9pZCAoKndrU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3Jt
YXRpb24pKENGU3RyaW5nUmVmKTsKICNlbmRpZgogCi1XRUJDT1JFX0VYUE9SVCBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmICgqd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5nUmVm
KTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCogKCp3a0NvcHlSZXF1ZXN0V2l0aFN0b3Jh
Z2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QqKTsKLVdFQkNP
UkVfRVhQT1JUIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0NvcHlIVFRQQ29va2llU3RvcmFn
ZSkoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7Ci1XRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCAoKndr
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1XRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KShDRkhUVFBDb29r
aWVTdG9yYWdlUmVmLCB1bnNpZ25lZCk7Ci1XRUJDT1JFX0VYUE9SVCBOU0FycmF5ICooKndrSFRU
UENvb2tpZXMpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOwotV0VCQ09SRV9FWFBPUlQgTlNBcnJh
eSAqKCp3a0hUVFBDb29raWVzRm9yVVJMKShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAq
LCBOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldEhUVFBDb29raWVzRm9yVVJM
KShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0FycmF5ICosIE5TVVJMICosIE5TVVJMICopOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrRGVsZXRlQWxsSFRUUENvb2tpZXMpKENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrRGVsZXRlSFRUUENvb2tpZSko
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICopOwotCi1XRUJDT1JFX0VYUE9S
VCBDRlN0cmluZ1JlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZU1JTUVUeXBlKShDRlVSTFJlc3BvbnNl
UmVmKTsKLVdFQkNPUkVfRVhQT1JUIENGVVJMUmVmICgqd2tHZXRDRlVSTFJlc3BvbnNlVVJMKShD
RlVSTFJlc3BvbnNlUmVmKTsKLVdFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dl
dENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UpKENGVVJMUmVzcG9uc2VSZWYpOwotV0VCQ09SRV9F
WFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUp
KENGVVJMUmVzcG9uc2VSZWYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXNw
b25zZU1JTUVUeXBlKShDRlVSTFJlc3BvbnNlUmVmLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSk7Ci0K
LVdFQkNPUkVfRVhQT1JUIHZvaWQoKndrRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcykodm9pZCk7
Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZl
cmVuY2VzKSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNl
U2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9y
UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcikodm9pZCk7Ci1XRUJD
T1JFX0VYUE9SVCBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRD
b2xvcikodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJh
bmNlQ29weVdpbmRvd0NvbG9yKSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2woKndrQ2FwdGlv
bkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KShDR0Zsb2F0
Kik7Ci1XRUJDT1JFX0VYUE9SVCBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3Bh
Y2l0eSkoQ0dGbG9hdCopOwotV0VCQ09SRV9FWFBPUlQgQ0dGb250UmVmKCp3a0NhcHRpb25BcHBl
YXJhbmNlQ29weUZvbnRGb3JTdHlsZSkoaW50KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2woKndrQ2Fw
dGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKLVdFQkNP
UkVfRVhQT1JUIGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUpKHZvaWQp
OwotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0
aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOworQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiAo
KndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7CitOU1VSTFJlcXVl
c3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiwgTlNVUkxSZXF1ZXN0Kik7CitDRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tDb3B5SFRU
UENvb2tpZVN0b3JhZ2UpKENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwordW5zaWduZWQgKCp3a0dl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOwordm9pZCAo
KndrU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSkoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgdW5z
aWduZWQpOworTlNBcnJheSAqKCp3a0hUVFBDb29raWVzKShDRkhUVFBDb29raWVTdG9yYWdlUmVm
KTsKK05TQXJyYXkgKigqd2tIVFRQQ29va2llc0ZvclVSTCkoQ0ZIVFRQQ29va2llU3RvcmFnZVJl
ZiwgTlNVUkwgKiwgTlNVUkwgKik7Cit2b2lkICgqd2tTZXRIVFRQQ29va2llc0ZvclVSTCkoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqLCBOU1VSTCAqLCBOU1VSTCAqKTsKK3ZvaWQg
KCp3a0RlbGV0ZUFsbEhUVFBDb29raWVzKShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKK3ZvaWQg
KCp3a0RlbGV0ZUhUVFBDb29raWUpKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TSFRUUENvb2tp
ZSAqKTsKKworQ0ZTdHJpbmdSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VNSU1FVHlwZSkoQ0ZVUkxS
ZXNwb25zZVJlZik7CitDRlVSTFJlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZVVSTCkoQ0ZVUkxSZXNw
b25zZVJlZik7CitDRkhUVFBNZXNzYWdlUmVmICgqd2tHZXRDRlVSTFJlc3BvbnNlSFRUUFJlc3Bv
bnNlKShDRlVSTFJlc3BvbnNlUmVmKTsKK0NGU3RyaW5nUmVmICgqd2tDb3B5Q0ZVUkxSZXNwb25z
ZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJlc3BvbnNlUmVmKTsKK3ZvaWQgKCp3a1NldENGVVJM
UmVzcG9uc2VNSU1FVHlwZSkoQ0ZVUkxSZXNwb25zZVJlZiwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUp
OworCit2b2lkKCp3a0Rlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMpKHZvaWQpOworCitib29sICgq
d2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcykodm9pZCk7Citib29sICgqd2tD
YXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUpKHZvaWQpOworQ0dDb2xv
clJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpKHZvaWQpOworQ0dD
b2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpKHZvaWQpOwor
Q0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcikodm9pZCk7Citi
b29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsK
K2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCop
OworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkpKENHRmxvYXQqKTsK
K0NHRm9udFJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUpKGludCk7Citi
b29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zsb2F0
Kik7CitpbnQoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKSh2b2lkKTsKK0NG
U3RyaW5nUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0
aW9uKSh2b2lkKTsKIAogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1XRUJDT1JFX0VY
UE9SVCBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOworYm9vbCAoKndr
SXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENB
Q0hFX1BBUlRJVElPTklORykKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tDYWNoZVBh
cnRpdGlvbktleSkodm9pZCk7CitDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZv
aWQpOwogI2VuZGlmCiAKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tHZXRVc2VyQWdl
bnQpKHZvaWQpOwotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0dldERldmljZU5hbWUp
KHZvaWQpOwotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0dldE9TTmFtZUZvclVzZXJB
Z2VudCkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndrR2V0UGxhdGZvcm1O
YW1lRm9yTmF2aWdhdG9yKSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tH
ZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKSh2b2lkKTsKK0NGU3RyaW5nUmVmICgqd2tHZXRVc2Vy
QWdlbnQpKHZvaWQpOworQ0ZTdHJpbmdSZWYgKCp3a0dldERldmljZU5hbWUpKHZvaWQpOworQ0ZT
dHJpbmdSZWYgKCp3a0dldE9TTmFtZUZvclVzZXJBZ2VudCkodm9pZCk7CitDRlN0cmluZ1JlZiAo
KndrR2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKSh2b2lkKTsKK0NGU3RyaW5nUmVmICgqd2tH
ZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKSh2b2lkKTsKIAotV0VCQ09SRV9FWFBPUlQgaW50ICgq
d2tFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7Ci1XRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5
ZXIgKik7CitpbnQgKCp3a0V4ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsK
K05TU3RyaW5nICooKndrRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXll
ciAqKTsKIAotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrUXVlcnlEZWNvZGVyQXZhaWxhYmlsaXR5
KSh2b2lkKTsKK2Jvb2wgKCp3a1F1ZXJ5RGVjb2RlckF2YWlsYWJpbGl0eSkodm9pZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKaW5kZXggY2UyNjkwZjUyNjhjODRmNjgzYzVi
YWYwZDY5NjQ2NjcwZTNhOWQ3OC4uMDQ0Njk0ZjZiNzNjM2E1YjVlMmMxYjFiYjg3YWVjMWI0Zjcw
ZGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKQEAgLTQ0LDMyICs0NCwz
MiBAQCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U7CiAKIGNsYXNzIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50IDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsLCBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudCgpOworICAgIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50KCk7CisgICAgdmlydHVhbCB+V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQoKTsKICAgICB2b2lkIHNldFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIGludGVyZmFjZSkg
e21fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gaW50ZXJmYWNlO30KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7Cisg
ICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOwogICAgIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9t
aWNTdHJpbmcmKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhz
KSBvdmVycmlkZQogICAgICAgICB7cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXIqPih0aGlzKSA9PSAmcmhzO30KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhdXNl
KCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlT
dGF0ZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBiZWdpblNj
cnViYmluZygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBlbmRT
Y3J1YmJpbmcoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Vl
a1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGZhc3RTZWVrKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVy
RnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jh
dml0eSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0
ZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGZhc3RTZWVrKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5T
Y2FubmluZ0ZvcndhcmQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY2Fubmlu
Z0JhY2t3YXJkKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBv
YnNlcnZlZEV2ZW50TmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FL
Vmlldy5tbQppbmRleCAxNGE3NjVlYjZiNmRiMzFkZWY5ZDk5NWRlZDVlN2I0ZjI4MTgxMmEwLi4w
YTU3NzhjZjZlMzQ2YzU2MjJiZjdjNDRkYzllMzgxYzU2NzM4MmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC00MCw4ICs0MCw4IEBACiAjaW1wb3J0
ICJXZWJFdmVudC5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotV0VCQ09SRV9FWFBP
UlQgTlNTdHJpbmcgKldBS1ZpZXdGcmFtZVNpemVEaWRDaGFuZ2VOb3RpZmljYXRpb24gPSAgIEAi
V0FLVmlld0ZyYW1lU2l6ZURpZENoYW5nZU5vdGlmaWNhdGlvbiI7Ci1XRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyAqV0FLVmlld0RpZFNjcm9sbE5vdGlmaWNhdGlvbiA9ICAgICAgICAgICAgQCJXQUtW
aWV3RGlkU2Nyb2xsTm90aWZpY2F0aW9uIjsKK05TU3RyaW5nICpXQUtWaWV3RnJhbWVTaXplRGlk
Q2hhbmdlTm90aWZpY2F0aW9uID0gICBAIldBS1ZpZXdGcmFtZVNpemVEaWRDaGFuZ2VOb3RpZmlj
YXRpb24iOworTlNTdHJpbmcgKldBS1ZpZXdEaWRTY3JvbGxOb3RpZmljYXRpb24gPSAgICAgICAg
ICAgIEAiV0FLVmlld0RpZFNjcm9sbE5vdGlmaWNhdGlvbiI7CiAKIHN0YXRpYyBXQUtWaWV3ICpn
bG9iYWxGb2N1c1ZpZXcgPSBuaWw7CiBzdGF0aWMgQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBzSW50
ZXJwb2xhdGlvblF1YWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmgKaW5kZXggNGMxOGY0MjQ2MDdiOGRkYWNhZDI5
YmJiNzI4OTg4YWM0NWQzZGFhNi4uNzhmY2UzYWRmMjMzZDllZGEzMjBiMzM4NzRmYTAzZWNlZGY4
MTZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRl
bnRPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tD
b250ZW50T2JzZXJ2YXRpb24uaApAQCAtNDEsMTQgKzQxLDE0IEBAIHR5cGVkZWYgZW51bQogCiBi
b29sIFdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXModm9pZCk7CiAKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgV0tTdG9wT2JzZXJ2aW5nQ29udGVudENoYW5nZXModm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCB2
b2lkIFdLQmVnaW5PYnNlcnZpbmdDb250ZW50Q2hhbmdlcyhib29sIGFsbG93c0ludGVkZXRlcm1p
bmF0ZUNoYW5nZXMpOwordm9pZCBXS1N0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcyh2b2lkKTsK
K3ZvaWQgV0tCZWdpbk9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKGJvb2wgYWxsb3dzSW50ZWRldGVy
bWluYXRlQ2hhbmdlcyk7CiAKIFdLQ29udGVudENoYW5nZSBXS09ic2VydmVkQ29udGVudENoYW5n
ZSh2b2lkKTsKIHZvaWQgV0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdl
IGFDaGFuZ2UpOwogCi1XRUJDT1JFX0VYUE9SVCBpbnQgV2ViVGhyZWFkQ291bnRPZk9ic2VydmVk
Q29udGVudE1vZGlmaWVycyh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkQ2xl
YXJPYnNlcnZlZENvbnRlbnRNb2RpZmllcnModm9pZCk7CitpbnQgV2ViVGhyZWFkQ291bnRPZk9i
c2VydmVkQ29udGVudE1vZGlmaWVycyh2b2lkKTsKK3ZvaWQgV2ViVGhyZWFkQ2xlYXJPYnNlcnZl
ZENvbnRlbnRNb2RpZmllcnModm9pZCk7CiAKIGJvb2wgV2ViVGhyZWFkQ29udGFpbnNPYnNlcnZl
ZENvbnRlbnRNb2RpZmllcih2b2lkICogYUNvbnRlbnRNb2RpZmllcik7CiB2b2lkIFdlYlRocmVh
ZEFkZE9ic2VydmVkQ29udGVudE1vZGlmaWVyKHZvaWQgKiBhQ29udGVudE1vZGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5oCmluZGV4IGU3YjM1ZjQwMGM4NzQ0
ODI2MzlkMWEzNDM2NDM2ODI1ZTVjOWU4NWMuLmM3YzRmOTMwNzBjYTIwZWI5MGJhMjk4NzMwNjNk
MWM1ZWM1NjUwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0tWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcuaApA
QCAtOTcsMzMgKzk3LDMzIEBAIHN0cnVjdCBfV0tWaWV3IHsKIAogZXh0ZXJuIFdLQ2xhc3NJbmZv
IFdLVmlld0NsYXNzSW5mbzsKIAotV0VCQ09SRV9FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0
ZVdpdGhGcmFtZSAoQ0dSZWN0IHJlY3QsIFdLVmlld0NvbnRleHQgKmNvbnRleHQpOworV0tWaWV3
UmVmIFdLVmlld0NyZWF0ZVdpdGhGcmFtZSAoQ0dSZWN0IHJlY3QsIFdLVmlld0NvbnRleHQgKmNv
bnRleHQpOwogdm9pZCBXS1ZpZXdJbml0aWFsaXplIChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IHJl
Y3QsIFdLVmlld0NvbnRleHQgKmNvbnRleHQpOwogCiB2b2lkIFdLVmlld1NldFZpZXdDb250ZXh0
IChXS1ZpZXdSZWYgdmlldywgV0tWaWV3Q29udGV4dCAqY29udGV4dCk7CiB2b2lkIFdLVmlld0dl
dFZpZXdDb250ZXh0IChXS1ZpZXdSZWYgdmlldywgV0tWaWV3Q29udGV4dCAqY29udGV4dCk7CiAK
LVdFQkNPUkVfRVhQT1JUIENHUmVjdCBXS1ZpZXdHZXRCb3VuZHMgKFdLVmlld1JlZiB2aWV3KTsK
K0NHUmVjdCBXS1ZpZXdHZXRCb3VuZHMgKFdLVmlld1JlZiB2aWV3KTsKIAotV0VCQ09SRV9FWFBP
UlQgdm9pZCBXS1ZpZXdTZXRGcmFtZU9yaWdpbiAoV0tWaWV3UmVmIHZpZXcsIENHUG9pbnQgbmV3
UG9pbnQpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBXS1ZpZXdTZXRGcmFtZVNpemUgKFdLVmlld1Jl
ZiB2aWV3LCBDR1NpemUgbmV3U2l6ZSk7Cit2b2lkIFdLVmlld1NldEZyYW1lT3JpZ2luIChXS1Zp
ZXdSZWYgdmlldywgQ0dQb2ludCBuZXdQb2ludCk7Cit2b2lkIFdLVmlld1NldEZyYW1lU2l6ZSAo
V0tWaWV3UmVmIHZpZXcsIENHU2l6ZSBuZXdTaXplKTsKIHZvaWQgV0tWaWV3U2V0Qm91bmRzT3Jp
Z2luKFdLVmlld1JlZiB2aWV3LCBDR1BvaW50IG5ld09yaWdpbik7CiB2b2lkIFdLVmlld1NldEJv
dW5kc1NpemUgKFdLVmlld1JlZiB2aWV3LCBDR1NpemUgbmV3U2l6ZSk7CiAKLVdFQkNPUkVfRVhQ
T1JUIENHUmVjdCBXS1ZpZXdHZXRGcmFtZSAoV0tWaWV3UmVmIHZpZXcpOworQ0dSZWN0IFdLVmll
d0dldEZyYW1lIChXS1ZpZXdSZWYgdmlldyk7CiAKLVdFQkNPUkVfRVhQT1JUIHZvaWQgV0tWaWV3
U2V0U2NhbGUgKFdLVmlld1JlZiB2aWV3LCBmbG9hdCBzY2FsZSk7Ci1XRUJDT1JFX0VYUE9SVCBm
bG9hdCBXS1ZpZXdHZXRTY2FsZSAoV0tWaWV3UmVmIHZpZXcpOwordm9pZCBXS1ZpZXdTZXRTY2Fs
ZSAoV0tWaWV3UmVmIHZpZXcsIGZsb2F0IHNjYWxlKTsKK2Zsb2F0IFdLVmlld0dldFNjYWxlIChX
S1ZpZXdSZWYgdmlldyk7CiBDR0FmZmluZVRyYW5zZm9ybSBfV0tWaWV3R2V0VHJhbnNmb3JtKFdL
Vmlld1JlZiB2aWV3KTsKIAotV0VCQ09SRV9FWFBPUlQgV0FLV2luZG93ICpXS1ZpZXdHZXRXaW5k
b3cgKFdLVmlld1JlZiB2aWV3KTsKK1dBS1dpbmRvdyAqV0tWaWV3R2V0V2luZG93IChXS1ZpZXdS
ZWYgdmlldyk7CiAKIENGQXJyYXlSZWYgV0tWaWV3R2V0U3Vidmlld3MgKFdLVmlld1JlZiB2aWV3
KTsKIAogV0tWaWV3UmVmIFdLVmlld0dldFN1cGVydmlldyAoV0tWaWV3UmVmIHZpZXcpOwogCi1X
RUJDT1JFX0VYUE9SVCB2b2lkIFdLVmlld0FkZFN1YnZpZXcgKFdLVmlld1JlZiB2aWV3LCBXS1Zp
ZXdSZWYgc3Vidmlldyk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIFdLVmlld1JlbW92ZUZyb21TdXBl
cnZpZXcgKFdLVmlld1JlZiB2aWV3KTsKK3ZvaWQgV0tWaWV3QWRkU3VidmlldyAoV0tWaWV3UmVm
IHZpZXcsIFdLVmlld1JlZiBzdWJ2aWV3KTsKK3ZvaWQgV0tWaWV3UmVtb3ZlRnJvbVN1cGVydmll
dyAoV0tWaWV3UmVmIHZpZXcpOwogCiBDR1BvaW50IFdLVmlld0NvbnZlcnRQb2ludFRvU3VwZXJ2
aWV3IChXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBhUG9pbnQpOwogQ0dQb2ludCBXS1ZpZXdDb252
ZXJ0UG9pbnRGcm9tU3VwZXJ2aWV3IChXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBhUG9pbnQpOwpA
QCAtMTMyLDE4ICsxMzIsMTggQEAgQ0dQb2ludCBXS1ZpZXdDb252ZXJ0UG9pbnRGcm9tQmFzZShX
S1ZpZXdSZWYgdmlldywgQ0dQb2ludCBhUG9pbnQpOwogCiBDR1JlY3QgV0tWaWV3Q29udmVydFJl
Y3RUb1N1cGVydmlldyAoV0tWaWV3UmVmIHZpZXcsIENHUmVjdCBhUmVjdCk7CiBDR1JlY3QgV0tW
aWV3Q29udmVydFJlY3RGcm9tU3VwZXJ2aWV3IChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IGFSZWN0
KTsKLVdFQkNPUkVfRVhQT1JUIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdFRvQmFzZSAoV0tWaWV3
UmVmIHZpZXcsIENHUmVjdCByKTsKLVdFQkNPUkVfRVhQT1JUIENHUmVjdCBXS1ZpZXdDb252ZXJ0
UmVjdEZyb21CYXNlIChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IGFSZWN0KTsKK0NHUmVjdCBXS1Zp
ZXdDb252ZXJ0UmVjdFRvQmFzZSAoV0tWaWV3UmVmIHZpZXcsIENHUmVjdCByKTsKK0NHUmVjdCBX
S1ZpZXdDb252ZXJ0UmVjdEZyb21CYXNlIChXS1ZpZXdSZWYgdmlldywgQ0dSZWN0IGFSZWN0KTsK
IAogQ0dSZWN0IFdLVmlld0dldFZpc2libGVSZWN0IChXS1ZpZXdSZWYgdmlldyk7CiAKIFdLVmll
d1JlZiBXS1ZpZXdGaXJzdENoaWxkIChXS1ZpZXdSZWYgdmlldyk7CiBXS1ZpZXdSZWYgV0tWaWV3
TmV4dFNpYmxpbmcgKFdLVmlld1JlZiB2aWV3KTsKLVdFQkNPUkVfRVhQT1JUIFdLVmlld1JlZiBX
S1ZpZXdUcmF2ZXJzZU5leHQgKFdLVmlld1JlZiB2aWV3KTsKK1dLVmlld1JlZiBXS1ZpZXdUcmF2
ZXJzZU5leHQgKFdLVmlld1JlZiB2aWV3KTsKIAotV0VCQ09SRV9FWFBPUlQgYm9vbCBXS1ZpZXdB
Y2NlcHRzRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3KTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgV0tWaWV3QmVjb21lRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3KTsKLVdFQkNPUkVf
RVhQT1JUIGJvb2wgV0tWaWV3UmVzaWduRmlyc3RSZXNwb25kZXIgKFdLVmlld1JlZiB2aWV3KTsK
K2Jvb2wgV0tWaWV3QWNjZXB0c0ZpcnN0UmVzcG9uZGVyIChXS1ZpZXdSZWYgdmlldyk7Citib29s
IFdLVmlld0JlY29tZUZpcnN0UmVzcG9uZGVyIChXS1ZpZXdSZWYgdmlldyk7Citib29sIFdLVmll
d1Jlc2lnbkZpcnN0UmVzcG9uZGVyIChXS1ZpZXdSZWYgdmlldyk7CiAKIHVuc2lnbmVkIGludCBX
S1ZpZXdHZXRBdXRvcmVzaXppbmdNYXNrKFdLVmlld1JlZiB2aWV3KTsKIHZvaWQgV0tWaWV3U2V0
QXV0b3Jlc2l6aW5nTWFzayAoV0tWaWV3UmVmIHZpZXcsIHVuc2lnbmVkIGludCBtYXNrKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKaW5kZXgg
NGRlZjI3MDA1MTlhOTY0MDVkMTZkMTljNzg1NzZkZGM4NTEyYzVlMy4uM2U2OTcwODk0YTVlMDBl
OTU1ODEzYjhjZmUyMjMyNmE4ZDNlNWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKQEAgLTUyLDQwICs1Miw0MCBAQCBjbGFzcyBOU1J1
bkxvb3A7CiB2b2lkIFdlYlRocmVhZExvY2sodm9pZCk7CiAgICAgCiAvLyBUaGlzIGlzIGEgbm8t
b3AgZm9yIGNvbXBhdGliaWxpdHkgb25seS4gSXQgd2lsbCBnbyBhd2F5LiBQbGVhc2UgZG9uJ3Qg
dXNlLgotV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRVbmxvY2sodm9pZCk7Cit2b2lkIFdl
YlRocmVhZFVubG9jayh2b2lkKTsKICAgICAKIC8vIFBsZWFzZSBkb24ndCB1c2UgYW55dGhpbmcg
YmVsb3cgdGhpcyBsaW5lIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuIElmIHVu
c3VyZSwgYXNrLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1XRUJD
T1JFX0VYUE9SVCBib29sIFdlYlRocmVhZElzTG9ja2VkKHZvaWQpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQodm9pZCk7Citib29sIFdlYlRocmVhZElz
TG9ja2VkKHZvaWQpOworYm9vbCBXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQodm9pZCk7CiAg
ICAgCi1XRUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZExvY2tQdXNoTW9kYWwodm9pZCk7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZExvY2tQb3BNb2RhbCh2b2lkKTsKK3ZvaWQgV2Vi
VGhyZWFkTG9ja1B1c2hNb2RhbCh2b2lkKTsKK3ZvaWQgV2ViVGhyZWFkTG9ja1BvcE1vZGFsKHZv
aWQpOwogCi1XRUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZEVuYWJsZSh2b2lkKTsKLVdFQkNP
UkVfRVhQT1JUIGJvb2wgV2ViVGhyZWFkSXNFbmFibGVkKHZvaWQpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBXZWJUaHJlYWRJc0N1cnJlbnQodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIFdlYlRo
cmVhZE5vdEN1cnJlbnQodm9pZCk7Cit2b2lkIFdlYlRocmVhZEVuYWJsZSh2b2lkKTsKK2Jvb2wg
V2ViVGhyZWFkSXNFbmFibGVkKHZvaWQpOworYm9vbCBXZWJUaHJlYWRJc0N1cnJlbnQodm9pZCk7
Citib29sIFdlYlRocmVhZE5vdEN1cnJlbnQodm9pZCk7CiAgICAgCiAvLyBUaGVzZSBhcmUgZm9y
IDxyZGFyOi8vcHJvYmxlbS82ODE3MzQxPiBNYW55IGFwcHMgY3Jhc2hpbmcgY2FsbGluZyAtW1VJ
RmllbGRFZGl0b3IgdGV4dF0gaW4gc2Vjb25kYXJ5IHRocmVhZAogLy8gRG9uJ3QgdXNlIHRoZW0g
dG8gc29sdmUgYW55IHJhbmRvbSBwcm9ibGVtcyB5b3UgbWlnaHQgaGF2ZS4KLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgV2ViVGhyZWFkTG9ja0Zyb21BbnlUaHJlYWQoKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgV2ViVGhyZWFkTG9ja0Zyb21BbnlUaHJlYWROb0xvZygpOwotV0VCQ09SRV9FWFBPUlQgdm9p
ZCBXZWJUaHJlYWRVbmxvY2tGcm9tQW55VGhyZWFkKCk7Cit2b2lkIFdlYlRocmVhZExvY2tGcm9t
QW55VGhyZWFkKCk7Cit2b2lkIFdlYlRocmVhZExvY2tGcm9tQW55VGhyZWFkTm9Mb2coKTsKK3Zv
aWQgV2ViVGhyZWFkVW5sb2NrRnJvbUFueVRocmVhZCgpOwogCiAvLyBUaGlzIGlzIGZvciA8cmRh
cjovL3Byb2JsZW0vODAwNTE5Mj4gTWFpbCBlbnRlcmVkIGEgc3RhdGUgd2hlcmUgbWVzc2FnZSBz
dWJqZWN0IGFuZCBjb250ZW50IGlzbid0IGRpc3BsYXllZC4KIC8vIEl0IHNob3VsZCBvbmx5IGJl
IHVzZWQgZm9yIE1vYmlsZU1haWwgdG8gd29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzgwMDUx
OTI+LgotV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwoKTsK
K3ZvaWQgV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKCk7CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBXZWJUaHJlYWRTaG91bGRZaWVsZCh2b2lkKSB7IHJldHVybiB3ZWJUaHJlYWRTaG91bGRZaWVs
ZDsgfQogc3RhdGljIGlubGluZSB2b2lkIFdlYlRocmVhZFNldFNob3VsZFlpZWxkKCkgeyB3ZWJU
aHJlYWRTaG91bGRZaWVsZCA9IHRydWU7IH0KIAotV0VCQ09SRV9FWFBPUlQgQ0ZSdW5Mb29wUmVm
IFdlYlRocmVhZFJ1bkxvb3Aodm9pZCk7CitDRlJ1bkxvb3BSZWYgV2ViVGhyZWFkUnVuTG9vcCh2
b2lkKTsKIE5TUnVuTG9vcCogV2ViVGhyZWFkTlNSdW5Mb29wKHZvaWQpOwogV2ViVGhyZWFkQ29u
dGV4dCAqV2ViVGhyZWFkQ3VycmVudENvbnRleHQodm9pZCk7CiBib29sIFdlYlRocmVhZENvbnRl
eHRJc0N1cnJlbnQodm9pZCk7CiAKLVdFQkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkU2V0RGVs
ZWdhdGVTb3VyY2VSdW5Mb29wTW9kZShDRlN0cmluZ1JlZiBtb2RlKTsKK3ZvaWQgV2ViVGhyZWFk
U2V0RGVsZWdhdGVTb3VyY2VSdW5Mb29wTW9kZShDRlN0cmluZ1JlZiBtb2RlKTsKIAogI2lmIGRl
ZmluZWQoX19jcGx1c3BsdXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRNZXNzYWdlLmgKaW5kZXggZTYwMzk0ZmFmYjFmZjEzOTQw
ZjdjZmZhZWM5YzNhNzNhYmE4NmQyNy4uNDI3ZjJmYjhiZjUyYzA0MTBkMzA0MmNkMDA2MGQ5NzU2
YmZlYzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZE1lc3NhZ2UuaApAQCAtNDYsMjQgKzQ2LDI0IEBAIGV4dGVybiAiQyIgewog
QGVuZAogCiAvLyBSZWdpc3RlciBhIGNsYXNzIGZvciBkZWFsbG9jYXRpb24gb24gdGhlIFdlYlRo
cmVhZAotV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChD
bGFzcyBjbHMpOwordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChDbGFzcyBjbHMp
Owogdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9jayhDbGFzcyBjbHMpOwog
CiAvLyBBc3luY2hyb25vdXMgZnJvbSBtYWluIHRocmVhZCB0byB3ZWIgdGhyZWFkLgotV0VCQ09S
RV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKTsKK3ZvaWQgV2Vi
VGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaik7CiAKIC8vIFN5bmNocm9ub3VzIGZyb20gd2Vi
IHRocmVhZCB0byBtYWluIHRocmVhZCwgb3IgbWFpbiB0aHJlYWQgdG8gbWFpbiB0aHJlYWQuCi1X
RUJDT1JFX0VYUE9SVCB2b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0ZShOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24pOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQo
dm9pZCAoXikodm9pZCkpOwordm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9u
ICppbnZvY2F0aW9uKTsKK3ZvaWQgV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKHZvaWQgKF4pKHZv
aWQpKTsKIAogLy8gQXN5bmNocm9ub3VzIGZyb20gd2ViIHRocmVhZCB0byBtYWluIHRocmVhZCwg
YnV0IHN5bmNocm9ub3VzIHdoZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLVdFQkNPUkVf
RVhQT1JUIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKTsKK3ZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKTsKIAogLy8gQXN5bmNocm9ub3VzIGZyb20gd2ViIHRocmVhZCB0byBtYWluIHRo
cmVhZCwgYnV0IHN5bmNocm9ub3VzIHdoZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLVdF
QkNPUkVfRVhQT1JUIHZvaWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyAqbmFt
ZSwgaWQgb2JqZWN0LCBpZCB1c2VySW5mbyk7Cit2b2lkIFdlYlRocmVhZFBvc3ROb3RpZmljYXRp
b24oTlNTdHJpbmcgKm5hbWUsIGlkIG9iamVjdCwgaWQgdXNlckluZm8pOwogCiAvLyBDb252ZW5p
ZW5jZSBtZXRob2QgZm9yIG1ha2luZyBhbiBOU0ludm9jYXRpb24gb2JqZWN0Ci1XRUJDT1JFX0VY
UE9SVCBOU0ludm9jYXRpb24gKldlYlRocmVhZE1ha2VOU0ludm9jYXRpb24oaWQgdGFyZ2V0LCBT
RUwgc2VsZWN0b3IpOworTlNJbnZvY2F0aW9uICpXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlk
IHRhcmdldCwgU0VMIHNlbGVjdG9yKTsKIAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgKaW5kZXggMDA0
NDllZDNjZjczNWQzZDNkNzY1MTRmNjczMTZkM2Y2OWM4MGJhYy4uMDg3NDhlMTJjOTg1YjdiYWFi
YTA1YTkwYzU0ZDhhNjEzYjMxOWMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9CbG9ja0V4Y2VwdGlvbnMuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL05TRXhjZXB0aW9uLmg+CiAKLVdFQkNPUkVfRVhQT1JUIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKik7CitOT19S
RVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5TRXhj
ZXB0aW9uICopOwogCiAjZGVmaW5lIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsK
ICNkZWZpbmUgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAq
bG9jYWxFeGNlcHRpb24pIHsgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24obG9jYWxFeGNlcHRp
b24pOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAppbmRleCA4NDUwMjk5ZGM2ZTM1ZDVjMDBiZTZmMzFh
NWRjZmQ5MjUxNDFmYjFlLi5kZjg1YjdmYzlhNWUyMmYwZGU5ZjE4ZWRjYjA3MDljOTdiZTVkZTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyOwogLy8gY2xpZW50IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJl
ZS4KIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayA6IHB1YmxpYyBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrKCk7CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAK
ICAgICAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopIG92ZXJyaWRlOwpAQCAtNTEsNyAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIGxhc3RP
cmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyRGVzdHJveWVk
KCkgb3ZlcnJpZGUgeyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE9yaWVudGF0aW9u
KFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPik7CisgICAgdm9pZCBzZXRPcmllbnRh
dGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4pOwogCiBwcml2YXRlOgogICAg
IHZvaWQgdGltZXJGaXJlZChUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UuaAppbmRleCBjMWZlZDEzNzVmNmFkMDkyYzgwN2Y1YTJiZTc2
ODkzNTI3ZmMyNGI0Li5mNGQwMjI2OGIwNjliOWVhODQyYzdiNDhhOGE3OGYzNjQ3ZTQyZmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgKQEAgLTM2LDE5ICszNiwxOSBAQCBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKIAogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UoKTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoKTsKICAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Us
IGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNG
YWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBwcmV2aW91
c0ZhaWx1cmVDb3VudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENyZWRlbnRp
YWwmIHByb3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgZmFpbHVyZVJlc3BvbnNlKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0OworICAgIGNvbnN0IENyZWRl
bnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0OworICAgIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwYWNlKCkgY29uc3Q7CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgZmFpbHVyZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IoKSBjb25zdDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbnVsbGlmeSgpOworICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3Q7CisgICAgdm9pZCBudWxsaWZ5KCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgY29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOworICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBiKTsKIAogcHJvdGVjdGVkOgogICAgIC8vIFRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBz
cGVjaWZpYyBmaWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
aAppbmRleCA4OTU0ZTljMWNiMjQ1OTQ0ZDE4M2Y4YjVkNGQyYjI0YTg2NDJmYTFlLi4wZDBiM2I3
MmZkNTA1YjBhMjZmMDA0NzNjNGI4Y2E2ZTM4YTUxMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiB9Owog
CiBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3Qg
bG9uZyBsb25nIHRvRW5kT2ZGaWxlOworICAgIHN0YXRpYyBjb25zdCBsb25nIGxvbmcgdG9FbmRP
ZkZpbGU7CiAKICAgICBlbnVtIHsKICAgICAgICAgRGF0YSwKQEAgLTEyNCw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudFR5cGU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJik7CiAKICAgICBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcygpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbXM7IH0KICAgICB2b2lkIHN3YXBJdGVtcyhCbG9iRGF0YUl0ZW1MaXN0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuaAppbmRleCA1ODRiNGU2MmFjNmIwYzUxNjczNTZjN2EyNTNjZDVmZGRmNTdhMWJl
Li41MzJiZjZmM2RlNmIwYmNmM2YxMWJjYTAzMTk1MGUzY2M1OWI5ODc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmgKQEAgLTM5LDExICszOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgpKTsKICAgICB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVSZWZlcmVuY2UoKTsKKyAgICB2aXJ0dWFsIH5CbG9i
RGF0YUZpbGVSZWZlcmVuY2UoKTsKIAogICAgIHZvaWQgc3RhcnRUcmFja2luZ01vZGlmaWNhdGlv
bnMoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgcGF0aCgpOworICAgIGNv
bnN0IFN0cmluZyYgcGF0aCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCk7CiAgICAg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpOwogCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYg
cGF0aCk7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCBlYTI5MDA4ZTk1MGMzOWIy
YzE4YjJlYTg5ZTk2ODljMjRhODJjNDNjLi41NzM1M2Q5N2QxZmNmYTM4MTQ1Nzg3Mjk0MjI3YWI2
MjY1YTlhZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0Js
b2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+QmxvYlJlZ2lzdHJ5KCk7CisgICAgdmlydHVhbCB+
QmxvYlJlZ2lzdHJ5KCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCmluZGV4IGY5
NDU4MTllZTU2MjE0NWEzNzA4ZjkwOTVlZjEzNDJmOWJiZmFlN2MuLjI1NGE4MGQxOTliNjUwZDIw
YjA0Y2ExZThkYTliYTAxMTVhMWNkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEJs
b2JSZWdpc3RyeUltcGwgZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5CbG9iUmVnaXN0cnlJbXBsKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBCbG9i
RGF0YSogZ2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIEJsb2JEYXRh
KiBnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRy
PFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgKaW5kZXggNGY3ODQ0NzU3Zjg2NDExYmIxMjIx
YWNkNGMwNjk3ODJiNjExYWYxNi4uMzM3OWUzZmZkYmZmZGU5MTQxZDE2ZWFmMWE4MDIwOGVjZTZj
YzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bEJhc2UuaApAQCAtNDMsMTggKzQzLDE4IEBAIGNsYXNzIENyZWRlbnRpYWxCYXNlIHsKIHB1Ymxp
YzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVzZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNQYXNzd29y
ZCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJz
aXN0ZW5jZSgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgdXNlcigpIGNvbnN0OworICAgIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQoKSBjb25zdDsKKyAgICBib29sIGhhc1Bhc3N3b3JkKCkgY29u
c3Q7CisgICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKCkgY29uc3Q7CiAKICAg
ICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3Qg
Q3JlZGVudGlhbCYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlh
bEJhc2UoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsQmFzZShjb25zdCBTdHJpbmcm
IHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7Cisg
ICAgQ3JlZGVudGlhbEJhc2UoKTsKKyAgICBDcmVkZW50aWFsQmFzZShjb25zdCBTdHJpbmcmIHVz
ZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAgICAg
Q3JlZGVudGlhbEJhc2UoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSk7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVu
dGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKaW5kZXggYmQ5
YWNmOGUxNmJiNTczYTBmOTY0YjdiNDJiOWNmN2QzN2U0NjIzYi4uM2M4Yzc0ODc1MjAyMDU5ZjE3
MWQxZDI0YWJjYWQzZmM5NWQ4NTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaApAQCAtNDAsMTcgKzQwLDE3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCByZW1vdmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAKICAg
ICAvLyBPUyBwZXJzaXN0ZW50IHN0b3JhZ2UuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENy
ZWRlbnRpYWwgZ2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYp
OworICAgIHN0YXRpYyBDcmVkZW50aWFsIGdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgdm9pZCBz
YXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVk
ZW50aWFsJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJDcmVkZW50aWFs
cygpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKTsKICNlbmRpZgogCiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyB3b3JrIGZvciBhdXRoZW50aWNhdGlvbiBzY2hlbWVzIHRoYXQgc3Vw
cG9ydCBzZW5kaW5nIGNyZWRlbnRpYWxzIHdpdGhvdXQgd2FpdGluZyBmb3IgYSByZXF1ZXN0LiBF
LmcuLCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBzY2hlbWUKICAgICAvLyBhIGNsaWVu
dCBzaG91bGQgYXNzdW1lIHRoYXQgYWxsIHBhdGhzIGF0IG9yIGRlZXBlciB0aGFuIHRoZSBkZXB0
aCBvZiBhIGtub3duIHByb3RlY3RlZCByZXNvdXJjZSBzaGFyZSBhcmUgd2l0aGluIHRoZSBzYW1l
IHByb3RlY3Rpb24gc3BhY2UuCiAgICAgc3RhdGljIGJvb2wgc2V0KGNvbnN0IENyZWRlbnRpYWwm
LCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8g
YSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsK
KyAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXQoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBzZXRQcml2YXRlTW9kZShib29sKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKaW5kZXggZDViODlmOTIxNzUxMGVlODM4
NDE4MGI1YzY3MzAwZTA3ZGMyZWQyYi4uYzg3NjIzZDg4MWJhMjNiMDgzOTY0MGY3MzE0NTEwOTVm
MzFlZmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0
Zm9ybUNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxh
dGZvcm1Db29raWVKYXIuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQ29va2llOwogCiAvLyBG
SVhNRTogVGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBtZW1i
ZXIgZnVuY3Rpb25zLgogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYpOworU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsK
IFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCmluZGV4IGFiZTBkYTBmNGE4Yzg0Y2YzNTlhNTFiMjVlNmM4NGY2NTMwMzMz
MWEuLjY0ZWNmMDUxZGM0ZjBiMDliODEyNzY0MTVkOGRkZDI4ZTkxMmU1ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiBwdWJsaWMgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlIHsKIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2
aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZp
b3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlvbkNsaWVudCopOwogCkBAIC02MSw4
ICs2MSw4IEBAIHB1YmxpYzoKICAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpuc1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgY29uc3QgeyByZXR1cm4gbV9uc0NoYWxsZW5nZS5n
ZXQoKTsgfQogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dGhlbnRpY2F0
aW9uQ2xpZW50KEF1dGhlbnRpY2F0aW9uQ2xpZW50Kik7IC8vIENoYW5nZXMgc2VuZGVyIHRvIG9u
ZSB0aGF0IGludm9rZXMgY2xpZW50IG1ldGhvZHMuCi0gICAgV0VCQ09SRV9FWFBPUlQgQXV0aGVu
dGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBdXRoZW50aWNhdGlvbkNsaWVudChBdXRoZW50aWNhdGlvbkNsaWVudCopOyAvLyBDaGFuZ2Vz
IHNlbmRlciB0byBvbmUgdGhhdCBpbnZva2VzIGNsaWVudCBtZXRob2RzLgorICAgIEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2Eu
aAppbmRleCBmMmNkOTYzMmMyMGU2NTU3MGRhY2U5YjljMDkxMTA3NzZkNzZlMzE3Li4xMTI5MWY3
Y2U4OGJlMzg2NzJiMWY2ZWMwMDlmOThlN2QxOThiZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKQEAgLTU1
LDIxICs1NSwyMSBAQCBwdWJsaWM6CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBleHBsaWNpdCBD
cmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKKyAgICBleHBsaWNpdCBD
cmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBl
bmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRp
YWwgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7
IH0KIAogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVu
dGlhbCgpIGNvbnN0OwogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFs
ICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKKyAgICBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlh
bCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRl
bnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShOU1VSTENyZWRlbnRp
YWwgKik7CisgICAgc3RhdGljIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShOU1VS
TENyZWRlbnRpYWwgKik7CiAKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+
IG1fbnNDcmVkZW50aWFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmgKaW5kZXggZmU5NGI2MGQxOGY1MjM4YTU1MGZh
ODdmNGJiYzFlMmZjNDIzMGEyMy4uYzhiM2NkYWFiZDZiNjg1NDlhYjYxODk5MTUzZTgzYjFjNDli
MTQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2Vy
dGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q2VydGlmaWNhdGVJbmZvLmgKQEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm8gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIENl
cnRpZmljYXRlSW5mbygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENlcnRpZmljYXRl
SW5mbyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ2VydGlmaWNhdGVJbmZvKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7CisgICAgQ2Vy
dGlmaWNhdGVJbmZvKCk7CisgICAgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oQ0ZBcnJheVJlZiBj
ZXJ0aWZpY2F0ZUNoYWluKTsKIAogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5
UmVmIGNlcnRpZmljYXRlQ2hhaW4pIHsgbV9jZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVD
aGFpbjsgfQogICAgIENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0IHsgcmV0dXJu
IG1fY2VydGlmaWNhdGVDaGFpbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCBiYzBmOWJkZWFjY2M1NmFiMGU0MTNhMjcwY2IwZjQ5
NzZlNWY0ZWEzLi41MzQ5NDM3ZjhkMmIzMTBkYTRmZWMyNWIyNjhjZjM3ZGM1YTYzM2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtNTcsMjEg
KzU3LDIxIEBAIGNsYXNzIFNRTGl0ZURhdGFiYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTUUxpdGVEYXRhYmFzZSk7CiAgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uOwog
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0ZURhdGFiYXNlKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlKCk7CisgICAgU1FMaXRlRGF0YWJhc2UoKTsKKyAgICB+
U1FMaXRlRGF0YWJhc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3Blbihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBib29sIGZvcldlYlNRTERhdGFiYXNlID0gZmFsc2UpOworICAgIGJv
b2wgb3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIGZvcldlYlNRTERhdGFiYXNlID0g
ZmFsc2UpOwogICAgIGJvb2wgaXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9kYjsgfQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBp
bnRlcnJ1cHQoKTsKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKTsKIAogICAgIHZvaWQgdXBkYXRl
TGFzdENoYW5nZXNDb3VudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29t
bWFuZChjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGV4ZWN1dGVDb21tYW5kKGNvbnN0IFN0cmlu
ZyYpOwogICAgIGJvb2wgcmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQoY29uc3QgU3RyaW5nJik7CiAg
ICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJBbGxU
YWJsZXMoKTsKICAgICBpbnQgcnVuVmFjdXVtQ29tbWFuZCgpOwogICAgIGludCBydW5JbmNyZW1l
bnRhbFZhY3V1bUNvbW1hbmQoKTsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgZW51
bSBTeW5jaHJvbm91c1ByYWdtYSB7IFN5bmNPZmYgPSAwLCBTeW5jTm9ybWFsID0gMSwgU3luY0Z1
bGwgPSAyIH07CiAgICAgdm9pZCBzZXRTeW5jaHJvbm91cyhTeW5jaHJvbm91c1ByYWdtYSk7CiAg
ICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RFcnJvcigpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJvck1zZygpOworICAgIGludCBsYXN0RXJyb3IoKTsKKyAg
ICBjb25zdCBjaGFyKiBsYXN0RXJyb3JNc2coKTsKICAgICAKICAgICBzcWxpdGUzKiBzcWxpdGUz
SGFuZGxlKCkgY29uc3QgewogI2lmICFQTEFURk9STShJT1MpCkBAIC0xMzEsMTUgKzEzMSwxNSBA
QCBwdWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVtUHJhZ21hIHsgQXV0b1ZhY3V1bU5vbmUgPSAw
LCBBdXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1dW1JbmNyZW1lbnRhbCA9IDIgfTsKICAgICBi
b29sIHR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIHN0
ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPik7Cisg
ICAgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUs
IHN0ZDo6ZnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPik7
CiAgICAgdm9pZCByZW1vdmVDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlv
bk5hbWUpOwogCiAgICAgLy8gU2V0IHRoaXMgZmxhZyB0byBhbGxvdyBhY2Nlc3MgZnJvbSBtdWx0
aXBsZSB0aHJlYWRzLiAgTm90IGFsbCBtdWx0aS10aHJlYWRlZCBhY2Nlc3NlcyBhcmUgc2FmZSEK
ICAgICAvLyBTZWUgaHR0cDovL3d3dy5zcWxpdGUub3JnL2N2c3RyYWMvd2lraT9wPU11bHRpVGhy
ZWFkaW5nIGZvciBtb3JlIGluZm8uCiAjaWZuZGVmIE5ERUJVRwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOworICAgIHZvaWQgZGlzYWJsZVRocmVhZGlu
Z0NoZWNrcygpOwogI2Vsc2UKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2FibGVUaHJlYWRp
bmdDaGVja3MoKSB7fQorICAgIHZvaWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpIHt9CiAjZW5k
aWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaAppbmRleCBiMzc4ZWNkYzJhYjU5YzU3MGJjZWZkODE2ZDIzMWVj
MzZkZGIwNzgyLi40ODNkOWFmZTM2ZmIxMWRhN2ExOWExZDU0Njk5Zjg4NmI5NzNiYTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIgewog
dm9pZCBkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogdm9pZCBpbmNyZW1l
bnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwogCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqKTsKK3ZvaWQgc2V0Q2xpZW50KFNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCopOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogYm9v
bCBoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCBlMTUyNTg0MjIwZTA1MTE3MWI0ZjBkMWJhZGQ1
ZTQzNTM5MTQzYjBiLi43OTQyYmVkOTFjODhjYjgyYWYwNmQyYjMwMWI0YTg1OGFkYzM1YjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBAIC0z
NywyMyArMzcsMjMgQEAgY2xhc3MgU1FMVmFsdWU7CiBjbGFzcyBTUUxpdGVTdGF0ZW1lbnQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZVN0YXRlbWVudCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0ZVN0YXRlbWVudChT
UUxpdGVEYXRhYmFzZSYsIGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxp
dGVTdGF0ZW1lbnQoKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2UmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB+U1FMaXRlU3RhdGVtZW50KCk7CiAgICAgCi0gICAgV0VCQ09SRV9F
WFBPUlQgaW50IHByZXBhcmUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2IoaW50
IGluZGV4LCBjb25zdCB2b2lkKiBibG9iLCBpbnQgc2l6ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
aW50IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgaW50IGJpbmRUZXh0KGludCBpbmRleCwgY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgaW50IGJpbmRJbnQoaW50IGluZGV4LCBpbnQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBiaW5kSW50NjQoaW50IGluZGV4LCBpbnQ2NF90KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
YmluZERvdWJsZShpbnQgaW5kZXgsIGRvdWJsZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJp
bmROdWxsKGludCBpbmRleCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRWYWx1ZShpbnQg
aW5kZXgsIGNvbnN0IFNRTFZhbHVlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgYmlu
ZFBhcmFtZXRlckNvdW50KCkgY29uc3Q7CisgICAgaW50IHByZXBhcmUoKTsKKyAgICBpbnQgYmlu
ZEJsb2IoaW50IGluZGV4LCBjb25zdCB2b2lkKiBibG9iLCBpbnQgc2l6ZSk7CisgICAgaW50IGJp
bmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJik7CisgICAgaW50IGJpbmRUZXh0KGludCBp
bmRleCwgY29uc3QgU3RyaW5nJik7CisgICAgaW50IGJpbmRJbnQoaW50IGluZGV4LCBpbnQpOwor
ICAgIGludCBiaW5kSW50NjQoaW50IGluZGV4LCBpbnQ2NF90KTsKKyAgICBpbnQgYmluZERvdWJs
ZShpbnQgaW5kZXgsIGRvdWJsZSk7CisgICAgaW50IGJpbmROdWxsKGludCBpbmRleCk7CisgICAg
aW50IGJpbmRWYWx1ZShpbnQgaW5kZXgsIGNvbnN0IFNRTFZhbHVlJik7CisgICAgdW5zaWduZWQg
YmluZFBhcmFtZXRlckNvdW50KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQgc3Rl
cCgpOworICAgIGludCBzdGVwKCk7CiAgICAgaW50IGZpbmFsaXplKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgaW50IHJlc2V0KCk7CisgICAgaW50IHJlc2V0KCk7CiAgICAgCiAgICAgaW50IHByZXBh
cmVBbmRTdGVwKCkgeyBpZiAoaW50IGVycm9yID0gcHJlcGFyZSgpKSByZXR1cm4gZXJyb3I7IHJl
dHVybiBzdGVwKCk7IH0KICAgICAKQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIC8vIHJl
dHVybmVkIGluIHRoZSBsYXN0IHN0ZXAoKQogICAgIGludCBjb2x1bW5Db3VudCgpOwogICAgIAot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb2x1bW5OdWxsKGludCBjb2wpOwotICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNDb2x1bW5EZWNsYXJlZEFzQmxvYihpbnQgY29sKTsKKyAgICBib29s
IGlzQ29sdW1uTnVsbChpbnQgY29sKTsKKyAgICBib29sIGlzQ29sdW1uRGVjbGFyZWRBc0Jsb2Io
aW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVtbk5hbWUoaW50IGNvbCk7CiAgICAgU1FMVmFs
dWUgZ2V0Q29sdW1uVmFsdWUoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVtblRleHQoaW50
IGNvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJh
bnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlv
bi5oCmluZGV4IGI5ZDFmNzk0MGNjYjYyYWJmNDNmOTc1ZjMxNmU3ODFhMjY4NzJiNzMuLmFkYjgw
MzI3ZGU0YjJkZTQ2NTkyZTVkZDA0MGY2MDIwNDQ5ZWUxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCkBAIC0zNiwxMiArMzYsMTIgQEAg
Y2xhc3MgU1FMaXRlRGF0YWJhc2U7CiBjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlVHJhbnNhY3Rpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTUUxpdGVUcmFuc2FjdGlvbihTUUxp
dGVEYXRhYmFzZSYgZGIsIGJvb2wgcmVhZE9ubHkgPSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgflNRTGl0ZVRyYW5zYWN0aW9uKCk7CisgICAgU1FMaXRlVHJhbnNhY3Rpb24oU1FMaXRlRGF0
YWJhc2UmIGRiLCBib29sIHJlYWRPbmx5ID0gZmFsc2UpOworICAgIH5TUUxpdGVUcmFuc2FjdGlv
bigpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW4oKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNvbW1pdCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm9sbGJhY2so
KTsKKyAgICB2b2lkIGJlZ2luKCk7CisgICAgdm9pZCBjb21taXQoKTsKKyAgICB2b2lkIHJvbGxi
YWNrKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgCiAgICAgYm9vbCBpblByb2dyZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9pblByb2dyZXNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0JpZGlDb250ZXh0LmgKaW5kZXggOWE0MjczNjA2NjAxYjMzNzgxMjdjOTRlNGEyMDkxZWYwNTIz
OGY4OS4uNWM1NmI3ODYwZmFlODA2MTI0NjVkYWVjMGQ4NzlmNDNmN2UxMDhmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaApAQCAtMzgsNyArMzgsNyBAQCBl
bnVtIEJpZGlFbWJlZGRpbmdTb3VyY2UgewogLy8gVXNlZCB0byBrZWVwIHRyYWNrIG9mIGV4cGxp
Y2l0IGVtYmVkZGluZ3MuCiBjbGFzcyBCaWRpQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPEJp
ZGlDb250ZXh0PiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQ
dHI8QmlkaUNvbnRleHQ+IGNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlv
biwgYm9vbCBvdmVycmlkZSA9IGZhbHNlLCBCaWRpRW1iZWRkaW5nU291cmNlID0gRnJvbVN0eWxl
T3JET00sIEJpZGlDb250ZXh0KiBwYXJlbnQgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
aWRpQ29udGV4dD4gY3JlYXRlKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uLCBi
b29sIG92ZXJyaWRlID0gZmFsc2UsIEJpZGlFbWJlZGRpbmdTb3VyY2UgPSBGcm9tU3R5bGVPckRP
TSwgQmlkaUNvbnRleHQqIHBhcmVudCA9IDApOwogCiAgICAgQmlkaUNvbnRleHQqIHBhcmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50LmdldCgpOyB9CiAgICAgdW5zaWduZWQgY2hhciBsZXZl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbGV2ZWw7IH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgb3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlOyB9CiAgICAgQmlk
aUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCaWRp
RW1iZWRkaW5nU291cmNlPihtX3NvdXJjZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NS
ZWZQdHI8QmlkaUNvbnRleHQ+IGNvcHlTdGFja1JlbW92aW5nVW5pY29kZUVtYmVkZGluZ0NvbnRl
eHRzKCk7CisgICAgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gY29weVN0YWNrUmVtb3ZpbmdVbmlj
b2RlRW1iZWRkaW5nQ29udGV4dHMoKTsKIHByaXZhdGU6CiAgICAgQmlkaUNvbnRleHQodW5zaWdu
ZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBC
aWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKICAgICAgICAg
OiBtX2xldmVsKGxldmVsKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>