<?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>48122</bug_id>
          
          <creation_ts>2010-10-22 04:18:32 -0700</creation_ts>
          <short_desc>REGRESSION(r70298): &quot;WebKit win compilation failure&quot; (Requested by yurys on #webkit).</short_desc>
          <delta_ts>2010-10-22 04:41:51 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>48058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>abarth</cc>
    
    <cc>pfeldman</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297902</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-22 04:18:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70298 broke the build:
&quot;WebKit win compilation failure&quot; (Requested by yurys on #webkit).

This is an automatic bug report generated by the sheriff-bot. 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 case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297903</commentid>
    <comment_count>1</comment_count>
      <attachid>71547</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-22 04:19:11 -0700</bug_when>
    <thetext>Created attachment 71547
ROLLOUT of r70298

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 --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297905</commentid>
    <comment_count>2</comment_count>
      <attachid>71547</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-22 04:37:37 -0700</bug_when>
    <thetext>Comment on attachment 71547
ROLLOUT of r70298

The patch is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297906</commentid>
    <comment_count>3</comment_count>
      <attachid>71549</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-22 04:38:42 -0700</bug_when>
    <thetext>Created attachment 71549
Correct rollout patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297907</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-22 04:41:51 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/inspector/ScriptCallStack.h =&gt; WebCore/bindings/js/ScriptCallStack.h
	R	WebCore/bindings/js/ScriptCallStackFactory.h =&gt; WebCore/bindings/js/ScriptCallFrame.cpp
	R	WebCore/inspector/ScriptCallFrame.h =&gt; WebCore/bindings/js/ScriptCallFrame.h
	R	WebCore/bindings/js/ScriptCallStackFactory.cpp =&gt; WebCore/bindings/js/ScriptCallStack.cpp
	R	WebCore/inspector/ScriptCallFrame.cpp =&gt; WebCore/bindings/v8/ScriptCallFrame.cpp
	R	WebCore/inspector/ScriptArguments.h =&gt; WebCore/bindings/v8/ScriptCallFrame.h
	R	WebCore/bindings/v8/ScriptCallStackFactory.cpp =&gt; WebCore/bindings/v8/ScriptCallStack.cpp
	R	WebCore/inspector/ScriptCallStack.h =&gt; WebCore/bindings/v8/ScriptCallStack.h
	D	WebCore/bindings/v8/ScriptCallStackFactory.h
	D	WebCore/inspector/ScriptArguments.cpp
	D	WebCore/inspector/ScriptCallStack.cpp
	M	WebCore/Android.jscbindings.mk
	M	WebCore/Android.v8bindings.mk
	M	WebCore/CMakeLists.txt
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSBindingsAllInOne.cpp
	M	WebCore/bindings/js/JSConsoleCustom.cpp
	M	WebCore/bindings/js/ScriptState.h
	M	WebCore/bindings/scripts/CodeGeneratorJS.pm
	M	WebCore/bindings/scripts/CodeGeneratorV8.pm
	M	WebCore/bindings/scripts/test/JS/JSTestObj.cpp
	M	WebCore/bindings/scripts/test/V8/V8TestObj.cpp
	M	WebCore/bindings/v8/ScriptController.cpp
	M	WebCore/bindings/v8/ScriptState.h
	M	WebCore/bindings/v8/V8ConsoleMessage.cpp
	M	WebCore/bindings/v8/V8ConsoleMessage.h
	M	WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
	M	WebCore/dom/NodeFilter.h
	M	WebCore/inspector/ConsoleMessage.cpp
	M	WebCore/inspector/ConsoleMessage.h
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/page/Console.cpp
	M	WebCore/page/Console.h
	M	WebCore/page/Console.idl
Committed r70300</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71547</attachid>
            <date>2010-10-22 04:19:11 -0700</date>
            <delta_ts>2010-10-22 04:38:42 -0700</delta_ts>
            <desc>ROLLOUT of r70298</desc>
            <filename>bug-48122-20101022111908.patch</filename>
            <type>text/plain</type>
            <size>80215</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCBlZWEzNTM3YzIxZTg1MDMyMTQxNTI4NDBjNTE5NmMz
YjllOGRmNzc4Li4zMjg4MDU5YzA2MzllNDQxZWYwYTIzNDFlZGVjNGNiYTc1OWE4ZThmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRy
b2lkLmpzY2JpbmRpbmdzLm1rCkBAIC0xNjYsNyArMTY2LDggQEAgTE9DQUxfU1JDX0ZJTEVTICs9
IFwKIAliaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAliaW5kaW5ncy9qcy9TY3Jp
cHRBcnJheS5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAot
CWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKKwliaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsRnJhbWUuY3BwIFwKKwliaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwIFwK
IAliaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0Fu
ZHJvaWQudjhiaW5kaW5ncy5tawppbmRleCA2OTJiNDUzMzliNGRjNzMyMTFjNmEyY2IyNDY0YjQx
NWVjYzc0OTgxLi5mZGVlNmZiYWM1ZDVkMmE2ZmNiYmQyZWU4YWU1NzM4NTE3ZTM1NjJkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJv
aWQudjhiaW5kaW5ncy5tawpAQCAtNDksNyArNDksOCBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAog
CWJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAgXAogCWJpbmRpbmdzL3Y4L1Njb3BlZERP
TURhdGFTdG9yZS5jcHAgXAogCWJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCi0JYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAorCWJpbmRpbmdzL3Y4L1NjcmlwdENh
bGxGcmFtZS5jcHAgXAorCWJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgXAogCWJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKIAliaW5kaW5ncy92OC9TY3JpcHRFdmVudExp
c3RlbmVyLmNwcCBcCiAJYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA4ZjVkNjIxOWQ3NjM1NWY0Yjg3NTQwOWFiYzk3MDEwNzQwMjUyYjc3Li40MmUzNDRhOGY4
MjY2NjAzMTViZTg5NGU1ZDVkMGUwMDAwMzIyOGY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTY4Niw3ICs2ODYsOCBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwCisg
ICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAogICAgIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTExMjIsMTAgKzExMjMs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNw
cAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5jcHAKLSAgICBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbEZyYW1lLmNwcAotICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiAg
ICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKIAogICAgIGxvYWRlci9DYWNo
ZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNjgwZjJiY2NlMWQ1ZjAwYWVlYzI0NjMwYThjY2ZlNGU1ODQ3ZmIyMC4uZWQwYjM5YjVk
ODMzNjRiNmNkMTFkMzliOWRmMWFjYjM4ZjAyYjA1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMTAtMTAt
MjIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MDI5OC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvNzAyOTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ4MTIyCisKKyAgICAgICAgIldlYktpdCB3aW4gY29tcGlsYXRpb24g
ZmFpbHVyZSIgKFJlcXVlc3RlZCBieSB5dXJ5cyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAg
ICAgICAqIEFuZHJvaWQuanNjYmluZGluZ3MubWs6CisgICAgICAgICogQW5kcm9pZC52OGJpbmRp
bmdzLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHA6IFJlbmFtZWQg
ZnJvbSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OmFyZ3VtZW50QXQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5oOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbEZyYW1lLmguCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OmZ1bmN0
aW9uTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OnNvdXJjZVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OmxpbmVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjphcmd1bWVudENvdW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxTdGFjazo6flNjcmlwdENhbGxTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
YWxsU3RhY2s6OmF0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaDogQ29waWVkIGZyb20gV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmguCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6Z2xvYmFsU3RhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9t
QXJnc0FuZEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmN1c3RvbUFy
Z3NBbmRFeGNlcHRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bEZyYW1lLmNwcDogUmVuYW1lZCBmcm9tIFdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFt
ZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6On5TY3JpcHRDYWxsRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjphcmd1bWVudEF0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaDogUmVuYW1lZCBmcm9tIFdlYkNvcmUv
aW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2Fs
bEZyYW1lOjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1l
Ojpzb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjpsaW5lTnVt
YmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6YXJndW1lbnRDb3VudCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDogUmVuYW1lZCBmcm9t
IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpnZXRGcmFtZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRvcEZy
YW1lTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dG9TY3JpcHRDYWxsRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9TY3JpcHRDYWxsRnJhbWVzVmVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
bGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxT
dGFjazo6flNjcmlwdENhbGxTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3Rh
Y2s6OmF0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmguCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6
OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6Z2xvYmFsU3RhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdo
dEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29u
c29sZU1lc3NhZ2U6OmhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25zb2xlTWVzc2Fn
ZTo6ZGlzcGF0Y2hOb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToKKyAgICAgICAgKiBkb20vTm9kZUZpbHRl
ci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpDYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6aXNFcXVhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmlzRXF1YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VU
b0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRH
cm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL0Nv
bnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6ZGVidWcpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6ZXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6aW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDb25z
b2xlOjpsb2cpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6ZGlyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnNvbGU6OmRpcnhtbCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjp0cmFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphc3NlcnRDb25kaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6
bWFya1RpbWVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlOjp0aW1lRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6Ondhcm4pOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6cHJvZmlsZXMpOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6
CisKIDIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDY0NjBlZTllYWNj
YTg4YzgyZGVmOGFhMjBjMzdmNzY2MGQxYjMxMjMuLjI2YjY5MmQzZWM3MzYzNjJhZmUyNTQ1OTY3
ODNhZWE3OGJiOGMzNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtODE2LDggKzgxNiwxMCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1l
LmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuaCBcCisJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgXApAQCAtMTg1MCwxNCArMTg1
Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmggXAotCVdlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgXAotCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCiAJ
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIFwKLQlXZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuaCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCi0JV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnTGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3Rl
bmVyLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAzM2ZmZGU4YWQzOTJiNGMxYWI1ZTZhM2RjZjRlYTQzMTFlNzlhNjcyLi40YTQxN2YzMDgz
MmE2YWU4YzhmOTM1YzZiNWIyODRkN2Q4ZDdjOGNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjk5LDYgKzY5OSwxMCBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbEZyYW1lLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
ay5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyR3RrLmNwcCcsCkBAIC04NjUsOCArODY5LDEwIEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92
OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJh
bWUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmNwcCcsCkBAIC0xOTQ4LDEyICsxOTU0LDYgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5oJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNw
cCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oJywKLSAgICAgICAg
ICAgICdpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5oJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGYwZDdmNGRjZDExNTE1ZGM4
ODczZDA3OTgzMTRmZDM0YjQ5NzdiYzkuLmI2YWM0YWVlOGZhNmIyOGIxZTA4M2I5NmExOTQ3ZTVj
YzVmY2NiZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtMzUxLDcgKzM1MSw4IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3Mvdjgv
U2NvcGVkRE9NRGF0YVN0b3JlLmNwcCBcCiAjICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRBcnJh
eS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwK
LSAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAorICAgICAg
ICBiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKKyAgICAgICAgYmluZGluZ3Mvdjgv
U2NyaXB0Q2FsbFN0YWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJC
YXNlLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtNTczLDcgKzU3
NCw4IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKLSAgICAg
ICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAorICAgICAgICBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtMTAxMCwxMCArMTAxMiw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCi0gICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5j
cHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCi0gICAgaW5zcGVjdG9y
L1NjcmlwdENhbGxGcmFtZS5jcHAgXAotICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3Bw
IFwKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBcCiAgICAgbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuY3BwIFwKQEAgLTEzODksNiArMTM4OCw4IEBAIHY4IHsKICAgICAgICAgYmluZGlu
Z3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogIyAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0
QXJyYXkuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwK
KyAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggXAorICAgICAgICBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2suaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuaCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKQEAgLTE0NzEsNiArMTQ3
Miw4IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwK
ICAgICAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL1Njcmlw
dENhbGxGcmFtZS5oIFwKKyAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmggXAog
ICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggXAogICAgICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBh
NGRmZmY2YmJkODQyOWJmYzhiZjdkMDExMjk2M2JjN2Y2NzAzMjhmLi4wZDljMjI0MTJmZDljOTkx
NWE5MDhjZWZhZGFmNzJjZjhlNWQzNjY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTYwMzk4LDcgKzYwMzk4LDcgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRD
YWxsRnJhbWUuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNjA0NTAsNyArNjA0NTAsNjMgQEAKIAkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiDQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxGcmFtZS5oIg0KKwkJCQkJPg0KKwkJ
CQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdENhbGxTdGFjay5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4z
MiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRv
b2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsU3RhY2suaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KQEAgLTYzMzQzLDE0ICs2MzM5OSw2IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1
bWVudHMuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxl
Pg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEJyZWFr
cG9pbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTYzMzU5LDIyICs2MzQwNyw2IEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxTY3JpcHRDYWxsRnJhbWUuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxG
aWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdENhbGxGcmFtZS5oIg0K
LQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXFNjcmlwdENhbGxTdGFjay5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZp
bGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0Q2FsbFN0YWNrLmgiDQot
CQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcU2NyaXB0RGVidWdMaXN0ZW5lci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjVmNzM1NDMzNTU1NWMw
NDkyZmZlMzRjNDQwMzJjZWFkMDEwMTIxZi4uMDk4ZjkxNmQ1YTNjMWNkNzYzZjViZWM3NTQxMThj
ZmI3YTI4ZjczYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU0NjAsMTAgKzU0NjAsNiBAQAogCQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5q
ZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM2NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsg
fTsKIAkJRjM2NDRCMDAxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5
MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLzsgfTsKIAkJRjM3NUNDMDcxMTUwRDMwMDAw
OEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5z
cGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLzsgfTsKLQkJRjM5MjI0OUMxMjZGMTFBRTAwQTkyNkQ5
IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwICovOyB9OwotCQlGMzkyMjQ5RDEyNkYxMUFFMDBBOTI2RDkgLyog
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjM5MjI0OUIxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaCAqLzsgfTsKLQkJRjM5QkU5NUIxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFy
Z3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGMzlCRTk1OTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLzsgfTsK
LQkJRjM5QkU5NUMxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM5QkU5NUExMjY3M0JGNDAw
RTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oICovOyB9OwogCQlGM0Q0NjE0ODExNjFENTMyMDBD
QTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAv
KiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovOyB9OwogCQlGM0Q0NjE0OTExNjFE
NTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMyMDBDQTBE
MDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggKi87IH07CiAJCUY0RUFGNEFFMTBD
NzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyog
T3BlblR5cGVTYW5pdGl6ZXIuY3BwICovOyB9OwpAQCAtMTE0OTIsMTAgKzExNDg4LDYgQEAKIAkJ
RjM2NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVk
U2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4
MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlGMzkyMjQ5QTEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjM5MjI0OUIxMjZG
MTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGMzlCRTk1OTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1l
bnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEFyZ3Vt
ZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYzOUJFOTVBMTI2NzNCRjQw
MEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYz
RDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNENDYxNDcxMTYx
RDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9w
ZW5UeXBlU2FuaXRpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IE9wZW5UeXBlU2FuaXRpemVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjY4LDE0ICsxMjI2MCw4IEBA
CiAJCQkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNl
LmggKi8sCiAJCQkJMUM4MUJBMDUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaWRsICovLAogCQkJCUJDQzY0RjVGMERDRkI4NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJp
bmdzLmpzICovLAotCQkJCUYzOUJFOTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVu
dHMuY3BwICovLAotCQkJCUYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVu
dHMuaCAqLywKIAkJCQkyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2lu
dC5jcHAgKi8sCiAJCQkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9p
bnQuaCAqLywKLQkJCQk0MTZFNzVDQTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1l
LmNwcCAqLywKLQkJCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1l
LmggKi8sCi0JCQkJNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5j
cHAgKi8sCi0JCQkJNDE2RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5o
ICovLAogCQkJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVy
LmggKi8sCiAJCQkJOUZBMzdFRUYxMTcyRkQ0MTAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGUuaWRs
ICovLAogCQkJCTlGQTM3RUYwMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5p
ZGwgKi8sCkBAIC0xNjc5Miw4ICsxNjc3OCwxMCBAQAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3
OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3
NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJCQk0MUYxRDIxRDBFRjM1QzJB
MDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8sCi0JCQkJRjM5MjI0OUExMjZG
MTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAotCQkJCUYzOTIy
NDlCMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCisJCQkJ
NDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCisJCQkJ
NDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovLAorCQkJCTQx
NkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovLAorCQkJCTQx
NkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCAqLywKIAkJCQk5M0I3
MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJOTNC
NzBENTQwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuaCAqLywKIAkJCQlBODNF
MUM3MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLywKQEAgLTIw
NTcwLDcgKzIwNTU4LDYgQEAKIAkJCQkxQ0VGQzlCOTBENzhEQzhDMDA3RDI1NzkgLyogU2NoZWR1
bGVQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyog
U2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMwMUJFMEMyNzREQUMwMDlG
NEVDOSAvKiBTY3JlZW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUYzOUJFOTVDMTI2NzNCRjQwMEUw
QTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFE
MzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTIxMTQ2LDcgKzIxMTMzLDYgQEAKIAkJCQkw
ODFDREZCOTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlU
cmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MUNERkJBMTI2RUNGREIwMEQyMTVDQSAvKiBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxQ0RG
QkYxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCUYzOTIyNDlEMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwNDEyNkVGMURCMDA5NzhG
N0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODhBMEUwNTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJv
cGVydHlEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzIwMiw3ICsyMzE4OCw2IEBA
CiAJCQkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUMwMUJEMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGMzlCRTk1QjEyNjczQkY0MDBF
MEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTIwMEIxOTA5
MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxRjFEMjIwMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RTc1Q0MwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIzNzExLDcgKzIzNjk2LDYgQEAKIAkJCQk5
NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBMUYyQjUyMTI2QzYxQjIwMDA2QTdFNiAvKiBJbnNwZWN0b3JDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRjM5MjI0OUMxMjZGMTFBRTAwQTkyNkQ5IC8qIFNj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggZTIwMTJjZTlkMjAxYTU1MGRiYjA4YTk3
N2U5ZjM1OTZiYTM5OTY5Ni4uY2YwOGNhOTI5YmRiNjQ4MGJhNzViZjQyNGU3ZDgxZjUzMTQ0YjM4
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTQx
LDcgKzE0MSw4IEBACiAjaW5jbHVkZSAiTWVtb3J5SW5mby5jcHAiCiAjaW5jbHVkZSAiU2NoZWR1
bGVkQWN0aW9uLmNwcCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIgotI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIgorI2luY2x1ZGUgIlNjcmlwdENhbGxG
cmFtZS5jcHAiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmNwcCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyV2luLmNwcCIKICNp
bmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29s
ZUN1c3RvbS5jcHAKaW5kZXggNmRmODhmNmVkNmY4OWMxZDRlNzc2NzcwNzVmZDQwZTJhMGQ4Zjhj
My4uZjA0MTljN2FkN2MyMDBiODJhZjFiYTI3MjAxNGYwYTk2Zjc4ZGE0NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcApAQCAtMjksMTEgKzI5LDggQEAKIAogI2luY2x1
ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKLSNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNTUs
MjggKzUyLDYgQEAgSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7CiB9CiAKLUpTVmFs
dWUgSlNDb25zb2xlOjpwcm9maWxlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIDEpKTsK
LSAgICBjb25zdCBTdHJpbmcmIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51
bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGltcGwoKS0+cHJv
ZmlsZSh0aXRsZSwgZXhlYywgY2FsbFN0YWNrLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNDb25zb2xlOjpwcm9maWxlRW5kKEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKGV4ZWMsIDEpKTsKLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlID0gdmFsdWVU
b1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7
Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLQotICAgIGltcGwoKS0+cHJvZmlsZUVuZCh0aXRsZSwgZXhlYywgY2FsbFN0YWNrLnJl
bGVhc2UoKSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggYjcxNjg0
OWZiNmZhN2IxZjE4OWE1ODhjYTM1NTE3Y2E1ODQzZTg3OS4uNmJlZjRmN2FiZWRhM2YxMTE0OTQz
ODBlMWZjNjIyYmIwNmYxZjM1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMzIs
OCArMzIsNyBAQAogI2lmbmRlZiBTY3JpcHRTdGF0ZV9oCiAjZGVmaW5lIFNjcmlwdFN0YXRlX2gK
IAotI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlIDxy
dW50aW1lL1Byb3RlY3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTMs
NyArNTIsNyBAQCBjbGFzcyBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0ciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIoKSB7IH0KICAgICBT
Y3JpcHRTdGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpIDogbV9nbG9i
YWxPYmplY3Qoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkgeyB9Ci0gICAgU2Ny
aXB0U3RhdGUqIGdldCgpIGNvbnN0CisgICAgU2NyaXB0U3RhdGUqIGdldCgpCiAgICAgewogICAg
ICAgICBpZiAobV9nbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbV9nbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDIzZGI5NTc4Zjg3ZjBkY2RiODBkODg1ZmFiN2ZlMzZhZDJjYmIwODkuLjBi
NTZmMTNkN2Q5YTFmNTAzN2JkMGU5ZmIyMWFiYzQ5MTQzYzE4YWUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTk2NiwxMiArMTk2Niw4IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIG15ICRoYXNPcHRp
b25hbEFyZ3VtZW50cyA9IDA7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRz
KGV4ZWMsICRudW1QYXJhbWV0ZXJzKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHNpemVfdCBtYXhTdGFja1NpemUgPSBpbXAtPnNob3VsZENh
cHR1cmVGdWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlIDogMTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlw
dENhbGxTdGFjayhleGVjLCBtYXhTdGFja1NpemUpKTtcbiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0QXJndW1lbnRzLmgifSA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTY3JpcHRDYWxsU3RhY2sgY2Fs
bFN0YWNrKGV4ZWMsICRudW1QYXJhbWV0ZXJzKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrLmgifSA9IDE7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBteSAkY2FsbFdp
dGggPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRo
In07CkBAIC0yMzYxLDggKzIzNTcsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgpCiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKICAgICAgICAgJGZ1bmN0aW9uU3Ry
aW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7Ci0gICAgICAgICRwYXJhbUluZGV4ICs9IDI7Ci0g
ICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAic2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2Fs
bFN0YWNrLnJlbGVhc2UoKSI7CisgICAgICAgICsrJHBhcmFtSW5kZXg7CisgICAgICAgICRmdW5j
dGlvblN0cmluZyAuPSAiJmNhbGxTdGFjayI7CiAgICAgfQogCiAgICAgaWYgKEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KaW5kZXggMGM3OWU2NDEyZmQwMDU5NzA5NmMwNjljMDQ0ZWZkZTRhM2QwYjk2
ZS4uNzUxZTM1MDQxMzE4NTg3NTE0NTMxZjExOTE3MTI5ZmM3MDdjNWJhNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xMzA0LDE1ICsxMzA0LDEx
IEBAIEVORAogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKLSAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1
bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsICRudW1QYXJhbWV0ZXJzKSk7Ci0gICAg
c2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkg
PyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxOwotICAgIE93
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2sobWF4
U3RhY2tTaXplKSk7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKFNjcmlw
dENhbGxTdGFjazo6Y3JlYXRlKGFyZ3MsICRudW1QYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFjYWxs
U3RhY2spCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiBFTkQKLSAgICAgICAgJGlt
cGxJbmNsdWRlc3siU2NyaXB0QXJndW1lbnRzLmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7CiAgICAgfQogICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNWR0NoZWNrU2VjdXJpdHlEb2N1bWVudCJ9
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKQEAgLTI3MjMsOCAr
MjcxOSw4IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAKICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhh
bmRsaW5nIn0pIHsKICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4Owot
ICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gInNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNh
bGxTdGFjay5yZWxlYXNlKCkiOwotICAgICAgICAkaW5kZXggKz0gMjsKKyAgICAgICAgJGZ1bmN0
aW9uU3RyaW5nIC49ICJjYWxsU3RhY2suZ2V0KCkiOworICAgICAgICAkaW5kZXgrKzsKICAgICB9
CiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJO
ZWVkc1VzZXJHZXN0dXJlQ2hlY2sifSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggN2UwNjA2OGQwZDg2N2QwMDg0MzVjMjFjYTRlNjBj
M2E4MjAxYTdkYy4uNTIzNjI2NzI3Mjk1NzRjYTExZmE4NzRkNjJlZjI3MjY5OWMwYjNlMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0z
MSw5ICszMSw3IEBACiAjaW5jbHVkZSAiSlNUZXN0T2JqLmgiCiAjaW5jbHVkZSAiSlNsb2cuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRlc3RPYmou
aCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC05OTYsMTQgKzk5NCwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9t
QXJnc0FuZEV4Y2VwdGlvbihFeAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19j
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIFRlc3RPYmoqIGltcCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50
cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOwotICAgIHNpemVfdCBtYXhTdGFja1Np
emUgPSBpbXAtPnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNr
OjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlIDogMTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNrU2l6ZSkp
OworICAgIFNjcmlwdENhbGxTdGFjayBjYWxsU3RhY2soZXhlYywgMSk7CiAgICAgbG9nKiBpbnRB
cmcgPSB0b2xvZyhleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0g
ICAgaW1wLT5jdXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFyZywgc2NyaXB0QXJndW1lbnRzLnJl
bGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSwgZWMpOworICAgIGltcC0+Y3VzdG9tQXJnc0Fu
ZEV4Y2VwdGlvbihpbnRBcmcsICZjYWxsU3RhY2ssIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRl
eCAzNDQxYjczODI3ZDdhMDkzZTg2ZTY3OGQ3YTBmMDRkNzZhMDNiM2M2Li40NGYwZDNlMmFhNGQw
N2I2ZjczY2FjYzdhMWM2YmEyOTlkYjY1YzU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTI2LDkgKzI2LDcgQEAKICNpbmNsdWRlICJJ
REJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgotI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKQEAgLTcwNywxMyArNzA1LDEx
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICB7Ci0gICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNj
cmlwdEFyZ3VtZW50cyhhcmdzLCAxKSk7Ci0gICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+
c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUgOiAxOwotICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2sobWF4U3RhY2tTaXplKSk7CisgICAgT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGFyZ3MsIDEp
KTsKICAgICBpZiAoIWNhbGxTdGFjaykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
ICAgICBFWENFUFRJT05fQkxPQ0sobG9nKiwgaW50QXJnLCBWOGxvZzo6SGFzSW5zdGFuY2UoYXJn
c1swXSkgPyBWOGxvZzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdz
WzBdKSkgOiAwKTsKLSAgICBpbXAtPmN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oaW50QXJnLCBzY3Jp
cHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgaW1w
LT5jdXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFyZywgY2FsbFN0YWNrLmdldCgpLCBlYyk7CiAg
ICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwogICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxM2FmN2IzYjA0NTIy
OTFiNWJhZTc0ZTc4MGVlMzM3ZThmYWVlMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChj
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5X2gKLSNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCi0KLSNpbmNs
dWRlIDx2OC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgU2NyaXB0U3RhdGU7Ci0KLWNvbnN0IHY4OjpTdGFja1RyYWNlOjpTdGFj
a1RyYWNlT3B0aW9ucyBzdGFja1RyYWNlT3B0aW9ucyA9IHN0YXRpY19jYXN0PHY4OjpTdGFja1Ry
YWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCi0gICAgICB2ODo6U3RhY2tUcmFjZTo6a0xpbmVOdW1i
ZXIKLSAgICB8IHY4OjpTdGFja1RyYWNlOjprQ29sdW1uT2Zmc2V0Ci0gICAgfCB2ODo6U3RhY2tU
cmFjZTo6a1NjcmlwdE5hbWVPclNvdXJjZVVSTAotICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtGdW5j
dGlvbk5hbWUpOwotCi1jbGFzcyBTY3JpcHRBcmd1bWVudHM7Ci1jbGFzcyBTY3JpcHRDYWxsU3Rh
Y2s7Ci0KLVBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2so
djg6OkxvY2FsPHY4OjpDb250ZXh0Piwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4sIHNpemVf
dCBtYXhTdGFja1NpemUpOwotUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlw
dENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplKTsKLVBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6OkFyZ3VtZW50cyYgdjhhcmd1bWVu
dHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBmYTM3YzM4YjdjOGRjYWM1NjE4MzJjYTFlNzY1
MDRiOTIwNDc3MzY4Li40OTA0YTRlNjVmZGU5Y2IzYmY0M2JiYTU0YTViMThkMmFmNzgyZDEwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM1LDcgKzM1LDYg
QEAKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC00NjksNyArNDY4LDcgQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wpCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVu
Y2F1Z2h0RXhjZXB0aW9ucyhib29sIHZhbHVlKQogewotICAgIHY4OjpWODo6U2V0Q2FwdHVyZVN0
YWNrVHJhY2VGb3JVbmNhdWdodEV4Y2VwdGlvbnModmFsdWUsIFNjcmlwdENhbGxTdGFjazo6bWF4
Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgc3RhY2tUcmFjZU9wdGlvbnMpOworICAgIHY4OjpWODo6
U2V0Q2FwdHVyZVN0YWNrVHJhY2VGb3JVbmNhdWdodEV4Y2VwdGlvbnModmFsdWUsIFNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgU2NyaXB0Q2FsbFN0YWNrOjpzdGFj
a1RyYWNlT3B0aW9ucyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRTdGF0ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCmlu
ZGV4IDExODEzYjA5ZWQzYTZiMDRlYzg0NDkwOWUwOWYxNzlkOTI3ODYwZmEuLmNlMzUwZGE0MmQ2
NDU0ZTM0ZmQxZGNmZjBlZDA4ODA0NzQwYmEzYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0U3RhdGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRl
LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jb250ZXh0LkNsZWFy
KCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgU2NyaXB0U3RhdGUqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0U3RhdGU7IH0KKyAgICBTY3JpcHRTdGF0ZSogZ2V0KCkgeyByZXR1cm4gbV9z
Y3JpcHRTdGF0ZTsgfQogcHJpdmF0ZToKICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNDBmOWE3YWI1NmIwNzNkYjE0NWJhODY4
YmZlMzliNWI1N2FkMmFkZS4uOGI2YmIxNzg2YTg1Yzc5YmNmMDJmZGRlODU0MTY1MTdkMWQxYTg3
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zNyw3ICsz
Nyw2IEBACiAjaW5jbHVkZSAiT3duUHRyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTExOCwx
NyArMTE3LDE4IEBAIHZvaWQgVjhDb25zb2xlTWVzc2FnZTo6aGFuZGxlcih2ODo6SGFuZGxlPHY4
OjpNZXNzYWdlPiBtZXNzYWdlLCB2ODo6SGFuZGxlPHY4OjpWCiAgICAgLy8gQ3VycmVudGx5IHN0
YWNrIHRyYWNlIGlzIG9ubHkgY29sbGVjdGVkIHdoZW4gaW5zcGVjdG9yIGlzIG9wZW4uCiAgICAg
aWYgKCFzdGFja1RyYWNlLklzRW1wdHkoKSAmJiBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCkg
PiAwKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250
ZXh0OjpHZXRFbnRlcmVkKCk7Ci0gICAgICAgIGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxT
dGFjayhjb250ZXh0LCBzdGFja1RyYWNlLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1Np
emVUb0NhcHR1cmUpOworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRT
dGF0ZTo6Zm9yQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAgY2FsbFN0YWNrID0gU2NyaXB0Q2Fs
bFN0YWNrOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHN0YWNrVHJhY2UpOwogICAgIH0KIAogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZXNvdXJjZU5hbWUgPSBtZXNzYWdlLT5HZXRTY3JpcHRSZXNv
dXJjZU5hbWUoKTsKICAgICBib29sIHVzZVVSTCA9IHJlc291cmNlTmFtZS5Jc0VtcHR5KCkgfHwg
IXJlc291cmNlTmFtZS0+SXNTdHJpbmcoKTsKICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lU3RyaW5n
ID0gdXNlVVJMID8gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogdG9XZWJDb3JlU3RyaW5nKHJl
c291cmNlTmFtZSk7CiAgICAgVjhDb25zb2xlTWVzc2FnZSBjb25zb2xlTWVzc2FnZShlcnJvck1l
c3NhZ2UsIHJlc291cmNlTmFtZVN0cmluZywgbWVzc2FnZS0+R2V0TGluZU51bWJlcigpKTsKLSAg
ICBjb25zb2xlTWVzc2FnZS5kaXNwYXRjaE5vdyhwYWdlLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsK
KyAgICBjb25zb2xlTWVzc2FnZS5kaXNwYXRjaE5vdyhwYWdlLCBjYWxsU3RhY2suZ2V0KCkpOwog
fQogCi12b2lkIFY4Q29uc29sZU1lc3NhZ2U6OmRpc3BhdGNoTm93KFBhZ2UqIHBhZ2UsIFBhc3NP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIFY4Q29uc29sZU1lc3NhZ2U6
OmRpc3BhdGNoTm93KFBhZ2UqIHBhZ2UsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewog
ICAgIEFTU0VSVChwYWdlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENv
bnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaApp
bmRleCA2Yjg5MmRkMjZiMzM0NDU4NjY0NzliMTZiM2U5YWYyZmFjMWFiYjE3Li4zODdiNWVlMzRi
NTY4ZTY4M2Y0Y2U3ZWVhZWYxNGMyNmIxNTY3ZTUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29u
c29sZU1lc3NhZ2UuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlIDx2OC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Miw3ICs4MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nIG1fc291cmNlSUQ7
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1fbGluZU51bWJlcjsKIAotICAgICAgICB2b2lkIGRp
c3BhdGNoTm93KFBhZ2UqLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgICAgICB2
b2lkIGRpc3BhdGNoTm93KFBhZ2UqLCBTY3JpcHRDYWxsU3RhY2sqKTsKIAogICAgICAgICAvLyBB
bGwgZGVsYXllZCBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHRoaXMgdmVjdG9yLiBJZiB0aGUgdmVj
dG9yCiAgICAgICAgIC8vIGlzIDAsIHRoZXJlIGFyZSBubyBkZWxheWVkIG1lc3NhZ2VzLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKb2xkIG1vZGUg
MTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBiMTdiOGU5ZDRkMGRjOGY2YzYyODE3YjA5Zjc1
NzBhMGY0NTlmNzcxLi5mYzgzYjYxZDVmNDJmMTdjZjgzMGUyZTAyNGEyYTZjNjBiMjI2YjA0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtMzMsMTIg
KzMzLDkgQEAKICNpbmNsdWRlICJWOENvbnNvbGUuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIK
LSNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QmluZGluZ01h
Y3Jvcy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFNjcmlwdFByb2ZpbGUu
aCIKIApAQCAtNjUsOSArNjIsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6
dHJhY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFU
UygiRE9NLkNvbnNvbGUudHJhY2VDYWxsYmFjayIpOwogICAgIENvbnNvbGUqIGltcCA9IFY4Q29u
c29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENh
bGxTdGFja1NpemVUb0NhcHR1cmUpKTsKLSAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3Jp
cHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDApKTsKLSAgICBpbXAtPnRy
YWNlKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCkpOworICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIHY4OjpMb2NhbDx2ODo6U3RhY2tUcmFj
ZT4gc3RhY2tUcmFjZSA9IHY4OjpTdGFja1RyYWNlOjpDdXJyZW50U3RhY2tUcmFjZShTY3JpcHRD
YWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIFNjcmlwdENhbGxTdGFjazo6c3Rh
Y2tUcmFjZU9wdGlvbnMpOworICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhT
Y3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSkpOworICAgIGlt
cC0+dHJhY2UoY2FsbFN0YWNrLmdldCgpKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CiB9CiAKQEAgLTc1LDM0ICs3NCw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENv
bnNvbGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uQ29uc29sZS5hc3NlcnRDYWxsYmFjayIpOwogICAgIENvbnNvbGUqIGlt
cCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3Rh
Y2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoYXJncywgMSwgU2NyaXB0Q2Fs
bFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CiAgICAgYm9vbCBjb25kaXRpb24g
PSBhcmdzWzBdLT5Cb29sZWFuVmFsdWUoKTsKLSAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBz
Y3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsKLSAgICBpbXAt
PmFzc2VydENvbmRpdGlvbihjb25kaXRpb24sIHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNh
bGxTdGFjay5yZWxlYXNlKCkpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
LX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS5w
cm9maWxlIik7Ci0gICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKDEpKTsKLSAgICBpZiAoIWNhbGxTdGFjaykKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsK
LSAgICBpbXAtPnByb2ZpbGUodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFj
ay5yZWxlYXNlKCkpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKLX0KLQot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUVuZENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS5wcm9m
aWxlRW5kIik7Ci0gICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKDEpKTsKLSAgICBpZiAoIWNhbGxTdGFjaykKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsK
LSAgICBpbXAtPnByb2ZpbGVFbmQodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxT
dGFjay5yZWxlYXNlKCkpOworICAgIGltcC0+YXNzZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbiwgY2Fs
bFN0YWNrLmdldCgpKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaCBiL1dlYkNvcmUvZG9tL05vZGVG
aWx0ZXIuaAppbmRleCA1Y2UyODY2ZDllNDI4MDc2ZTQwMTI2ZGEzNDA0ZjFiOTA1MmM1NWQwLi5k
MjAyMmJjMDg4MzY0MWEwY2RiZDFjYzJkYzNiODVlNjc0MmEzYWFlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Ob2RlRmlsdGVyLmgKKysrIGIvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5oCkBAIC0y
NSw3ICsyNSw2IEBACiAjaWZuZGVmIE5vZGVGaWx0ZXJfaAogI2RlZmluZSBOb2RlRmlsdGVyX2gK
IAotI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25k
aXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcAppbmRleCAwMzI4M2JmNGVkMGY4NWFlMTgwN2Q0ZmE5MTJmYmZiNGNkY2Y4OWFk
Li42NzkzMGNkNmVlYzkwMjZjYmQ1MjgyODlkZjRjODdkOWMxZDQ3NjYxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zMywxNSArMzMsNDYgQEAKIAogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNp
bmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1l
OjpDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSkKKyAgICA6IG1fZnVuY3Rp
b25OYW1lKGZyYW1lLmZ1bmN0aW9uTmFtZSgpKQorICAgICwgbV9zb3VyY2VVUkwoZnJhbWUuc291
cmNlVVJMKCkpCisgICAgLCBtX2xpbmVOdW1iZXIoZnJhbWUubGluZU51bWJlcigpKQoreworfQor
CitDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpDYWxsRnJhbWUoKQorICAgIDogbV9saW5lTnVt
YmVyKDApCit7Cit9CisKK2Jvb2wgQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6aXNFcXVhbChj
b25zdCBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lJiBvKSBjb25zdAoreworICAgIHJldHVybiBt
X2Z1bmN0aW9uTmFtZSA9PSBvLm1fZnVuY3Rpb25OYW1lCisgICAgICAgICYmIG1fc291cmNlVVJM
ID09IG8ubV9zb3VyY2VVUkwKKyAgICAgICAgJiYgbV9saW5lTnVtYmVyID09IG8ubV9saW5lTnVt
YmVyOworfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNv
bnN0Cit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZnJhbWUgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOworICAgIGZyYW1lLT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIG1fZnVu
Y3Rpb25OYW1lKTsKKyAgICBmcmFtZS0+c2V0U3RyaW5nKCJzb3VyY2VVUkwiLCBtX3NvdXJjZVVS
TCk7CisgICAgZnJhbWUtPnNldE51bWJlcigibGluZU51bWJlciIsIG1fbGluZU51bWJlcik7Cisg
ICAgcmV0dXJuIGZyYW1lOworfQorI2VuZGlmCisKIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25z
dCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpCiAg
ICAgOiBtX3NvdXJjZShzKQogICAgICwgbV90eXBlKHQpCkBAIC01NCwyNiArODUsMzUgQEAgQ29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUg
dCwgTWVzc2FnZUxldmVsIGwsIGMKIHsKIH0KIAotQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0
IFN0cmluZyYgbSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWduZWQgZykKK0NvbnNvbGVNZXNz
YWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3Nh
Z2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0sIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCB1
bnNpZ25lZCBnLCBib29sIHN0b3JlVHJhY2UpCiAgICAgOiBtX3NvdXJjZShzKQogICAgICwgbV90
eXBlKHQpCiAgICAgLCBtX2xldmVsKGwpCiAgICAgLCBtX21lc3NhZ2UobSkKLSAgICAsIG1fYXJn
dW1lbnRzKGFyZ3VtZW50cykKLSAgICAsIG1fY2FsbFN0YWNrKGNhbGxTdGFjaykKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgICwgbV9hcmd1bWVudHMoY2FsbFN0YWNrLT5hdCgwKS5hcmd1bWVu
dENvdW50KCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKGNhbGxTdGFjay0+Z2xvYmFsU3RhdGUoKSkK
KyNlbmRpZgorICAgICwgbV9mcmFtZXMoc3RvcmVUcmFjZSA/IGNhbGxTdGFjay0+c2l6ZSgpIDog
MCkKICAgICAsIG1fZ3JvdXBMZXZlbChnKQogICAgICwgbV9yZXBlYXRDb3VudCgxKQogewotICAg
IGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IG1fY2FsbFN0YWNrLT5hdCgwKTsK
KyAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDAp
OwogICAgIG1fbGluZSA9IGxhc3RDYWxsZXIubGluZU51bWJlcigpOwogICAgIG1fdXJsID0gbGFz
dENhbGxlci5zb3VyY2VVUkwoKTsKIAorICAgIGlmIChzdG9yZVRyYWNlKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsU3RhY2stPnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgbV9mcmFtZXNbaV0gPSBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lKGNhbGxTdGFjay0+YXQo
aSkpOworICAgIH0KIAotICAgIGJvb2wgc3RvcmVUcmFjZSA9ICh0ID09IFRyYWNlTWVzc2FnZVR5
cGUgfHwgdCA9PSBVbmNhdWdodEV4Y2VwdGlvbk1lc3NhZ2VUeXBlIHx8IHQgPT0gQXNzZXJ0TWVz
c2FnZVR5cGUpOwotICAgIGlmICghc3RvcmVUcmFjZSkKLSAgICAgICAgbV9jYWxsU3RhY2suY2xl
YXIoKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsYXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBtX2FyZ3VtZW50c1tp
XSA9IGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKTsKKyNlbmRpZgogfQogCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkK
IHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uT2JqID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKQEAgLTg1LDEyICsxMjUsMTIgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRk
VG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG8K
ICAgICBqc29uT2JqLT5zZXROdW1iZXIoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
Z3JvdXBMZXZlbCkpOwogICAgIGpzb25PYmotPnNldE51bWJlcigicmVwZWF0Q291bnQiLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKICAgICBqc29uT2JqLT5zZXRTdHJpbmcoIm1l
c3NhZ2UiLCBtX21lc3NhZ2UpOwotICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xv
YmFsU3RhdGUoKSk7CisgICAgaWYgKCFtX2FyZ3VtZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVj
dGVkU2NyaXB0Rm9yKG1fc2NyaXB0U3RhdGUuZ2V0KCkpOwogICAgICAgICBpZiAoIWluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5
PiBqc29uQXJncyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlID0g
aW5qZWN0ZWRTY3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0
b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBGb3JDb25zb2xlKG1fYXJndW1lbnRzW2ldKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMDAsOCArMTQwLDEyIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvCiAgICAgICAgICAgICBq
c29uT2JqLT5zZXRBcnJheSgicGFyYW1ldGVycyIsIGpzb25BcmdzKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAobV9jYWxsU3RhY2spCi0gICAgICAgIGpzb25PYmotPnNldEFycmF5KCJzdGFj
a1RyYWNlIiwgbV9jYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOworICAgIGlmICgh
bV9mcmFtZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZnJh
bWVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBmcmFtZXMtPnB1c2hP
YmplY3QobV9mcmFtZXMuYXQoaSkuYnVpbGRJbnNwZWN0b3JPYmplY3QoKSk7CisgICAgICAgIGpz
b25PYmotPnNldEFycmF5KCJzdGFja1RyYWNlIiwgZnJhbWVzKTsKKyAgICB9CiAgICAgZnJvbnRl
bmQtPmFkZENvbnNvbGVNZXNzYWdlKGpzb25PYmopOwogfQogCkBAIC0xMDksMjEgKzE1MywzMyBA
QCB2b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgZnJvbnRlbmQtPnVwZGF0ZUNvbnNvbGVNZXNz
YWdlUmVwZWF0Q291bnQobV9yZXBlYXRDb3VudCk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKIAogYm9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNn
KSBjb25zdAogewotICAgIGlmIChtX2FyZ3VtZW50cykgewotICAgICAgICBpZiAoIW1fYXJndW1l
bnRzLT5pc0VxdWFsKG1zZy0+bV9hcmd1bWVudHMuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0gZWxzZSBpZiAobXNnLT5tX2FyZ3VtZW50cykKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChtc2ctPm1fYXJndW1lbnRzLnNpemUoKSAhPSBtX2FyZ3VtZW50cy5z
aXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1zZy0+bV9zY3JpcHRTdGF0
ZS5nZXQoKSAmJiBtc2ctPm1fYXJndW1lbnRzLnNpemUoKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIGlmIChtX2Nh
bGxTdGFjaykgewotICAgICAgICBpZiAoIW1fY2FsbFN0YWNrLT5pc0VxdWFsKG1zZy0+bV9jYWxs
U3RhY2suZ2V0KCkpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2FyZ3VtZW50c1tpXS5pc0VxdWFsKG1zZy0+bV9z
Y3JpcHRTdGF0ZS5nZXQoKSwgbXNnLT5tX2FyZ3VtZW50c1tpXSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChtc2ctPm1fY2FsbFN0YWNrKQorICAgIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisgICAgc2l6ZV90IGZyYW1lQ291bnQgPSBtc2ctPm1f
ZnJhbWVzLnNpemUoKTsKKyAgICBpZiAoZnJhbWVDb3VudCAhPSBtX2ZyYW1lcy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVD
b3VudDsgKytpKSB7CisgICAgICAgIGlmICghbV9mcmFtZXNbaV0uaXNFcXVhbChtc2ctPm1fZnJh
bWVzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4g
bXNnLT5tX3NvdXJjZSA9PSBtX3NvdXJjZQogICAgICAgICAmJiBtc2ctPm1fdHlwZSA9PSBtX3R5
cGUKICAgICAgICAgJiYgbXNnLT5tX2xldmVsID09IG1fbGV2ZWwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5oCmluZGV4IDRlODhiZWNlNjU2NGEyZjA2YjRmOTQ4OTFlMGQwNDMwYjhjOTAyNTUu
LjZjM2YyYzcyNjg0MjBkY2RmZjFjMmMxYTY5MTA0MjI2NTU2ZTgwOTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTYgKzMyLDE1IEBACiAjZGVmaW5lIENvbnNvbGVN
ZXNzYWdlX2gKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdEhvc3Q7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9iamVj
dDsKLWNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNz
IFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdFZhbHVlOwpAQCAtNDksMTAgKzQ4LDEyIEBA
IGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgQ29uc29sZU1lc3NhZ2UgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgogICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0
IFN0cmluZyYgdSwgdW5zaWduZWQgZyk7Ci0gICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQg
Zyk7CisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBTY3JpcHRDYWxsU3RhY2sqLCB1bnNpZ25lZCBnLCBi
b29sIHN0b3JlVHJhY2UgPSBmYWxzZSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHZv
aWQgYWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCosIEluamVjdGVkU2NyaXB0SG9zdCop
OwogICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKTsKKyNlbmRpZgogICAgIHZvaWQgaW5jcmVtZW50Q291bnQoKSB7ICsrbV9yZXBl
YXRDb3VudDsgfQogICAgIGJvb2wgaXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdDsK
IApAQCAtNjAsMTIgKzYxLDMwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KIAogcHJpdmF0ZToKKyAgICBjbGFzcyBDYWxs
RnJhbWUgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbEZyYW1lKGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgZnJhbWUpOworICAgICAgICBDYWxsRnJhbWUoKTsKKyAgICAgICAgYm9v
bCBpc0VxdWFsKGNvbnN0IENhbGxGcmFtZSYgbykgY29uc3Q7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3Q7CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIFN0cmluZyBtX2Z1
bmN0aW9uTmFtZTsKKyAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMOworICAgICAgICB1bnNpZ25l
ZCBtX2xpbmVOdW1iZXI7CisgICAgfTsKKwogICAgIE1lc3NhZ2VTb3VyY2UgbV9zb3VyY2U7CiAg
ICAgTWVzc2FnZVR5cGUgbV90eXBlOwogICAgIE1lc3NhZ2VMZXZlbCBtX2xldmVsOwogICAgIFN0
cmluZyBtX21lc3NhZ2U7Ci0gICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gbV9hcmd1bWVudHM7
Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9jYWxsU3RhY2s7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworICAgIFNjcmlw
dFN0YXRlUHJvdGVjdGVkUHRyIG1fc2NyaXB0U3RhdGU7CisjZW5kaWYKKyAgICBWZWN0b3I8Q2Fs
bEZyYW1lPiBtX2ZyYW1lczsKICAgICB1bnNpZ25lZCBtX2xpbmU7CiAgICAgU3RyaW5nIG1fdXJs
OwogICAgIHVuc2lnbmVkIG1fZ3JvdXBMZXZlbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggYTA5MzRjZDFmOGY2MDQ1ZDlmMWI2ZTY5NzMyZTk3N2E0YWNj
ODY3ZC4uMDBhMTE2NjAwZGEyMjU0MDI3ODcxZmRjOGQzMzkzOTMwYWQ5OTc2MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTgyLDcgKzgyLDYgQEAKICNp
bmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25D
YWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0zNDAsMTIgKzMzOSwxMyBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zy
b250ZW5kLmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsKKyAg
ICBib29sIHN0b3JlU3RhY2tUcmFjZSA9IHR5cGUgPT0gVHJhY2VNZXNzYWdlVHlwZSB8fCB0eXBl
ID09IFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBBc3NlcnRNZXNzYWdl
VHlwZTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0
eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwsIHN0b3JlU3RhY2tU
cmFjZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEKQpAQCAtMzkxLDExICszOTEsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAgICAgICAgIG1fZnJvbnRlbmQtPmNvbnNv
bGVNZXNzYWdlc0NsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFy
dEdyb3VwKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIGJvb2wgY29sbGFwc2VkKQordm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaywgYm9vbCBjb2xsYXBzZWQpCiB7CiAgICAgKyttX2dyb3VwTGV2ZWw7
CiAKLSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBTdGFydEdy
b3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIiIsIGFyZ3VtZW50cywgY2FsbFN0YWNr
LCBtX2dyb3VwTGV2ZWwpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3Nh
Z2Uoc291cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBT
dGFydEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGNhbGxTdGFj
aywgbV9ncm91cExldmVsKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5kR3Jv
dXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4
IDY4YWExNDdiNDUxNGYxMWE0MjRjNWVhMTg5MmRjOGQ0N2YyZGRkZDIuLjZkNGQ5ZTAyNzA5MWZh
MjhhMWFiOTk1ZDU5Nzk1YzA3M2JhNGMyNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTgxLDcgKzgxLDYgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwot
Y2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3MgU2Ny
aXB0UHJvZmlsZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTE0Niw4ICsxNDUsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAgIHZvaWQgc2V0Q29uc29s
ZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKTsKLSAgICB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwotICAgIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2Fn
ZXMoKTsKICAgICBjb25zdCBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+JiBjb25zb2xl
TWVzc2FnZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnNvbGVNZXNzYWdlczsgfQogCkBAIC0yMzMs
NyArMjMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRUaW1pbmcoY29uc3QgU3RyaW5nJiB0
aXRsZSk7CiAgICAgYm9vbCBzdG9wVGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSYg
ZWxhcHNlZCk7CiAKLSAgICB2b2lkIHN0YXJ0R3JvdXAoUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbEZyYW1lLCBib29sIGNvbGxhcHNl
ZCA9IGZhbHNlKTsKKyAgICB2b2lkIHN0YXJ0R3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIFNj
cmlwdENhbGxTdGFjayogY2FsbEZyYW1lLCBib29sIGNvbGxhcHNlZCA9IGZhbHNlKTsKICAgICB2
b2lkIGVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKICAgICB2b2lkIG1hcmtUaW1lbGluZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJn
dW1lbnRzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMGUxMzU3NzcxODY5MDY4N2ZiMGRhMmI5NjUyMDUw
MGY1NjlhNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1l
bnRzLmgiCi0KLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNjcmlwdEFyZ3VtZW50czo6U2NyaXB0QXJndW1lbnRzKFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQotICAgIDogbV9zY3JpcHRTdGF0
ZShzY3JpcHRTdGF0ZSkKLXsKLSAgICBtX2FyZ3VtZW50cy5zd2FwKGFyZ3VtZW50cyk7Ci19Ci0K
LVNjcmlwdEFyZ3VtZW50czo6flNjcmlwdEFyZ3VtZW50cygpCi17Ci19Ci0KLWNvbnN0IFNjcmlw
dFZhbHVlICZTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50QXQoc2l6ZV90IGluZGV4KSBjb25zdAot
ewotICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBpbmRleCk7Ci0gICAgcmV0dXJuIG1f
YXJndW1lbnRzW2luZGV4XTsKLX0KLQotU2NyaXB0U3RhdGUqIFNjcmlwdEFyZ3VtZW50czo6Z2xv
YmFsU3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NjcmlwdFN0YXRlLmdldCgpOwotfQot
Ci1ib29sIFNjcmlwdEFyZ3VtZW50czo6Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKFN0cmluZyYg
cmVzdWx0LCBib29sIGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkKQotewotICAgIGlmICghYXJndW1l
bnRDb3VudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBTY3JpcHRWYWx1
ZSYgdmFsdWUgPSBhcmd1bWVudEF0KDApOwotICAgIGlmIChjaGVja0Zvck51bGxPclVuZGVmaW5l
ZCAmJiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmICghZ2xvYmFsU3RhdGUoKSkgewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJlc3Vs
dCA9IHZhbHVlLnRvU3RyaW5nKGdsb2JhbFN0YXRlKCkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIFNjcmlwdEFyZ3VtZW50czo6aXNFcXVhbChTY3JpcHRBcmd1bWVudHMqIG90aGVyKSBj
b25zdAotewotICAgIGlmICghb3RoZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
IChtX2FyZ3VtZW50cy5zaXplKCkgIT0gb3RoZXItPm1fYXJndW1lbnRzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZ2xvYmFsU3RhdGUoKSAmJiBtX2FyZ3VtZW50cy5z
aXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFtX2FyZ3VtZW50c1tp
XS5pc0VxdWFsKG90aGVyLT5nbG9iYWxTdGF0ZSgpLCBvdGhlci0+bV9hcmd1bWVudHNbaV0pKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMDEwYmIzNDM0YzcxNzQwNTYwMTk4ZGE3
MTQxMjFmZDg5MGIyYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNj
cmlwdENhbGxGcmFtZT4mIGZyYW1lcykKLXsKLSAgICBtX2ZyYW1lcy5zd2FwKGZyYW1lcyk7Ci19
Ci0KLVNjcmlwdENhbGxTdGFjazo6flNjcmlwdENhbGxTdGFjaygpCi17Ci19Ci0KLWNvbnN0IFNj
cmlwdENhbGxGcmFtZSAmU2NyaXB0Q2FsbFN0YWNrOjphdChzaXplX3QgaW5kZXgpCi17Ci0gICAg
QVNTRVJUKG1fZnJhbWVzLnNpemUoKSA+IGluZGV4KTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5k
ZXhdOwotfQotCi1zaXplX3QgU2NyaXB0Q2FsbFN0YWNrOjpzaXplKCkKLXsKLSAgICByZXR1cm4g
bV9mcmFtZXMuc2l6ZSgpOwotfQotCi1ib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3Jp
cHRDYWxsU3RhY2sqIG8pIGNvbnN0Ci17Ci0gICAgaWYgKCFvKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBzaXplX3QgZnJhbWVDb3VudCA9IG8tPm1fZnJhbWVzLnNpemUoKTsKLSAgICBp
ZiAoZnJhbWVDb3VudCAhPSBtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAg
IGlmICghbV9mcmFtZXNbaV0uaXNFcXVhbChvLT5tX2ZyYW1lc1tpXSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBj
b25zdAotewotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZnJhbWVzID0gSW5zcGVjdG9yQXJy
YXk6OmNyZWF0ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgp
OyBpKyspCi0gICAgICAgIGZyYW1lcy0+cHVzaE9iamVjdChtX2ZyYW1lcy5hdChpKS5idWlsZElu
c3BlY3Rvck9iamVjdCgpKTsKLSAgICByZXR1cm4gZnJhbWVzOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggNmZiZjI1MzUyMzhhNmJlNTAwNWU1OTQ1YjIzMTQ4Njc4
MmRlNTk1MC4uMmQ0Y2M5ODhhNWQ4Njk2MTU2NTYzOGNiN2Y4NzFkMjAwZTNlZjEyOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAKLSNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKQEAgLTc4LDYgKzc3LDE5IEBAIHN0YXRpYyB2b2lkIHBy
aW50U291cmNlVVJMQW5kTGluZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGlu
ZU51bWJlcikKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIGdldEZpcnN0QXJndW1lbnRBc1N0cmlu
ZyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZy
YW1lLCBTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCA9IGZhbHNl
KQoreworICAgIGlmICghY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gY2FsbEZyYW1lLmFyZ3Vt
ZW50QXQoMCk7CisgICAgaWYgKGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkICYmICh2YWx1ZS5pc051
bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmVzdWx0ID0gdmFsdWUudG9TdHJpbmcoc2NyaXB0U3RhdGUpOworICAgIHJldHVybiB0cnVl
OworfQorCiBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIGNvbnN0IGNoYXIq
IHNvdXJjZVN0cmluZzsKQEAgLTEzMiwxMiArMTQ0LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRNZXNz
YWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bAogICAgIHByaW50ZigiJXMgJXM6Iiwgc291cmNlU3RyaW5nLCBsZXZlbFN0cmluZyk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIGFkZE1lc3Nh
Z2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCAw
KTsKLX0KLQotdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSog
cGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0xNDgsNyArMTU1LDcgQEAg
dm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGUKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYg
KGNhbGxTdGFjaykKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIDAsIGNhbGxTdGFjayk7
CisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzb3VyY2UsIHR5cGUsIGxldmVsLCBjYWxsU3RhY2ssIG1lc3NhZ2UpOwogICAgIGVsc2UKICAg
ICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNv
dXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAjZW5k
aWYKQEAgLTE2Miw3ICsxNjksNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZQogICAgIHByaW50
ZigiICVzXG4iLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIENvbnNvbGU6OmFk
ZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCAgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjaywgYm9vbCBhY2NlcHROb0FyZ3VtZW50cykKK3ZvaWQgQ29uc29sZTo6YWRkTWVz
c2FnZShNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrLCBib29sIGFjY2VwdE5vQXJndW1lbnRzKQogewogICAgIFBhZ2UqIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTcwLDE1ICsxNzcsMTUgQEAgdm9p
ZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgUGFzc093blB0cjxTY3JpcHQKIAogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENh
bGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAKLSAgICBpZiAoIWFjY2VwdE5vQXJndW1lbnRzICYm
ICFhcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkKKyAgICBpZiAoIWFjY2VwdE5vQXJndW1lbnRz
ICYmICFsYXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3Ry
aW5nKG1lc3NhZ2UpKQorICAgIGlmIChnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoY2FsbFN0YWNr
LT5zdGF0ZSgpLCBsYXN0Q2FsbGVyLCBtZXNzYWdlKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVS
TCgpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWws
ICIiLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIGNh
bGxTdGFjaywgbWVzc2FnZSk7CiAjZW5kaWYKIAogICAgIGlmICghQ29uc29sZTo6c2hvdWxkUHJp
bnRFeGNlcHRpb25zKCkpCkBAIC0xODcsNDkgKzE5NCw0OSBAQCB2b2lkIENvbnNvbGU6OmFkZE1l
c3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBQYXNzT3duUHRyPFNj
cmlwdAogICAgIHByaW50U291cmNlVVJMQW5kTGluZShsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpLCAw
KTsKICAgICBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChKU01lc3NhZ2VTb3VyY2Us
IGxldmVsKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxhc3RDYWxs
ZXIuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nOwot
ICAgICAgICBpZiAoYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLmdldFN0cmluZyhhcmd1bWVudHMt
Pmdsb2JhbFN0YXRlKCksIGFyZ0FzU3RyaW5nKSkKKyAgICAgICAgaWYgKGxhc3RDYWxsZXIuYXJn
dW1lbnRBdChpKS5nZXRTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBhcmdBc1N0cmluZykpCiAg
ICAgICAgICAgICBwcmludGYoIiAlcyIsIGFyZ0FzU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0KICAgICBwcmludGYoIlxuIik7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGVidWcoUGFzc093blB0
cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6ZGVidWcoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3Rh
Y2spCiB7CiAgICAgLy8gSW4gRmlyZWJ1ZywgY29uc29sZS5kZWJ1ZyBoYXMgdGhlIHNhbWUgYmVo
YXZpb3IgYXMgY29uc29sZS5sb2cuIFNvIHdlJ2xsIGRvIHRoZSBzYW1lLgotICAgIGxvZyhhcmd1
bWVudHMsIGNhbGxTdGFjayk7CisgICAgbG9nKGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29s
ZTo6ZXJyb3IoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6ZXJyb3IoU2NyaXB0
Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7Ci0gICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdl
KExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKIH0KIAotdm9p
ZCBDb25zb2xlOjppbmZvKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmluZm8o
U2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7Ci0gICAgbG9nKGFyZ3VtZW50cywgY2FsbFN0
YWNrKTsKKyAgICBsb2coY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25zb2xlOjpsb2coUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6bG9nKFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwg
YXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25zb2xlOjpkaXIoUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6ZGlyKFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQogewotICAgIGFkZE1lc3NhZ2UoT2JqZWN0TWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZl
bCwgYXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIGFkZE1lc3NhZ2UoT2JqZWN0TWVzc2FnZVR5
cGUsIExvZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25zb2xlOjpkaXJ4
bWwoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6ZGlyeG1sKFNjcmlwdENhbGxT
dGFjayogY2FsbFN0YWNrKQogewogICAgIC8vIFRoZSBzdGFuZGFyZCBiZWhhdmlvciBvZiBvdXIg
Y29uc29sZS5sb2cgd2lsbCBwcmludCB0aGUgRE9NIHRyZWUgZm9yIG5vZGVzLgotICAgIGxvZyhh
cmd1bWVudHMsIGNhbGxTdGFjayk7CisgICAgbG9nKGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29u
c29sZTo6dHJhY2UoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6dHJhY2UoU2Ny
aXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7Ci0gICAgYWRkTWVzc2FnZShUcmFjZU1lc3NhZ2VU
eXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCB0cnVlKTsKKyAgICBh
ZGRNZXNzYWdlKFRyYWNlTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrLCB0
cnVlKTsKIAogICAgIGlmICghc2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0MSwxNSArMjQ4LDE1IEBAIHZvaWQgQ29uc29sZTo6dHJhY2UoUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsCiAgICAgfQog
fQogCi12b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6YXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0
aW9uLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICAgICBpZiAoY29uZGl0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhZGRNZXNzYWdlKEFzc2VydE1lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRydWUpOworICAgIGFkZE1lc3Nh
Z2UoQXNzZXJ0TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjYWxsU3RhY2ssIHRydWUp
OwogfQogCi12b2lkIENvbnNvbGU6OmNvdW50KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBh
cmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENv
bnNvbGU6OmNvdW50KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTI2MCw3ICsyNjcs
NyBAQCB2b2lkIENvbnNvbGU6OmNvdW50KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1
bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbAogICAgIC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVo
YXZpb3Igb2YgY291bnRpbmcgd2l0aCBudWxsIGFuZCB1bmRlZmluZWQgdGl0bGUgaW4KICAgICAv
LyB0aGUgc2FtZSBidWNrZXQgYXMgbm8gYXJndW1lbnQKICAgICBTdHJpbmcgdGl0bGU7Ci0gICAg
YXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcodGl0bGUpOworICAgIGdldEZpcnN0
QXJndW1lbnRBc1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIHRpdGxlKTsK
IAogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y291bnQodGl0bGUsIGxhc3RDYWxs
ZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKICNlbHNlCkBAIC0yNjgs
MTkgKzI3NSwyMCBAQCB2b2lkIENvbnNvbGU6OmNvdW50KFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbAogI2VuZGlmCiB9CiAKLXZvaWQg
Q29uc29sZTo6bWFya1RpbWVsaW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPikKK3ZvaWQgQ29uc29sZTo6bWFya1RpbWVs
aW5lKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxT
dGFjay0+YXQoMCk7CiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgYXJndW1lbnRzLT5nZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CisgICAgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5n
KGNhbGxTdGFjay0+c3RhdGUoKSwgbGFzdENhbGxlciwgbWVzc2FnZSk7CiAKICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPm1hcmtUaW1lbGluZShtZXNzYWdlKTsKICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7CiAj
ZW5kaWYKIH0KIApAQCAtMzEzLDcgKzMyMSw3IEBAIFN0cmluZyBDb25zb2xlOjpsYXN0V01MRXJy
b3JNZXNzYWdlKCkgY29uc3QKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCi12
b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0
YXRlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9pZCBDb25zb2xl
Ojpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNr
KQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAt
MzM0LDcgKzM0Miw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxl
LCBTY3JpcHRTdGF0ZSogc3RhdGUsIFBhc3NPd25QdHI8U2NyaXB0CiAgICAgICAgIHJlc29sdmVk
VGl0bGUgPSAiIjsKICNlbmRpZgogCi0gICAgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KHN0YXRlLCBy
ZXNvbHZlZFRpdGxlKTsKKyAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoY2FsbFN0YWNrLT5zdGF0
ZSgpLCByZXNvbHZlZFRpdGxlKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgY29uc3Qg
U2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKQEAgLTM0Miw3
ICszNTAsNyBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2Ny
aXB0U3RhdGUqIHN0YXRlLCBQYXNzT3duUHRyPFNjcmlwdAogI2VuZGlmCiB9CiAKLXZvaWQgQ29u
c29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRTdGF0ZSogc3RhdGUs
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnBy
b2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2sp
CiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0z
NTQsNyArMzYyLDcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYgdGl0
bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc093blB0cjxTY3IKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAKLSAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2Zp
bGVyOjpzdG9wKHN0YXRlLCB0aXRsZSk7CisgICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2Zp
bGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChjYWxsU3RhY2stPnN0YXRlKCksIHRpdGxlKTsKICAg
ICBpZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzg2LDcgKzM5NCw3IEBAIHZv
aWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogI2VuZGlmCiB9CiAKLXZvaWQg
Q29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENv
bnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+
cGFnZSgpOwpAQCAtNDEyLDMwICs0MjAsMjggQEAgdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0
IFN0cmluZyYgdGl0bGUsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blAKICNl
bmRpZgogfQogCi12b2lkIENvbnNvbGU6Omdyb3VwKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRz
PiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lk
IENvbnNvbGU6Omdyb3VwKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c3RhcnRHcm91cChhcmd1bWVudHMsIGNhbGxTdGFjayk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5zdGFydEdyb3VwKEpTTWVzc2FnZVNvdXJjZSwgY2FsbFN0YWNrKTsKICNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFj
ayk7CiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChTY3JpcHRDYWxsU3RhY2sq
IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0
aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2ss
IHRydWUpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChKU01l
c3NhZ2VTb3VyY2UsIGNhbGxTdGFjaywgdHJ1ZSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShh
cmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwogI2VuZGlmCiB9CkBAIC00
NTEsMjIgKzQ1Nyw5IEBAIHZvaWQgQ29uc29sZTo6Z3JvdXBFbmQoKQogI2VuZGlmCiB9CiAKLWJv
b2wgQ29uc29sZTo6c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgY29uc3QKLXsKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNGcm9udGVuZCgpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLX0KLQotdm9pZCBDb25zb2xlOjp3YXJuKFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2
b2lkIENvbnNvbGU6Ondhcm4oU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7Ci0gICAgYWRk
TWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBj
YWxsU3RhY2spOworICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdl
TGV2ZWwsIGNhbGxTdGFjayk7CiB9CiAKIE1lbW9yeUluZm8qIENvbnNvbGU6Om1lbW9yeSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuaAppbmRleCA5MmZlZTU5NDc0NjFlM2I1MDVkOWQyMDgwOGQ4NGQwNGVlZjFiMDc3Li5h
YjYyNTI1MmU0Y2VkN2JmM2MwZTYzZGU1ZTUyZGUxMDE1YmNlM2EyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTQwLDggKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3Jp
cHRBcmd1bWVudHM7Ci0KICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAjZW5kaWYKQEAg
LTg2LDQ0ICs4Myw0NCBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAgICAg
dm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayk7Ci0KLSAgICB2b2lk
IGRlYnVnKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxs
U3RhY2s+KTsKLSAgICB2b2lkIGVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKLSAgICB2b2lkIGluZm8oUGFzc093blB0cjxTY3Jp
cHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwotICAgIHZvaWQgbG9n
KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
KTsKLSAgICB2b2lkIHdhcm4oUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4pOwotICAgIHZvaWQgZGlyKFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKLSAgICB2b2lkIGRpcnhtbChQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0g
ICAgdm9pZCB0cmFjZShQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24s
IFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
KTsKLSAgICB2b2lkIGNvdW50KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKLSAgICB2b2lkIG1hcmtUaW1lbGluZShQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBh
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrID0gMCk7CisKKyAgICB2b2lkIGRlYnVn
KFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgZXJyb3IoU2NyaXB0Q2FsbFN0YWNrKik7Cisg
ICAgdm9pZCBpbmZvKFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgbG9nKFNjcmlwdENhbGxT
dGFjayopOworICAgIHZvaWQgd2FybihTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGRpcihT
Y3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGRpcnhtbChTY3JpcHRDYWxsU3RhY2sqKTsKKyAg
ICB2b2lkIHRyYWNlKFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9u
KGJvb2wgY29uZGl0aW9uLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGNvdW50KFNjcmlw
dENhbGxTdGFjayopOworICAgIHZvaWQgbWFya1RpbWVsaW5lKFNjcmlwdENhbGxTdGFjayopOwog
I2lmIEVOQUJMRShXTUwpCiAgICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsK
ICNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGNvbnN0IFByb2Zp
bGVzQXJyYXkmIHByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQotICAgIHZv
aWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBTY3JpcHRTdGF0ZSosIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYsIFNjcmlwdFN0
YXRlKiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIHByb2ZpbGUoY29u
c3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0
IFN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOwogI2VuZGlmCiAgICAgdm9pZCB0aW1lKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBn
cm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPik7Ci0gICAgdm9pZCBncm91cENvbGxhcHNlZChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCB0aW1lRW5kKGNvbnN0
IFN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgZ3JvdXAoU2NyaXB0Q2FsbFN0
YWNrKik7CisgICAgdm9pZCBncm91cENvbGxhcHNlZChTY3JpcHRDYWxsU3RhY2sqKTsKICAgICB2
b2lkIGdyb3VwRW5kKCk7CiAKLSAgICBib29sIHNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgp
IGNvbnN0OwotCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiAgICAg
c3RhdGljIHZvaWQgc2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpOwogCisjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMo
KSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CisjZW5kaWYKKwogICAgIE1lbW9yeUluZm8q
IG1lbW9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGlubGluZSBQYWdlKiBwYWdlKCkgY29u
c3Q7Ci0gICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+LCBib29s
IGFjY2VwdE5vQXJndW1lbnRzID0gZmFsc2UpOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBib29sIGFjY2VwdE5vQXJndW1l
bnRzID0gZmFsc2UpOwogCiAgICAgQ29uc29sZShGcmFtZSopOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKaW5kZXggOWYw
MzkxMWExMDlmZGZjODdlNzM0OGEwMzc5MzA4OWJlYjJhM2JlYi4uNTI1MjhmMTVlOTM5OTU5ZThk
YzMzM2UxYmU0MzllY2JiMmI4ZmQwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
aWRsCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbApAQCAtMzAsNiArMzAsMTAgQEAgbW9k
dWxlIHdpbmRvdyB7CiAKICAgICBpbnRlcmZhY2UgW09taXRDb25zdHJ1Y3Rvcl0gQ29uc29sZSB7
CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRl
cl0gQXJyYXkgcHJvZmlsZXM7CisjZW5kaWYKKyAgICAKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50
SGFuZGxpbmddIHZvaWQgZGVidWcoKTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmdd
IHZvaWQgZXJyb3IoKTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgaW5m
bygpOwpAQCAtNDcsOSArNTEsOCBAQCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogCiAjaWYgZGVm
aW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIEFycmF5IHBy
b2ZpbGVzOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGUoaW4gRE9NU3RyaW5nIHRpdGxl
KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9maWxlRW5kKGluIERPTVN0cmluZyB0aXRsZSk7
CisgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIHByb2ZpbGUoaW4gW0NvbnZl
cnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAg
IFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRl
ZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CiAjZW5kaWYKIAogICAg
ICAgICB2b2lkIHRpbWUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyB0aXRsZSk7Cg==
</data>
<flag name="review"
          id="61630"
          type_id="1"
          status="-"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="61627"
          type_id="3"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71549</attachid>
            <date>2010-10-22 04:38:42 -0700</date>
            <delta_ts>2010-10-22 04:38:42 -0700</delta_ts>
            <desc>Correct rollout patch.</desc>
            <filename>rollout.patch</filename>
            <type>text/plain</type>
            <size>126143</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCBlZWEzNTM3Li4zMjg4MDU5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCkBAIC0xNjYsNyArMTY2LDggQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAliaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAliaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5j
cHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotCWJpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKKwliaW5kaW5ncy9qcy9TY3JpcHRDYWxs
RnJhbWUuY3BwIFwKKwliaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwIFwKIAliaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCA2OTJiNDUzLi5mZGVlNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Fu
ZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpA
QCAtNDksNyArNDksOCBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJpbmRpbmdzL3Y4L1NjaGVk
dWxlZEFjdGlvbi5jcHAgXAogCWJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgXAog
CWJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHAgXAorCWJpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAgXAorCWJp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgXAogCWJpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKIAliaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4ZjVkNjIxLi40MmUz
NDRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTY4Niw3ICs2ODYsOCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKyAgICBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwCisgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTExMjIsMTAgKzExMjMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JT
dG9yYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
Ci0gICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5jcHAKLSAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAotICAgIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKIAogICAgIGxvYWRlci9DYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgwZjJiYy4uYzlhNDViMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMSBAQAogMjAxMC0xMC0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAorICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzAyOTguV2ViS2l0IHdp
biBjb21waWxhdGlvbiBmYWlsdXJlLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC83MDI5OAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDgxMjIKKworMjAxMC0xMC0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGRlY291cGxlIFNjcmlwdEFyZ3VtZW50cyBmcm9tIFNjcmlwdENhbGxT
dGFjawpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggNjQ2MGVlOS4uMjZiNjkyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC04MTYsOCArODE2LDEw
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwKLQlXZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKLQlXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxG
cmFtZS5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAgXAorCVdl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBc
CkBAIC0xODUwLDE0ICsxODUyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2Uu
aCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCi0JV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJy
ZWFrcG9pbnQuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmggXAot
CVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgXAotCVdlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5oIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDMzZmZkZTguLjRhNDE3ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02OTksNiArNjk5
LDEwIEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oJywKKyAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9TY3JpcHRDYWxsRnJhbWUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJHdGsuY3BwJywKQEAgLTg2NSw4ICs4NjksMTAg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgnLAotICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwJywKLSAgICAgICAgICAgICdiaW5k
aW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxGcmFtZS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2su
Y3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwJywKQEAgLTE5NDgsMTIgKzE5NTQsNiBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9TY3JpcHRCcmVha3BvaW50LmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgnLAot
ICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwJywKLSAgICAgICAgICAg
ICdpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAnLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZjBkN2Y0ZC4u
YjZhYzRhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC0zNTEsNyArMzUxLDggQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9T
Y29wZWRET01EYXRhU3RvcmUuY3BwIFwKICMgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAot
ICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCisgICAgICAg
IGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9T
Y3JpcHRDYWxsU3RhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJh
c2UuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCkBAIC01NzMsNyArNTc0
LDggQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotICAgICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCisgICAgICAgIGJpbmRp
bmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogICAgICAgICBi
aW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCkBAIC0xMDEwLDEwICsxMDEyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwIFwKLSAgICBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNw
cCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwIFwKLSAgICBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAgaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAg
XAogICAgIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVS
ZXNvdXJjZS5jcHAgXApAQCAtMTM4OSw2ICsxMzg4LDggQEAgdjggewogICAgICAgICBiaW5kaW5n
cy92OC9TY29wZWRET01EYXRhU3RvcmUuaCBcCiAjICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRB
cnJheS5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggXAor
ICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaCBcCisgICAgICAgIGJpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFjay5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5oIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmggXApAQCAtMTQ3MSw2ICsxNDcy
LDggQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAog
ICAgICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwKKyAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0
Q2FsbEZyYW1lLmggXAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGE0
ZGZmZjYuLjBkOWMyMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NjAzOTgsNyArNjAzOTgsNyBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0J
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5j
cHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxGcmFtZS5j
cHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiINCkBAIC02MDQ1MCw3ICs2MDQ1MCw2MyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbEZyYW1lLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2Fs
bFN0YWNrLmNwcCINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
CT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
CS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQ2Fp
cm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJ
CQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdENhbGxTdGFjay5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQpAQCAtNjMzNDMsMTQgKzYzMzk5LDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5jcHAi
DQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxp
bnNwZWN0b3JcU2NyaXB0QXJndW1lbnRzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0QnJlYWtwb2ludC5jcHAi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtNjMzNTksMjIgKzYzNDA3LDYgQEAKIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNj
cmlwdENhbGxGcmFtZS5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0Q2FsbEZyYW1lLmgiDQotCQkJCT4NCi0J
CQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2Ny
aXB0Q2FsbFN0YWNrLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHRDYWxsU3RhY2suaCINCi0JCQkJPg0KLQkJ
CTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNWY3MzU0Li4wOThmOTE2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQ2MCwxMCArNTQ2MCw2
IEBACiAJCUYzNjQ0QUZGMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRDExMTk4
MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovOyB9OwogCQlGMzY0NEIwMDExMTk4
MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3Rl
ZFNjcmlwdC5oICovOyB9OwogCQlGMzc1Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJj
ZS5oICovOyB9OwotCQlGMzkyMjQ5QzEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGMzkyMjQ5QTEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAg
Ki87IH07Ci0JCUYzOTIyNDlEMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzky
MjQ5QjEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oICovOyB9Owot
CQlGMzlCRTk1QjEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOUJFOTU5MTI2NzNCRjQw
MEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovOyB9OwotCQlGMzlCRTk1QzEyNjczQkY0
MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGMzlCRTk1QTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJn
dW1lbnRzLmggKi87IH07CiAJCUYzRDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAgKi87IH07CiAJCUYzRDQ2MTQ5MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuaCAqLzsgfTsKIAkJRjRFQUY0QUUxMEM3NDJCMTAwOTEwMEQzIC8qIE9w
ZW5UeXBlU2FuaXRpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0RUFGNEFDMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5j
cHAgKi87IH07CkBAIC0xMTQ5MiwxMCArMTE0ODgsNiBAQAogCQlGMzY0NEFGRDExMTk4MDU5MDBF
MEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3Rvcldvcmtl
clJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvcldv
cmtlclJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYzOTIyNDlBMTI2
RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGMzkyMjQ5QjEyNkYxMUFFMDBBOTI2RDkgLyogU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYz
OUJFOTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0QXJndW1lbnRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjM5QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFy
Z3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRBcmd1bWVu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNENDYxNDYxMTYxRDUzMjAwQ0Ew
RDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6ZXIu
Y3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTIyNjgsMTQgKzEyMjYwLDggQEAKIAkJCQlGMzc1Q0MwNjExNTBE
MzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLywKIAkJCQkxQzgxQkEw
NTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgKi8sCiAJCQkJQkND
NjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgKi8sCi0JCQkJRjM5
QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCi0JCQkJRjM5
QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAogCQkJCTIwMEIx
OTA4MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCAqLywKIAkJCQk3QUZE
NEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLAotCQkJCTQxNkU3
NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAotCQkJCTQxNkU3
NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKLQkJCQk0MTZFNzVC
RDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKLQkJCQk0MTZFNzVC
QzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCiAJCQkJN0FGRDRGRjMx
MTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKIAkJCQk5RkEzN0VF
RjExNzJGRDQxMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZS5pZGwgKi8sCiAJCQkJOUZBMzdFRjAx
MTcyRkQ0MTAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmlkbCAqLywKQEAgLTE2NzkyLDgg
KzE2Nzc4LDEwIEBACiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFj
dGlvbi5oICovLAogCQkJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwICovLAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRD
YWNoZWRGcmFtZURhdGEuaCAqLywKLQkJCQlGMzkyMjQ5QTEyNkYxMUFFMDBBOTI2RDkgLyogU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi8sCi0JCQkJRjM5MjI0OUIxMjZGMTFBRTAwQTkyNkQ5
IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLywKKwkJCQk0MTZFNzVDQTBFREY5MEM3MDAz
NjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKKwkJCQk0MTZFNzVDOTBFREY5MEM3MDAz
NjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi8sCisJCQkJNDE2RTc1QkQwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi8sCisJCQkJNDE2RTc1QkMwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovLAogCQkJCTkzQjcwRDUzMDlFQjBDN0MwMDlEODQ2
OCAvKiBTY3JpcHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk5M0I3MEQ1NDA5RUIwQzdDMDA5RDg0
NjggLyogU2NyaXB0Q29udHJvbGxlci5oICovLAogCQkJCUE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5
QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1tICovLApAQCAtMjA1NzAsNyArMjA1NTgsNiBAQAog
CQkJCTFDRUZDOUI5MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNjJDN0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRjM5QkU5NUMxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3Vt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FGRDRBOEIxMTMx
QzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
RjFEMjFGMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjExNDYsNyArMjExMzMsNiBAQAogCQkJCTA4MUNERkI5MTI2RUNGREIwMEQy
MTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDgxQ0RGQkExMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFRlbXBsYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODFDREZCRjEyNkVDRkU4MDBEMjE1Q0Eg
LyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RjM5MjI0OUQxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4OEEwRTA0MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA1MTI2RUYxREIw
MDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwNjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIzMjAyLDcgKzIzMTg4LDYgQEAKIAkJCQk1MTYyQzdGNDExRjc3
RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
QzAxQkQwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODREODJDMjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUYzOUJFOTVCMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1
bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjAwQjE5MDkxMUMyNzdEOTAwRENDRDNBIC8q
IFNjcmlwdEJyZWFrcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMUQyMjAwRUYzNUMy
QTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTZFNzVDQzBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjM3MTEsNyArMjM2OTYsNiBAQAogCQkJCTk3MjhDMzEzMTI2OEU0MzkwMDQx
RTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTg3NzJG
MTEyNkUyNjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Ex
RjJCNTIxMjZDNjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlGMzkyMjQ5QzEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAppbmRleCBlMjAxMmNlLi5jZjA4Y2E5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xNDEsNyArMTQxLDggQEAKICNpbmNsdWRlICJNZW1v
cnlJbmZvLmNwcCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uY3BwIgogI2luY2x1ZGUgIlNj
cmlwdENhY2hlZEZyYW1lRGF0YS5jcHAiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmNwcCIKKyNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suY3BwIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXJXaW4uY3BwIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmNw
cCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAppbmRleCA2ZGY4OGY2Li5m
MDQxOWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCkBAIC0yOSwx
MSArMjksOCBAQAogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkpTU2NyaXB0UHJv
ZmlsZS5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9KU0FycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCkBAIC01NSwyOCArNTIsNiBAQCBKU1ZhbHVlIEpTQ29uc29sZTo6cHJvZmls
ZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVj
LCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGUoRXhlY1N0YXRlKiBleGVj
KQotewotICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRD
YWxsU3RhY2soZXhlYywgMSkpOwotICAgIGNvbnN0IFN0cmluZyYgdGl0bGUgPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgaW1wbCgpLT5wcm9maWxlKHRpdGxlLCBleGVjLCBjYWxsU3RhY2sucmVsZWFzZSgp
KTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NvbnNvbGU6OnBy
b2ZpbGVFbmQoRXhlY1N0YXRlKiBleGVjKQotewotICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgMSkpOwotICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgaW1wbCgpLT5wcm9maWxlRW5kKHRpdGxl
LCBleGVjLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LX0KLQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q2FsbEZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
Zjc0Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
RnJhbWUuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgorCisjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29u
c3QgVVN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiB1cmxTdHJpbmcsIGludCBs
aW5lTnVtYmVyLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQor
ICAgIDogbV9mdW5jdGlvbk5hbWUodXN0cmluZ1RvU3RyaW5nKGZ1bmN0aW9uTmFtZSkpCisgICAg
LCBtX3NvdXJjZVVSTCh1c3RyaW5nVG9TdHJpbmcodXJsU3RyaW5nKSkKKyAgICAsIG1fbGluZU51
bWJlcihsaW5lTnVtYmVyKQoreworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuOworICAg
IHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIGZvciAo
c2l6ZV90IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKKyAg
ICAgICAgbV9hcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7
Cit9CisKK1NjcmlwdENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSgpCit7Cit9CisKK2NvbnN0
IFNjcmlwdFZhbHVlICZTY3JpcHRDYWxsRnJhbWU6OmFyZ3VtZW50QXQodW5zaWduZWQgaW5kZXgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYXJndW1lbnRzLnNpemUoKSA+IGluZGV4KTsKKyAgICBy
ZXR1cm4gbV9hcmd1bWVudHNbaW5kZXhdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zMWFlYzdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsRnJhbWUuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0Q2Fs
bEZyYW1lX2gKKyNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKKworI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgVVN0cmluZzsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKK3B1
YmxpYzoKKyAgICBTY3JpcHRDYWxsRnJhbWUoY29uc3QgSlNDOjpVU3RyaW5nJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IEpTQzo6VVN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlciwgSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7CisgICAgflNjcmlwdENhbGxG
cmFtZSgpOworCisgICAgY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KKyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisKKyAgICAvLyBhcmd1bWVudCByZXRyaWV2YWwgbWV0
aG9kcworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHVuc2lnbmVkKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHMu
c2l6ZSgpOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOworICAgIFN0
cmluZyBtX3NvdXJjZVVSTDsKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7CisKKyAgICBWZWN0
b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbEZyYW1lX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTYxYjA3
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2su
Y3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKKworI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgor
I2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9VU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbERhdGEuaD4KKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRDYWxsU3Rh
Y2s6OlNjcmlwdENhbGxTdGFjayhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHNraXBBcmd1bWVu
dENvdW50KQorICAgIDogbV9pbml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1fZXhlYyhleGVjKQor
ICAgICwgbV9jYWxsZXIoMCkKK3sKKyAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICBpbnRw
dHJfdCBzb3VyY2VJRDsKKyAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICBKU1ZhbHVlIGZ1bmN0
aW9uOworCisgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGV4ZWMs
IHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKKworICAg
IHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5l
TnVtYmVyIDogMDsKKworICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICBtX2NhbGxlciA9IGFz
RnVuY3Rpb24oZnVuY3Rpb24pOworICAgICAgICBtX2ZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZy
YW1lKG1fY2FsbGVyLT5uYW1lKG1fZXhlYyksIHVybFN0cmluZywgbGluZU51bWJlciwgbV9leGVj
LCBza2lwQXJndW1lbnRDb3VudCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIENhbGxlciBp
cyB1bmtub3duLCBidXQgd2Ugc2hvdWxkIHN0aWxsIGFkZCB0aGUgZnJhbWUsIGJlY2F1c2UKKyAg
ICAgICAgLy8gc29tZXRoaW5nIGNhbGxlZCB1cywgYW5kIGdhdmUgdXMgYXJndW1lbnRzLgorICAg
ICAgICBtX2ZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFVTdHJpbmcoKSwgdXJsU3RyaW5n
LCBsaW5lTnVtYmVyLCBtX2V4ZWMsIHNraXBBcmd1bWVudENvdW50KSk7CisgICAgfQorfQorCitT
Y3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxsU3RhY2soKQoreworfQorCitjb25zdCBTY3JpcHRD
YWxsRnJhbWUgJlNjcmlwdENhbGxTdGFjazo6YXQodW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8g
Rmlyc3QgZnJhbWUgaXMgcHJlLXBvcHVsYXRlZCBpbiBjb25zdHJ1Y3Rvciwgc28gZG9uJ3QgdHJp
Z2dlcgorICAgIC8vIGluaXRpYWxpemF0aW9uIHVubGVzcyBsb29raW5nIGJleW9uZCB0aGUgZmly
c3QgZnJhbWUuCisgICAgaWYgKGluZGV4ID4gMCkKKyAgICAgICAgaW5pdGlhbGl6ZSgpOworICAg
IEFTU0VSVChtX2ZyYW1lcy5zaXplKCkgPiBpbmRleCk7CisgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XTsKK30KKwordW5zaWduZWQgU2NyaXB0Q2FsbFN0YWNrOjpzaXplKCkKK3sKKyAgICBpbml0
aWFsaXplKCk7CisgICAgcmV0dXJuIG1fZnJhbWVzLnNpemUoKTsKK30KKwordm9pZCBTY3JpcHRD
YWxsU3RhY2s6OmluaXRpYWxpemUoKQoreworICAgIGlmICghbV9jYWxsZXIgfHwgbV9pbml0aWFs
aXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CisgICAg
aW50cHRyX3Qgc291cmNlSUQ7CisgICAgVVN0cmluZyB1cmxTdHJpbmc7CisgICAgSlNWYWx1ZSBm
dW5jdGlvbjsKKyAgICAvLyBjYWxsRnJhbWUgbXVzdCBleGlzdCBpZiBtX2NhbGxlciBpcyBub3Qg
bnVsbC4KKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IG1fZXhlYy0+Y2FsbGVyRnJhbWUoKTsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAg
bV9leGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWdu
ZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7CisgICAgICAgIGlm
ICghZnVuY3Rpb24pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNGdW5jdGlvbioganNG
dW5jdGlvbiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOworICAgICAgICB1bnNpZ25lZCBsaW5lTnVt
YmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDA7CisgICAg
ICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoanNGdW5jdGlvbi0+bmFtZShtX2V4
ZWMpLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIsIG1fZXhlYywgMCkpOworICAgICAgICBjYWxsRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisgICAgfQorICAgIG1faW5pdGlhbGl6ZWQg
PSB0cnVlOworfQorCitib29sIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZShpbnQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdkMWM0NgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNjcmlwdENhbGxTdGFja19oCisjZGVmaW5lIFNjcmlwdENhbGxTdGFja19o
CisKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIEpTVmFs
dWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEluc3BlY3RvckFycmF5
OworCisgICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFNjcmlwdENhbGxTdGFjayhKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHNraXBBcmd1bWVudENvdW50ID0gMCk7CisgICAgICAgIH5TY3JpcHRDYWxsU3RhY2soKTsK
KworICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWM7IH0K
KyAgICAgICAgU2NyaXB0U3RhdGUqIGdsb2JhbFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9leGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsgfQorICAgICAgICAvLyBmcmFt
ZSByZXRyaWV2YWwgbWV0aG9kcworICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHVu
c2lnbmVkKTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSgpOworICAgICAgICBzdGF0aWMgYm9vbCBz
dGFja1RyYWNlKGludCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgICAgIGJvb2wgbV9pbml0aWFs
aXplZDsKKworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOworICAgICAgICBWZWN0b3I8
U2NyaXB0Q2FsbEZyYW1lPiBtX2ZyYW1lczsKKyAgICAgICAgSlNDOjpKU0Z1bmN0aW9uKiBtX2Nh
bGxlcjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3Jp
cHRDYWxsU3RhY2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZmFiZGQuLjAwMDAwMDAK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKLSNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KLSNpbmNsdWRlIDxpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRh
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3Ry
aW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG1heFN0YWNrU2l6ZSkKLXsKLSAgICBWZWN0b3I8U2NyaXB0
Q2FsbEZyYW1lPiBmcmFtZXM7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBleGVjOwotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOwotICAgICAgICBpbnQg
c2lnbmVkTGluZU51bWJlcjsKLSAgICAgICAgaW50cHRyX3Qgc291cmNlSUQ7Ci0gICAgICAgIFVT
dHJpbmcgdXJsU3RyaW5nOwotICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwotCi0gICAgICAgIGV4
ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExp
bmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKLSAgICAgICAgVVN0cmlu
ZyBmdW5jdGlvbk5hbWU7Ci0gICAgICAgIGlmIChmdW5jdGlvbikKLSAgICAgICAgICAgIGZ1bmN0
aW9uTmFtZSA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pLT5uYW1lKGV4ZWMpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIC8vIENhbGxlciBpcyB1bmtub3duLCBidXQgaWYgZnJhbWVzIGlzIGVt
cHR5IHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNhdXNlCi0gICAgICAgICAgICAv
LyBzb21ldGhpbmcgY2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1bWVudHMuCi0gICAgICAgICAg
ICBpZiAoIWZyYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/
IHNpZ25lZExpbmVOdW1iZXIgOiAwOwotICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxG
cmFtZSh1c3RyaW5nVG9TdHJpbmcoZnVuY3Rpb25OYW1lKSwgdXN0cmluZ1RvU3RyaW5nKHVybFN0
cmluZyksIGxpbmVOdW1iZXIpKTsKLSAgICAgICAgaWYgKCFmdW5jdGlvbiB8fCBmcmFtZXMuc2l6
ZSgpID09IG1heFN0YWNrU2l6ZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYWxsRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7Ci0gICAgfQotICAgIHJldHVybiBuZXcgU2Ny
aXB0Q2FsbFN0YWNrKGZyYW1lcyk7Ci19Ci0KLVBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBj
cmVhdGVTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHNraXBB
cmd1bWVudENvdW50KQotewotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gYXJndW1lbnRzOwotICAg
IHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAgIGZvciAo
c2l6ZV90IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShleGVjLT5hcmd1bWVudChpKSkpOwot
ICAgIHJldHVybiBuZXcgU2NyaXB0QXJndW1lbnRzKGV4ZWMsIGFyZ3VtZW50cyk7Ci19Ci0KLWJv
b2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDRkODhkLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCi0jZGVmaW5lIFNj
cmlwdENhbGxTdGFja0ZhY3RvcnlfaAotCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgU2NyaXB0QXJndW1lbnRzOwotY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwotCi1Q
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhl
Y1N0YXRlKiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7Ci1QYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFy
Z3VtZW50Q291bnQpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCBiNzE2
ODQ5Li42YmVmNGY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0zMiw4ICszMiw3
IEBACiAjaWZuZGVmIFNjcmlwdFN0YXRlX2gKICNkZWZpbmUgU2NyaXB0U3RhdGVfaAogCi0jaW5j
bHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oPgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUv
UHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC01Myw3ICs1Miw3
IEBAIGNsYXNzIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKICAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cigpIHsgfQogICAgIFNjcmlwdFN0
YXRlUHJvdGVjdGVkUHRyKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkgOiBtX2dsb2JhbE9iamVj
dChzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSB7IH0KLSAgICBTY3JpcHRTdGF0
ZSogZ2V0KCkgY29uc3QKKyAgICBTY3JpcHRTdGF0ZSogZ2V0KCkKICAgICB7CiAgICAgICAgIGlm
IChtX2dsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggMjNkYjk1Ny4uMGI1NmYxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC0xOTY2LDEyICsxOTY2LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgbXkgJGhhc09wdGlvbmFsQXJndW1lbnRzID0g
MDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE93blB0cjxTY3JpcHRBcmd1bWVu
dHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgJG51bVBhcmFt
ZXRlcnMpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1Ry
YWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMs
IG1heFN0YWNrU2l6ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJTY3JpcHRBcmd1bWVudHMuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdENhbGxTdGFjayBjYWxsU3RhY2soZXhlYywgJG51
bVBhcmFtZXRlcnMpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJTY3JpcHRDYWxsU3RhY2suaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCJ9ID0gMTsKICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKQEAgLTIzNjEsOCAr
MjM1Nyw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKIAogICAg
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFy
Z3VtZW50SGFuZGxpbmcifSkgewogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAk
cGFyYW1JbmRleDsKLSAgICAgICAgJHBhcmFtSW5kZXggKz0gMjsKLSAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nIC49ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgp
IjsKKyAgICAgICAgKyskcGFyYW1JbmRleDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIm
Y2FsbFN0YWNrIjsKICAgICB9CiAKICAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlv
bnN9KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCAwYzc5ZTY0Li43NTFlMzUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTEzMDQsMTUgKzEzMDQsMTEgQEAgRU5ECiAKICAgICBpZiAoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRs
aW5nIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgIE93
blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVu
dHMoYXJncywgJG51bVBhcmFtZXRlcnMpKTsKLSAgICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1w
LT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2Fs
bFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhtYXhTdGFja1NpemUpKTsKKyAgICBPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoYXJncywg
JG51bVBhcmFtZXRlcnMpKTsKICAgICBpZiAoIWNhbGxTdGFjaykKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIEVORAotICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRBcmd1bWVu
dHMuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrLmgifSA9
IDE7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCJ9ID0g
MTsKICAgICB9CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiU1ZHQ2hlY2tTZWN1cml0eURvY3VtZW50In0pIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwpAQCAtMjcyMyw4ICsyNzE5LDggQEAgc3ViIEdlbmVyYXRlRnVu
Y3Rpb25DYWxsU3RyaW5nKCkKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewogICAgICAgICAkZnVu
Y3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkaW5kZXg7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAu
PSAic2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSI7Ci0gICAg
ICAgICRpbmRleCArPSAyOworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImNhbGxTdGFjay5n
ZXQoKSI7CisgICAgICAgICRpbmRleCsrOwogICAgIH0KIAogICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1cmVDaGVjayJ9KSB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRl
eCA3ZTA2MDY4Li41MjM2MjY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTMxLDkgKzMxLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPYmou
aCIKICNpbmNsdWRlICJKU2xvZy5oIgogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJTY3Jp
cHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KQEAg
LTk5NiwxNCArOTk0LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DdXN0b21BcmdzQW5kRXhjZXB0aW9uKEV4CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAxKSk7
Ci0gICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1Ry
YWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxOwot
ICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2soZXhlYywgbWF4U3RhY2tTaXplKSk7CisgICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhl
eGVjLCAxKTsKICAgICBsb2cqIGludEFyZyA9IHRvbG9nKGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBpbXAtPmN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oaW50
QXJnLCBzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgpLCBlYyk7
CisgICAgaW1wLT5jdXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFyZywgJmNhbGxTdGFjaywgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDM0NDFiNzMuLjQ0ZjBkM2UgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjYsOSArMjYsNyBA
QAogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgpAQCAt
NzA3LDEzICs3MDUsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21Bcmdz
QW5kRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIHsKLSAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1
bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsKLSAgICBzaXplX3QgbWF4U3Rh
Y2tTaXplID0gaW1wLT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENhbGxT
dGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7Ci0gICAgT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhtYXhTdGFja1NpemUpKTsK
KyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpj
cmVhdGUoYXJncywgMSkpOwogICAgIGlmICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogICAgIEVYQ0VQVElPTl9CTE9DSyhsb2cqLCBpbnRBcmcsIFY4bG9nOjpI
YXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwotICAgIGltcC0+Y3VzdG9tQXJnc0FuZEV4Y2VwdGlv
bihpbnRBcmcsIHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCks
IGVjKTsKKyAgICBpbXAtPmN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oaW50QXJnLCBjYWxsU3RhY2su
Z2V0KCksIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBnb3RvIGZhaWw7CiAg
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYzcz
NDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFt
ZS5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5
LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
Y3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQorICAgIDogbV9m
dW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICwgbV9zb3VyY2VVUkwodXJsU3RyaW5nKQor
ICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCit7CisgICAgZm9yIChpbnQgaSA9IHNraXBB
cmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRzLkxlbmd0aCgpOyArK2kpCisgICAgICAgIG1fYXJn
dW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShhcmd1bWVudHNbaV0pKTsKK30KKworU2NyaXB0Q2Fs
bEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcikKKyAgICA6IG1fZnVuY3Rpb25OYW1l
KGZ1bmN0aW9uTmFtZSkKKyAgICAsIG1fc291cmNlVVJMKHVybFN0cmluZykKKyAgICAsIG1fbGlu
ZU51bWJlcihsaW5lTnVtYmVyKQoreworfQorCitTY3JpcHRDYWxsRnJhbWU6On5TY3JpcHRDYWxs
RnJhbWUoKQoreworfQorCitjb25zdCBTY3JpcHRWYWx1ZSYgU2NyaXB0Q2FsbEZyYW1lOjphcmd1
bWVudEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChtX2FyZ3VtZW50cy5z
aXplKCkgPiBpbmRleCk7CisgICAgcmV0dXJuIG1fYXJndW1lbnRzW2luZGV4XTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3N2Q0YQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNjcmlwdENhbGxGcmFtZV9oCisjZGVmaW5lIFNjcmlwdENhbGxGcmFt
ZV9oCisKKyNpbmNsdWRlICJLVVJMLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSB2OCB7CisgICAgY2xhc3MgQXJndW1lbnRzOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgY2xhc3MgU2NyaXB0VmFsdWU7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJl
dHJpZXZpbmcgbGluZSBudW1iZXIgYW5kIHNvdXJjZSBVUkwgYW5kIHN0b3JpbmcgaGVyZQorICAg
IC8vIGZvciBhbGwgY2FsbCBmcmFtZXMsIG5vdCBqdXN0IHRoZSBmaXJzdCBvbmUuCisgICAgLy8g
U2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTY+IGFuZAor
ICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODA+Cisg
ICAgY2xhc3MgU2NyaXB0Q2FsbEZyYW1lICB7CisgICAgcHVibGljOgorICAgICAgICBTY3JpcHRD
YWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYsIHVuc2lnbmVkIHNraXBB
cmd1bWVudENvdW50KTsKKyAgICAgICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIpOworICAg
ICAgICB+U2NyaXB0Q2FsbEZyYW1lKCk7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZTsgfQorICAgICAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CisgICAgICAg
IHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKwor
ICAgICAgICAvLyBhcmd1bWVudCByZXRyaWV2YWwgbWV0aG9kcworICAgICAgICBjb25zdCBTY3Jp
cHRWYWx1ZSYgYXJndW1lbnRBdCh1bnNpZ25lZCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50cy5zaXplKCk7IH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKKyAgICAgICAgU3RyaW5n
IG1fc291cmNlVVJMOworICAgICAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7CisKKyAgICAgICAg
VmVjdG9yPFNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsRnJhbWVfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDYWxsU3RhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNlMjljN2EKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENh
bGxTdGFjay5jcHAKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKKworI2luY2x1ZGUgPHY4LWRlYnVnLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIHZvaWQgZ2V0RnJhbWVMb2NhdGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFt
ZSwgU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVu
Y3Rpb25OYW1lKQoreworICAgIEFTU0VSVCghZnJhbWUuSXNFbXB0eSgpKTsKKyAgICB2ODo6TG9j
YWw8djg6OlN0cmluZz4gc291cmNlTmFtZVZhbHVlKGZyYW1lLT5HZXRTY3JpcHROYW1lT3JTb3Vy
Y2VVUkwoKSk7CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGZ1bmN0aW9uTmFtZVZhbHVlKGZy
YW1lLT5HZXRGdW5jdGlvbk5hbWUoKSk7CisgICAgKnNvdXJjZU5hbWUgPSBzb3VyY2VOYW1lVmFs
dWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoc291cmNlTmFtZVZhbHVlKTsKKyAg
ICAqZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dl
YkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lVmFsdWUpOworICAgICpzb3VyY2VMaW5lTnVtYmVyID0g
ZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKK30KKworc3RhdGljIHZvaWQgZ2V0VG9wRnJhbWVMb2Nh
dGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlLCBTdHJpbmcqIHNvdXJj
ZU5hbWUsIGludCogc291cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jdGlvbk5hbWUpCit7Cisg
ICAgaWYgKHN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQoKSA8PSAwKSB7CisgICAgICAgIC8vIFN1
Y2Nlc3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBidXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4g
SXQgbWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9yIGZvciBleGFtcGxlLgorICAg
ICAgICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBh
bmQgZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4KKyAgICAgICAgKnNvdXJjZU5hbWUgPSAi
dW5kZWZpbmVkIjsKKyAgICAgICAgKnNvdXJjZUxpbmVOdW1iZXIgPSAwOworICAgICAgICAqZnVu
Y3Rpb25OYW1lID0gInVuZGVmaW5lZCI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSBzdGFja1RyYWNlLT5HZXRGcmFtZSgwKTsKKyAgICAg
ICAgZ2V0RnJhbWVMb2NhdGlvbihmcmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwg
ZnVuY3Rpb25OYW1lKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxG
cmFtZT4gdG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUp
Cit7CisgICAgU3RyaW5nIHNvdXJjZU5hbWU7CisgICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Cisg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICBnZXRGcmFtZUxvY2F0aW9uKGZyYW1lLCAmc291
cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUpOworICAgIHJldHVybiBu
ZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51
bWJlcik7Cit9CisKK3N0YXRpYyB2b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNr
VHJhY2UsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVz
KQoreworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisgICAg
aW50IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpT
dGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7CisgICAgICAg
IHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsK
KyAgICB9Cit9CisKK2NvbnN0IGludCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVU
b0NhcHR1cmUgPSAyMDA7Citjb25zdCB2ODo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZU9wdGlvbnMg
U2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlT3B0aW9ucyA9IHN0YXRpY19jYXN0PHY4OjpTdGFj
a1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCisgICAgIHY4OjpTdGFja1RyYWNlOjprTGluZU51
bWJlcgorICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtDb2x1bW5PZmZzZXQKKyAgICB8IHY4OjpTdGFj
a1RyYWNlOjprU2NyaXB0TmFtZU9yU291cmNlVVJMCisgICAgfCB2ODo6U3RhY2tUcmFjZTo6a0Z1
bmN0aW9uTmFtZSk7CisKKworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IFNjcmlwdENhbGxT
dGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tp
cEFyZ3VtZW50Q291bnQsIGludCBmcmFtQ291bnRMaW1pdCkKK3sKKyAgICB2ODo6SGFuZGxlU2Nv
cGUgc2NvcGU7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRl
eHQ6OkdldEN1cnJlbnQoKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNv
bnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0
YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1Db3VudExpbWl0LCBTY3JpcHRDYWxsU3Rh
Y2s6OnN0YWNrVHJhY2VPcHRpb25zKSk7CisKKyAgICBpZiAoc3RhY2tUcmFjZS5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgU3RyaW5nIHNvdXJjZU5hbWU7CisgICAgaW50IHNv
dXJjZUxpbmVOdW1iZXI7CisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICBnZXRUb3BGcmFt
ZUxvY2F0aW9uKHN0YWNrVHJhY2UsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1
bmN0aW9uTmFtZSk7CisKKyAgICBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3Jp
cHRDYWxsRnJhbWVzOworICAgIGlmIChmcmFtQ291bnRMaW1pdCA+IDEpCisgICAgICAgIHRvU2Ny
aXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVz
KTsKKworICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlOjpmb3JDb250
ZXh0KGNvbnRleHQpLCBuZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFt
ZSwgc291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCksIHNjcmlw
dENhbGxGcmFtZXMpOworfQorCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gU2NyaXB0Q2Fs
bFN0YWNrOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCB2ODo6SGFuZGxlPHY4OjpTdGFja1Ry
YWNlPiBzdGFja1RyYWNlKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICBWZWN0
b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3JpcHRDYWxsRnJhbWVzOworICAgIHRvU2Ny
aXB0Q2FsbEZyYW1lc1ZlY3RvcihzdGF0ZS0+Y29udGV4dCgpLCBzdGFja1RyYWNlLCBzY3JpcHRD
YWxsRnJhbWVzKTsKKworICAgIFN0cmluZyBzb3VyY2VOYW1lOworICAgIGludCBzb3VyY2VMaW5l
TnVtYmVyOworICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7CisgICAgZ2V0VG9wRnJhbWVMb2NhdGlv
bihzdGFja1RyYWNlLCAmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5h
bWUpOworCisgICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soc3RhdGUsIG5ldyBTY3JpcHRD
YWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyKSwgc2Ny
aXB0Q2FsbEZyYW1lcyk7Cit9CisKK1NjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRvcEZy
YW1lLCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiYgc2NyaXB0Q2FsbEZyYW1lcykK
KyAgICA6IG1fdG9wRnJhbWUodG9wRnJhbWUpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0
YXRlKQoreworICAgIG1fc2NyaXB0Q2FsbEZyYW1lcy5zd2FwKHNjcmlwdENhbGxGcmFtZXMpOwor
fQorCitTY3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxsU3RhY2soKQoreworfQorCitjb25zdCBT
Y3JpcHRDYWxsRnJhbWUmIFNjcmlwdENhbGxTdGFjazo6YXQodW5zaWduZWQgaW5kZXgpCit7Cisg
ICAgaWYgKCFpbmRleCAmJiBtX3RvcEZyYW1lKQorICAgICAgICByZXR1cm4gKm1fdG9wRnJhbWU7
CisgICAgcmV0dXJuICptX3NjcmlwdENhbGxGcmFtZXMuYXQoaW5kZXgpOworfQorCit1bnNpZ25l
ZCBTY3JpcHRDYWxsU3RhY2s6OnNpemUoKQoreworICAgIGlmIChtX3NjcmlwdENhbGxGcmFtZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gbV9zY3JpcHRDYWxsRnJh
bWVzLnNpemUoKTsKK30KKworCitib29sIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZShpbnQg
ZnJhbWVMaW1pdCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3RhY2tUcmFjZSkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgaWYgKGNvbnRleHQuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwor
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6U3RhY2tUcmFjZT4gdHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1Ry
YWNlKGZyYW1lTGltaXQpKTsKKyAgICBpbnQgZnJhbWVDb3VudCA9IHRyYWNlLT5HZXRGcmFtZUNv
dW50KCk7CisgICAgaWYgKHRyYWNlLklzRW1wdHkoKSB8fCAhZnJhbWVDb3VudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lID0gdHJhY2UtPkdldEZy
YW1lKGkpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZU9iamVjdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBz
Y3JpcHROYW1lID0gZnJhbWUtPkdldFNjcmlwdE5hbWUoKTsKKyAgICAgICAgZnJhbWVPYmplY3Qt
PnNldFN0cmluZygic2NyaXB0TmFtZSIsIHNjcmlwdE5hbWUuSXNFbXB0eSgpID8gIiIgOiB0b1dl
YkNvcmVTdHJpbmcoc2NyaXB0TmFtZSkpOworICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4g
ZnVuY3Rpb25OYW1lID0gZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpOworICAgICAgICBmcmFtZU9i
amVjdC0+c2V0U3RyaW5nKCJmdW5jdGlvbk5hbWUiLCBmdW5jdGlvbk5hbWUuSXNFbXB0eSgpID8g
IiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lKSk7CisgICAgICAgIGZyYW1lT2JqZWN0
LT5zZXROdW1iZXIoImxpbmVOdW1iZXIiLCBmcmFtZS0+R2V0TGluZU51bWJlcigpKTsKKyAgICAg
ICAgZnJhbWVPYmplY3QtPnNldE51bWJlcigiY29sdW1uIiwgZnJhbWUtPkdldENvbHVtbigpKTsK
KyAgICAgICAgc3RhY2tUcmFjZS0+cHVzaE9iamVjdChmcmFtZU9iamVjdCk7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThlNTE5NQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTAsMCArMSw4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNjcmlwdENhbGxTdGFja19oCisjZGVmaW5lIFNjcmlwdENhbGxTdGFj
a19oCisKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgdjggeworICAgIGNsYXNz
IEFyZ3VtZW50czsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JB
cnJheTsKKworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgaW50IG1heENhbGxTdGFja1NpemVUb0NhcHR1cmU7Cisg
ICAgc3RhdGljIGNvbnN0IHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucyBzdGFja1Ry
YWNlT3B0aW9uczsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3Jl
YXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCA9IDAs
IGludCBmcmFtQ291bnRMaW1pdCA9IDEpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlKFNjcmlwdFN0YXRlKiwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4p
OworICAgIH5TY3JpcHRDYWxsU3RhY2soKTsKKworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhl
cmUgaXMgbm8gcnVubmluZyBKYXZhU2NyaXB0IG9yIGlmIGZldGNoaW5nIHRoZSBzdGFjayBmYWls
ZWQuCisgICAgLy8gU2V0cyBzdGFja1RyYWNlIHRvIGJlIGFuIGFycmF5IG9mIHN0YWNrIGZyYW1l
IG9iamVjdHMuCisgICAgLy8gQSBzdGFjayBmcmFtZSBvYmplY3QgbG9va3MgbGlrZToKKyAgICAv
LyB7CisgICAgLy8gICBzY3JpcHROYW1lOiA8ZmlsZSBuYW1lIGZvciB0aGUgYXNzb2NpYXRlZCBz
Y3JpcHQgcmVzb3VyY2U+CisgICAgLy8gICBmdW5jdGlvbk5hbWU6IDxuYW1lIG9mIHRoZSBKYXZh
U2NyaXB0IGZ1bmN0aW9uPgorICAgIC8vICAgbGluZU51bWJlcjogPDEgYmFzZWQgbGluZSBudW1i
ZXI+CisgICAgLy8gICBjb2x1bW46IDwxIGJhc2VkIGNvbHVtbiBvZmZzZXQgb24gdGhlIGxpbmU+
CisgICAgLy8gfQorICAgIHN0YXRpYyBib29sIHN0YWNrVHJhY2UoaW50IGZyYW1lTGltaXQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0YWNrVHJhY2UpOworCisgICAgY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lJiBhdCh1bnNpZ25lZCk7CisgICAgdW5zaWduZWQgc2l6ZSgpOworCisgICAg
U2NyaXB0U3RhdGUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQorICAg
IFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7
IH0KKworcHJpdmF0ZToKKyAgICBTY3JpcHRDYWxsU3RhY2soU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxGcmFtZT4gdG9wRnJhbWUsIFZlY3RvcjxPd25QdHI8
U2NyaXB0Q2FsbEZyYW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVzKTsKKyAgICBTY3JpcHRDYWxsU3Rh
Y2soU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBz
dGFja1RyYWNlKTsKKworICAgIE93blB0cjxTY3JpcHRDYWxsRnJhbWU+IG1fdG9wRnJhbWU7Cisg
ICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7CisgICAgVmVjdG9yPE93blB0cjxTY3JpcHRD
YWxsRnJhbWU+ID4gbV9zY3JpcHRDYWxsRnJhbWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MmZiZWVmLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0KLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIK
LSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKLSNpbmNsdWRlICJTY3JpcHRTY29wZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0j
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0KLSNpbmNsdWRlIDx2OC1kZWJ1Zy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTY3JpcHRDYWxsRnJhbWUgdG9TY3JpcHRDYWxsRnJhbWUo
djg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCi17Ci0gICAgU3RyaW5nIHNvdXJjZU5h
bWU7Ci0gICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNvdXJjZU5hbWVWYWx1ZShmcmFtZS0+R2V0
U2NyaXB0TmFtZU9yU291cmNlVVJMKCkpOwotICAgIGlmICghc291cmNlTmFtZVZhbHVlLklzRW1w
dHkoKSkKLSAgICAgICAgc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhzb3VyY2VOYW1lVmFs
dWUpOwotCi0gICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICB2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gZnVuY3Rpb25OYW1lVmFsdWUoZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpKTsKLSAgICBpZiAo
IWZ1bmN0aW9uTmFtZVZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgZnVuY3Rpb25OYW1lID0gdG9X
ZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZVZhbHVlKTsKLQotICAgIGludCBzb3VyY2VMaW5lTnVt
YmVyID0gZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKLSAgICByZXR1cm4gU2NyaXB0Q2FsbEZyYW1l
KGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNv
bnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIFZlY3RvcjxTY3Jp
cHRDYWxsRnJhbWU+JiBzY3JpcHRDYWxsRnJhbWVzLCBzaXplX3QgbWF4U3RhY2tTaXplKQotewot
ICAgIC8vIFRPRE8oeXVyeXMpOiByZW1vdmUgdGhpcz8/PwotICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgaW50IGZyYW1lQ291bnQgPSBzdGFja1RyYWNl
LT5HZXRGcmFtZUNvdW50KCk7Ci0gICAgaWYgKGZyYW1lQ291bnQgPiBzdGF0aWNfY2FzdDxpbnQ+
KG1heFN0YWNrU2l6ZSkpCi0gICAgICAgIGZyYW1lQ291bnQgPSBtYXhTdGFja1NpemU7Ci0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKLSAgICAgICAgdjg6OkxvY2Fs
PHY4OjpTdGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7Ci0g
ICAgICAgIHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJh
bWUpKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFmcmFtZUNvdW50KSB7Ci0gICAgICAgIC8vIFN1
Y2Nlc3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBidXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4g
SXQgbWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9yIGZvciBleGFtcGxlLgotICAg
ICAgICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBh
bmQgZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4KLSAgICAgICAgc2NyaXB0Q2FsbEZyYW1l
cy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKCJ1bmRlZmluZWQiLCAidW5kZWZpbmVkIiwgMCkpOwot
ICAgIH0KLX0KLQotUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxT
dGFjayh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNr
VHJhY2U+IHN0YWNrVHJhY2UsIHNpemVfdCBtYXhTdGFja1NpemUpCi17Ci0gICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4
dCk7Ci0KLSAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBzY3JpcHRDYWxsRnJhbWVzOwotICAg
IHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxs
RnJhbWVzLCBtYXhTdGFja1NpemUpOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKHNj
cmlwdENhbGxGcmFtZXMpOwotfQotCi1QYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUpCi17Ci0gICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250
ZXh0OjpHZXRDdXJyZW50KCk7Ci0gICAgLy8gVE9ETyh5dXJ5cyk6IHJlbW92ZT8KLSAgICB2ODo6
Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6
OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNl
KG1heFN0YWNrU2l6ZSwgc3RhY2tUcmFjZU9wdGlvbnMpKTsKLSAgICByZXR1cm4gY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKGNvbnRleHQsIHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSk7Ci19Ci0KLVBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQotewot
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNv
bnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwotICAgIFNjcmlwdFN0YXRlKiBzdGF0
ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpOwotCi0gICAgVmVjdG9yPFNjcmlw
dFZhbHVlPiBhcmd1bWVudHM7Ci0gICAgZm9yIChpbnQgaSA9IHNraXBBcmd1bWVudENvdW50OyBp
IDwgdjhhcmd1bWVudHMuTGVuZ3RoKCk7ICsraSkKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChT
Y3JpcHRWYWx1ZSh2OGFyZ3VtZW50c1tpXSkpOwotCi0gICAgcmV0dXJuIG5ldyBTY3JpcHRBcmd1
bWVudHMoc3RhdGUsIGFyZ3VtZW50cyk7Ci19Ci0KLWJvb2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFj
a1RyYWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFj
a1RyYWNlKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKCF2ODo6Q29udGV4dDo6
SW5Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKLSAgICBpZiAoY29u
dGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlU2Nv
cGUgc2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiB0cmFjZSh2ODo6U3RhY2tUcmFjZTo6Q3Vy
cmVudFN0YWNrVHJhY2UoZnJhbWVMaW1pdCkpOwotICAgIGludCBmcmFtZUNvdW50ID0gdHJhY2Ut
PkdldEZyYW1lQ291bnQoKTsKLSAgICBpZiAodHJhY2UuSXNFbXB0eSgpIHx8ICFmcmFtZUNvdW50
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNv
dW50OyArK2kpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSB0
cmFjZS0+R2V0RnJhbWUoaSk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1l
T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgdjg6OkxvY2FsPHY4
OjpTdHJpbmc+IHNjcmlwdE5hbWUgPSBmcmFtZS0+R2V0U2NyaXB0TmFtZSgpOwotICAgICAgICBm
cmFtZU9iamVjdC0+c2V0U3RyaW5nKCJzY3JpcHROYW1lIiwgc2NyaXB0TmFtZS5Jc0VtcHR5KCkg
PyAiIiA6IHRvV2ViQ29yZVN0cmluZyhzY3JpcHROYW1lKSk7Ci0gICAgICAgIHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBmdW5jdGlvbk5hbWUgPSBmcmFtZS0+R2V0RnVuY3Rpb25OYW1lKCk7Ci0gICAg
ICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIGZ1bmN0aW9uTmFtZS5J
c0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5hbWUpKTsKLSAgICAgICAg
ZnJhbWVPYmplY3QtPnNldE51bWJlcigibGluZU51bWJlciIsIGZyYW1lLT5HZXRMaW5lTnVtYmVy
KCkpOwotICAgICAgICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJjb2x1bW4iLCBmcmFtZS0+R2V0
Q29sdW1uKCkpOwotICAgICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTNh
ZjdiLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
YykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeV9oCi0jZGVmaW5lIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaAotCi0jaW5j
bHVkZSA8djguaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFNjcmlwdFN0YXRlOwotCi1jb25zdCB2ODo6U3RhY2tUcmFjZTo6U3Rh
Y2tUcmFjZU9wdGlvbnMgc3RhY2tUcmFjZU9wdGlvbnMgPSBzdGF0aWNfY2FzdDx2ODo6U3RhY2tU
cmFjZTo6U3RhY2tUcmFjZU9wdGlvbnM+KAotICAgICAgdjg6OlN0YWNrVHJhY2U6OmtMaW5lTnVt
YmVyCi0gICAgfCB2ODo6U3RhY2tUcmFjZTo6a0NvbHVtbk9mZnNldAotICAgIHwgdjg6OlN0YWNr
VHJhY2U6OmtTY3JpcHROYW1lT3JTb3VyY2VVUkwKLSAgICB8IHY4OjpTdGFja1RyYWNlOjprRnVu
Y3Rpb25OYW1lKTsKLQotY2xhc3MgU2NyaXB0QXJndW1lbnRzOwotY2xhc3MgU2NyaXB0Q2FsbFN0
YWNrOwotCi1QYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KHY4OjpMb2NhbDx2ODo6Q29udGV4dD4sIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+LCBzaXpl
X3QgbWF4U3RhY2tTaXplKTsKLVBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soc2l6ZV90IG1heFN0YWNrU2l6ZSk7Ci1QYXNzT3duUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKGNvbnN0IHY4OjpBcmd1bWVudHMmIHY4YXJndW1l
bnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZmEzN2MzOC4uNDkwNGE0ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtNDY5LDcgKzQ2OCw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbChib29sKQogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4
Y2VwdGlvbnMoYm9vbCB2YWx1ZSkKIHsKLSAgICB2ODo6Vjg6OlNldENhcHR1cmVTdGFja1RyYWNl
Rm9yVW5jYXVnaHRFeGNlcHRpb25zKHZhbHVlLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFj
a1NpemVUb0NhcHR1cmUsIHN0YWNrVHJhY2VPcHRpb25zKTsKKyAgICB2ODo6Vjg6OlNldENhcHR1
cmVTdGFja1RyYWNlRm9yVW5jYXVnaHRFeGNlcHRpb25zKHZhbHVlLCBTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZU9w
dGlvbnMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0U3RhdGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAppbmRleCAxMTgx
M2IwLi5jZTM1MGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRl
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCkBAIC05NSw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY29udGV4dC5DbGVhcigpOwogICAgICAgICB9CiAg
ICAgfQotICAgIFNjcmlwdFN0YXRlKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRl
OyB9CisgICAgU2NyaXB0U3RhdGUqIGdldCgpIHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KIHBy
aXZhdGU6CiAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhDb25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1l
c3NhZ2UuY3BwCmluZGV4IDQwZjlhN2EuLjhiNmJiMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OENvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk93blB0ci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgogCkBAIC0xMTgsMTcgKzExNywxOCBAQCB2b2lkIFY4Q29uc29s
ZU1lc3NhZ2U6OmhhbmRsZXIodjg6OkhhbmRsZTx2ODo6TWVzc2FnZT4gbWVzc2FnZSwgdjg6Okhh
bmRsZTx2ODo6VgogICAgIC8vIEN1cnJlbnRseSBzdGFjayB0cmFjZSBpcyBvbmx5IGNvbGxlY3Rl
ZCB3aGVuIGluc3BlY3RvciBpcyBvcGVuLgogICAgIGlmICghc3RhY2tUcmFjZS5Jc0VtcHR5KCkg
JiYgc3RhY2tUcmFjZS0+R2V0RnJhbWVDb3VudCgpID4gMCkgewogICAgICAgICB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpOwotICAgICAg
ICBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soY29udGV4dCwgc3RhY2tUcmFjZSwg
U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKyAgICAgICAgU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoY29udGV4dCk7
CisgICAgICAgIGNhbGxTdGFjayA9IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKHNjcmlwdFN0YXRl
LCBzdGFja1RyYWNlKTsKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzb3Vy
Y2VOYW1lID0gbWVzc2FnZS0+R2V0U2NyaXB0UmVzb3VyY2VOYW1lKCk7CiAgICAgYm9vbCB1c2VV
UkwgPSByZXNvdXJjZU5hbWUuSXNFbXB0eSgpIHx8ICFyZXNvdXJjZU5hbWUtPklzU3RyaW5nKCk7
CiAgICAgU3RyaW5nIHJlc291cmNlTmFtZVN0cmluZyA9IHVzZVVSTCA/IGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSA6IHRvV2ViQ29yZVN0cmluZyhyZXNvdXJjZU5hbWUpOwogICAgIFY4Q29uc29s
ZU1lc3NhZ2UgY29uc29sZU1lc3NhZ2UoZXJyb3JNZXNzYWdlLCByZXNvdXJjZU5hbWVTdHJpbmcs
IG1lc3NhZ2UtPkdldExpbmVOdW1iZXIoKSk7Ci0gICAgY29uc29sZU1lc3NhZ2UuZGlzcGF0Y2hO
b3cocGFnZSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CisgICAgY29uc29sZU1lc3NhZ2UuZGlzcGF0
Y2hOb3cocGFnZSwgY2FsbFN0YWNrLmdldCgpKTsKIH0KIAotdm9pZCBWOENvbnNvbGVNZXNzYWdl
OjpkaXNwYXRjaE5vdyhQYWdlKiBwYWdlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKQordm9pZCBWOENvbnNvbGVNZXNzYWdlOjpkaXNwYXRjaE5vdyhQYWdlKiBwYWdlLCBT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICAgICBBU1NFUlQocGFnZSk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmgKaW5kZXggNmI4OTJkZC4uMzg3YjVlZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8djguaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODIsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyBtX3NvdXJjZUlEOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBtX2xpbmVOdW1i
ZXI7CiAKLSAgICAgICAgdm9pZCBkaXNwYXRjaE5vdyhQYWdlKiwgUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+KTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE5vdyhQYWdlKiwgU2NyaXB0Q2FsbFN0
YWNrKik7CiAKICAgICAgICAgLy8gQWxsIGRlbGF5ZWQgbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB0
aGlzIHZlY3Rvci4gSWYgdGhlIHZlY3RvcgogICAgICAgICAvLyBpcyAwLCB0aGVyZSBhcmUgbm8g
ZGVsYXllZCBtZXNzYWdlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNv
bGVDdXN0b20uY3BwCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggYjE3Yjhl
OS4uZmM4M2I2MQotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0
b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5j
cHAKQEAgLTMzLDEyICszMyw5IEBACiAjaW5jbHVkZSAiVjhDb25zb2xlLmgiCiAKICNpbmNsdWRl
ICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhT
Y3JpcHRQcm9maWxlLmgiCiAKQEAgLTY1LDkgKzYyLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5Db25zb2xlLnRyYWNlQ2FsbGJhY2siKTsKICAgICBDb25zb2xl
KiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIE93blB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2Fs
bFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7Ci0gICAgT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7
Ci0gICAgaW1wLT50cmFjZShzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVs
ZWFzZSgpKTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICB2ODo6TG9jYWw8
djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNr
VHJhY2UoU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBTY3JpcHRD
YWxsU3RhY2s6OnN0YWNrVHJhY2VPcHRpb25zKTsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHN0YWNrVHJh
Y2UpKTsKKyAgICBpbXAtPnRyYWNlKGNhbGxTdGFjay5nZXQoKSk7CiAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpOwogfQogCkBAIC03NSwzNCArNzQsOSBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDb25zb2xlOjphc3NlcnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUuYXNzZXJ0Q2FsbGJhY2siKTsKICAg
ICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAg
IE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2so
U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CisgICAgT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGFyZ3Ms
IDEsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSkpOwogICAgIGJv
b2wgY29uZGl0aW9uID0gYXJnc1swXS0+Qm9vbGVhblZhbHVlKCk7Ci0gICAgT3duUHRyPFNjcmlw
dEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAx
KSk7Ci0gICAgaW1wLT5hc3NlcnRDb25kaXRpb24oY29uZGl0aW9uLCBzY3JpcHRBcmd1bWVudHMu
cmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2Zp
bGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygi
RE9NLkNvbnNvbGUucHJvZmlsZSIpOwotICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjaygxKSk7Ci0gICAgaWYgKCFjYWxsU3RhY2spCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRs
ZSwgYXJnc1swXSk7Ci0gICAgaW1wLT5wcm9maWxlKHRpdGxlLCBTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVFbmRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9N
LkNvbnNvbGUucHJvZmlsZUVuZCIpOwotICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjaygxKSk7Ci0gICAgaWYgKCFjYWxsU3RhY2spCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRs
ZSwgYXJnc1swXSk7Ci0gICAgaW1wLT5wcm9maWxlRW5kKHRpdGxlLCBTY3JpcHRTdGF0ZTo6Y3Vy
cmVudCgpLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKKyAgICBpbXAtPmFzc2VydENvbmRpdGlvbihj
b25kaXRpb24sIGNhbGxTdGFjay5nZXQoKSk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmggYi9XZWJD
b3JlL2RvbS9Ob2RlRmlsdGVyLmgKaW5kZXggNWNlMjg2Ni4uZDIwMjJiYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vTm9kZUZpbHRlci5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaApA
QCAtMjUsNyArMjUsNiBAQAogI2lmbmRlZiBOb2RlRmlsdGVyX2gKICNkZWZpbmUgTm9kZUZpbHRl
cl9oCiAKLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVy
Q29uZGl0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAKaW5kZXggMDMyODNiZi4uNjc5MzBjZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcApAQCAtMzMsMTUgKzMzLDQ2IEBACiAKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6Q2Fs
bEZyYW1lKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgZnJhbWUpCisgICAgOiBtX2Z1bmN0aW9uTmFt
ZShmcmFtZS5mdW5jdGlvbk5hbWUoKSkKKyAgICAsIG1fc291cmNlVVJMKGZyYW1lLnNvdXJjZVVS
TCgpKQorICAgICwgbV9saW5lTnVtYmVyKGZyYW1lLmxpbmVOdW1iZXIoKSkKK3sKK30KKworQ29u
c29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6Q2FsbEZyYW1lKCkKKyAgICA6IG1fbGluZU51bWJlcigw
KQoreworfQorCitib29sIENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3Qg
Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZSYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mdW5j
dGlvbk5hbWUgPT0gby5tX2Z1bmN0aW9uTmFtZQorICAgICAgICAmJiBtX3NvdXJjZVVSTCA9PSBv
Lm1fc291cmNlVVJMCisgICAgICAgICYmIG1fbGluZU51bWJlciA9PSBvLm1fbGluZU51bWJlcjsK
K30KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAor
eworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1lID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKKyAgICBmcmFtZS0+c2V0U3RyaW5nKCJmdW5jdGlvbk5hbWUiLCBtX2Z1bmN0aW9u
TmFtZSk7CisgICAgZnJhbWUtPnNldFN0cmluZygic291cmNlVVJMIiwgbV9zb3VyY2VVUkwpOwor
ICAgIGZyYW1lLT5zZXROdW1iZXIoImxpbmVOdW1iZXIiLCBtX2xpbmVOdW1iZXIpOworICAgIHJl
dHVybiBmcmFtZTsKK30KKyNlbmRpZgorCiBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3Ry
aW5nJiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1LCB1bnNpZ25lZCBnKQogICAgIDog
bV9zb3VyY2UocykKICAgICAsIG1fdHlwZSh0KQpAQCAtNTQsMjYgKzg1LDM1IEBAIENvbnNvbGVN
ZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1l
c3NhZ2VMZXZlbCBsLCBjCiB7CiB9CiAKLUNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBTdHJp
bmcmIG0sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIHVuc2lnbmVkIGcpCitDb25zb2xlTWVzc2FnZTo6
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2
ZWwgbCwgY29uc3QgU3RyaW5nJiBtLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgdW5zaWdu
ZWQgZywgYm9vbCBzdG9yZVRyYWNlKQogICAgIDogbV9zb3VyY2UocykKICAgICAsIG1fdHlwZSh0
KQogICAgICwgbV9sZXZlbChsKQogICAgICwgbV9tZXNzYWdlKG0pCi0gICAgLCBtX2FyZ3VtZW50
cyhhcmd1bWVudHMpCi0gICAgLCBtX2NhbGxTdGFjayhjYWxsU3RhY2spCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICAsIG1fYXJndW1lbnRzKGNhbGxTdGFjay0+YXQoMCkuYXJndW1lbnRDb3Vu
dCgpKQorICAgICwgbV9zY3JpcHRTdGF0ZShjYWxsU3RhY2stPmdsb2JhbFN0YXRlKCkpCisjZW5k
aWYKKyAgICAsIG1fZnJhbWVzKHN0b3JlVHJhY2UgPyBjYWxsU3RhY2stPnNpemUoKSA6IDApCiAg
ICAgLCBtX2dyb3VwTGV2ZWwoZykKICAgICAsIG1fcmVwZWF0Q291bnQoMSkKIHsKLSAgICBjb25z
dCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBtX2NhbGxTdGFjay0+YXQoMCk7CisgICAg
Y29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKICAg
ICBtX2xpbmUgPSBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKTsKICAgICBtX3VybCA9IGxhc3RDYWxs
ZXIuc291cmNlVVJMKCk7CiAKKyAgICBpZiAoc3RvcmVUcmFjZSkgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2FsbFN0YWNrLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1f
ZnJhbWVzW2ldID0gQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZShjYWxsU3RhY2stPmF0KGkpKTsK
KyAgICB9CiAKLSAgICBib29sIHN0b3JlVHJhY2UgPSAodCA9PSBUcmFjZU1lc3NhZ2VUeXBlIHx8
IHQgPT0gVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlwZSB8fCB0ID09IEFzc2VydE1lc3NhZ2VU
eXBlKTsKLSAgICBpZiAoIXN0b3JlVHJhY2UpCi0gICAgICAgIG1fY2FsbFN0YWNrLmNsZWFyKCk7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFz
dENhbGxlci5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgbV9hcmd1bWVudHNbaV0gPSBs
YXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSk7CisjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCiB7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9iaiA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CkBAIC04NSwxMiArMTI1LDEyIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvCiAgICAg
anNvbk9iai0+c2V0TnVtYmVyKCJncm91cExldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3Vw
TGV2ZWwpKTsKICAgICBqc29uT2JqLT5zZXROdW1iZXIoInJlcGVhdENvdW50Iiwgc3RhdGljX2Nh
c3Q8aW50PihtX3JlcGVhdENvdW50KSk7CiAgICAganNvbk9iai0+c2V0U3RyaW5nKCJtZXNzYWdl
IiwgbV9tZXNzYWdlKTsKLSAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3Vt
ZW50Q291bnQoKSkgewotICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGlu
amVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmdsb2JhbFN0
YXRlKCkpOworICAgIGlmICghbV9hcmd1bWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNj
cmlwdEZvcihtX3NjcmlwdFN0YXRlLmdldCgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4ganNv
bkFyZ3MgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGluamVj
dGVkU2NyaXB0LndyYXBGb3JDb25zb2xlKG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFs
dWUgPSBpbmplY3RlZFNjcmlwdC53cmFwRm9yQ29uc29sZShtX2FyZ3VtZW50c1tpXSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAw
LDggKzE0MCwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgICAgICAgICAganNvbk9i
ai0+c2V0QXJyYXkoInBhcmFtZXRlcnMiLCBqc29uQXJncyk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgaWYgKG1fY2FsbFN0YWNrKQotICAgICAgICBqc29uT2JqLT5zZXRBcnJheSgic3RhY2tUcmFj
ZSIsIG1fY2FsbFN0YWNrLT5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKKyAgICBpZiAoIW1fZnJh
bWVzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGZyYW1lcyA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZnJhbWVzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZnJhbWVzLT5wdXNoT2JqZWN0
KG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOworICAgICAgICBqc29uT2Jq
LT5zZXRBcnJheSgic3RhY2tUcmFjZSIsIGZyYW1lcyk7CisgICAgfQogICAgIGZyb250ZW5kLT5h
ZGRDb25zb2xlTWVzc2FnZShqc29uT2JqKTsKIH0KIApAQCAtMTA5LDIxICsxNTMsMzMgQEAgdm9p
ZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kKQogewogICAgIGZyb250ZW5kLT51cGRhdGVDb25zb2xlTWVzc2FnZVJl
cGVhdENvdW50KG1fcmVwZWF0Q291bnQpOwogfQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CiAKIGJvb2wgQ29uc29sZU1lc3NhZ2U6OmlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29u
c3QKIHsKLSAgICBpZiAobV9hcmd1bWVudHMpIHsKLSAgICAgICAgaWYgKCFtX2FyZ3VtZW50cy0+
aXNFcXVhbChtc2ctPm1fYXJndW1lbnRzLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9IGVsc2UgaWYgKG1zZy0+bV9hcmd1bWVudHMpCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAobXNnLT5tX2FyZ3VtZW50cy5zaXplKCkgIT0gbV9hcmd1bWVudHMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtc2ctPm1fc2NyaXB0U3RhdGUuZ2V0
KCkgJiYgbXNnLT5tX2FyZ3VtZW50cy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBpZiAobV9jYWxsU3Rh
Y2spIHsKLSAgICAgICAgaWYgKCFtX2NhbGxTdGFjay0+aXNFcXVhbChtc2ctPm1fY2FsbFN0YWNr
LmdldCgpKSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmICghbV9hcmd1bWVudHNbaV0uaXNFcXVhbChtc2ctPm1fc2NyaXB0
U3RhdGUuZ2V0KCksIG1zZy0+bV9hcmd1bWVudHNbaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0gZWxzZSBpZiAobXNnLT5tX2NhbGxTdGFjaykKKyAgICB9CisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKKworICAgIHNpemVfdCBmcmFtZUNvdW50ID0gbXNnLT5tX2ZyYW1l
cy5zaXplKCk7CisgICAgaWYgKGZyYW1lQ291bnQgIT0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7
ICsraSkgeworICAgICAgICBpZiAoIW1fZnJhbWVzW2ldLmlzRXF1YWwobXNnLT5tX2ZyYW1lc1tp
XSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIG1zZy0+
bV9zb3VyY2UgPT0gbV9zb3VyY2UKICAgICAgICAgJiYgbXNnLT5tX3R5cGUgPT0gbV90eXBlCiAg
ICAgICAgICYmIG1zZy0+bV9sZXZlbCA9PSBtX2xldmVsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuaAppbmRleCA0ZTg4YmVjLi42YzNmMmM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExp
bGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDE2ICszMiwxNSBAQAogI2RlZmluZSBDb25zb2xlTWVzc2FnZV9oCiAKICNp
bmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBTY3Jp
cHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBTY3JpcHRDYWxsU3Rh
Y2s7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKQEAgLTQ5LDEwICs0OCwxMiBAQCBjbGFzcyBTY3JpcHRW
YWx1ZTsKIGNsYXNzIENvbnNvbGVNZXNzYWdlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1Ymxp
YzoKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVu
c2lnbmVkIGcpOwotICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4sIHVuc2lnbmVkIGcpOworICAgIENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbSwgU2NyaXB0Q2FsbFN0YWNrKiwgdW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNl
ID0gZmFsc2UpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICB2b2lkIGFkZFRvRnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKICAgICB2b2lkIHVw
ZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7Cisj
ZW5kaWYKICAgICB2b2lkIGluY3JlbWVudENvdW50KCkgeyArK21fcmVwZWF0Q291bnQ7IH0KICAg
ICBib29sIGlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3Q7CiAKQEAgLTYwLDEyICs2
MSwzMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9tZXNzYWdlOyB9CiAKIHByaXZhdGU6CisgICAgY2xhc3MgQ2FsbEZyYW1lIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGV4cGxpY2l0IENhbGxGcmFtZShjb25zdCBTY3JpcHRDYWxsRnJhbWUm
IGZyYW1lKTsKKyAgICAgICAgQ2FsbEZyYW1lKCk7CisgICAgICAgIGJvb2wgaXNFcXVhbChjb25z
dCBDYWxsRnJhbWUmIG8pIGNvbnN0OworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0Owor
I2VuZGlmCisKKyAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmcgbV9mdW5jdGlvbk5hbWU7Cisg
ICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTDsKKyAgICAgICAgdW5zaWduZWQgbV9saW5lTnVtYmVy
OworICAgIH07CisKICAgICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAgIE1lc3NhZ2VUeXBl
IG1fdHlwZTsKICAgICBNZXNzYWdlTGV2ZWwgbV9sZXZlbDsKICAgICBTdHJpbmcgbV9tZXNzYWdl
OwotICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IG1fYXJndW1lbnRzOwotICAgIE93blB0cjxT
Y3JpcHRDYWxsU3RhY2s+IG1fY2FsbFN0YWNrOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
VmVjdG9yPFNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKKyAgICBTY3JpcHRTdGF0ZVByb3RlY3Rl
ZFB0ciBtX3NjcmlwdFN0YXRlOworI2VuZGlmCisgICAgVmVjdG9yPENhbGxGcmFtZT4gbV9mcmFt
ZXM7CiAgICAgdW5zaWduZWQgbV9saW5lOwogICAgIFN0cmluZyBtX3VybDsKICAgICB1bnNpZ25l
ZCBtX2dyb3VwTGV2ZWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IGEwOTM0Y2QuLjAwYTExNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC04Miw3ICs4Miw2IEBACiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgpAQCAtMzQwLDEyICszMzksMTMgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgbV9jb25z
b2xlTWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSwgbV9pbmplY3Rl
ZFNjcmlwdEhvc3QuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlw
dEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
aWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZENvbnNvbGVNZXNzYWdl
KG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVu
dHMsIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CisgICAgYm9vbCBzdG9yZVN0YWNrVHJhY2Ug
PSB0eXBlID09IFRyYWNlTWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBVbmNhdWdodEV4Y2VwdGlvbk1l
c3NhZ2VUeXBlIHx8IHR5cGUgPT0gQXNzZXJ0TWVzc2FnZVR5cGU7CisgICAgYWRkQ29uc29sZU1l
c3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNh
bGxTdGFjaywgbV9ncm91cExldmVsLCBzdG9yZVN0YWNrVHJhY2UpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKQEAgLTM5
MSwxMSArMzkxLDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVz
c2FnZXMoKQogICAgICAgICBtX2Zyb250ZW5kLT5jb25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChQYXNzT3duUHRyPFNjcmlw
dEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrLCBib29sIGNvbGxhcHNlZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91
cChNZXNzYWdlU291cmNlIHNvdXJjZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIGJvb2wg
Y29sbGFwc2VkKQogewogICAgICsrbV9ncm91cExldmVsOwogCi0gICAgYWRkQ29uc29sZU1lc3Nh
Z2UobmV3IENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgY29sbGFwc2VkID8gU3RhcnRH
cm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dNZXNz
YWdlTGV2ZWwsICIiLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CisgICAg
YWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgY29sbGFwc2VkID8g
U3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBM
b2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBjYWxsU3RhY2ssIG1fZ3JvdXBMZXZlbCkpOwogfQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2OGFhMTQ3Li42ZDRkOWUwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04MSw3ICs4MSw2IEBAIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNj
cmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CkBAIC0xNDYsOCArMTQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5k
KCk7CiAKICAgICB2b2lkIHNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBi
b29sKiBuZXdTdGF0ZSk7Ci0gICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFz
c093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxs
U3RhY2s+KTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNr
KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKICAg
ICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAgICAgY29uc3QgVmVjdG9yPE93blB0cjxD
b25zb2xlTWVzc2FnZT4gPiYgY29uc29sZU1lc3NhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9jb25z
b2xlTWVzc2FnZXM7IH0KIApAQCAtMjMzLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
YXJ0VGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIGJvb2wgc3RvcFRpbWluZyhjb25z
dCBTdHJpbmcmIHRpdGxlLCBkb3VibGUmIGVsYXBzZWQpOwogCi0gICAgdm9pZCBzdGFydEdyb3Vw
KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxGcmFtZSwgYm9vbCBjb2xsYXBzZWQgPSBmYWxzZSk7CisgICAgdm9pZCBzdGFydEdyb3Vw
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxGcmFtZSwgYm9vbCBj
b2xsYXBzZWQgPSBmYWxzZSk7CiAgICAgdm9pZCBlbmRHcm91cChNZXNzYWdlU291cmNlIHNvdXJj
ZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCiAgICAg
dm9pZCBtYXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzBlMTM1
Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgotCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1TY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKLSAg
ICA6IG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci0gICAgbV9hcmd1bWVudHMuc3dhcChh
cmd1bWVudHMpOwotfQotCi1TY3JpcHRBcmd1bWVudHM6On5TY3JpcHRBcmd1bWVudHMoKQotewot
fQotCi1jb25zdCBTY3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVf
dCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgp
OwotICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07Ci19Ci0KLVNjcmlwdFN0YXRlKiBTY3Jp
cHRBcmd1bWVudHM6Omdsb2JhbFN0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRT
dGF0ZS5nZXQoKTsKLX0KLQotYm9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyhTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCkKLXsK
LSAgICBpZiAoIWFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Y29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRBdCgwKTsKLSAgICBpZiAoY2hlY2tG
b3JOdWxsT3JVbmRlZmluZWQgJiYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVk
KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWdsb2JhbFN0YXRlKCkpIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICByZXN1bHQgPSB2YWx1ZS50b1N0cmluZyhnbG9iYWxTdGF0ZSgpKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTY3JpcHRBcmd1bWVudHM6OmlzRXF1YWwoU2NyaXB0QXJn
dW1lbnRzKiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAoIW90aGVyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAobV9hcmd1bWVudHMuc2l6ZSgpICE9IG90aGVyLT5tX2FyZ3VtZW50
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWdsb2JhbFN0YXRlKCkg
JiYgbV9hcmd1bWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
ICghbV9hcmd1bWVudHNbaV0uaXNFcXVhbChvdGhlci0+Z2xvYmFsU3RhdGUoKSwgb3RoZXItPm1f
YXJndW1lbnRzW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjA1YWIuLjAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRBcmd1bWVudHNfaAotI2RlZmluZSBT
Y3JpcHRBcmd1bWVudHNfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY3JpcHRWYWx1ZTsKLQotY2xhc3MgU2NyaXB0QXJndW1lbnRzIHsK
LXB1YmxpYzoKLSAgICBTY3JpcHRBcmd1bWVudHMoU2NyaXB0U3RhdGUqLCBWZWN0b3I8U2NyaXB0
VmFsdWU+JiBhcmd1bWVudHMpOwotICAgIH5TY3JpcHRBcmd1bWVudHMoKTsKLQotICAgIGNvbnN0
IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHNpemVfdCkgY29uc3Q7Ci0gICAgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50cy5zaXplKCk7IH0KLQotICAgIFNj
cmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0OwotCi0gICAgYm9vbCBnZXRGaXJzdEFyZ3Vt
ZW50QXNTdHJpbmcoV1RGOjpTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVm
aW5lZCA9IGZhbHNlKTsKLSAgICBib29sIGlzRXF1YWwoU2NyaXB0QXJndW1lbnRzKikgY29uc3Q7
Ci0KLXByaXZhdGU6Ci0gICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRTdGF0ZTsK
LSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyaXB0QXJndW1lbnRzX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDU1ZDI1
Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjcmlwdENh
bGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgdW5zaWduZWQgbGluZU51bWJlcikKLSAgICA6IG1fZnVuY3Rp
b25OYW1lKGZ1bmN0aW9uTmFtZSkKLSAgICAsIG1fc291cmNlVVJMKHVybFN0cmluZykKLSAgICAs
IG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQotewotfQotCi1TY3JpcHRDYWxsRnJhbWU6On5TY3Jp
cHRDYWxsRnJhbWUoKQotewotfQotCi1ib29sIFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25z
dCBTY3JpcHRDYWxsRnJhbWUmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnVuY3Rpb25OYW1l
ID09IG8ubV9mdW5jdGlvbk5hbWUKLSAgICAgICAgJiYgbV9zb3VyY2VVUkwgPT0gby5tX3NvdXJj
ZVVSTAotICAgICAgICAmJiBtX2xpbmVOdW1iZXIgPT0gby5tX2xpbmVOdW1iZXI7Ci19Ci0KLVBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9y
T2JqZWN0KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZnJhbWUtPnNldFN0cmluZygiZnVuY3Rpb25O
YW1lIiwgbV9mdW5jdGlvbk5hbWUpOwotICAgIGZyYW1lLT5zZXRTdHJpbmcoInNvdXJjZVVSTCIs
IG1fc291cmNlVVJMKTsKLSAgICBmcmFtZS0+c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgbV9saW5l
TnVtYmVyKTsKLSAgICByZXR1cm4gZnJhbWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYwZDc3ZTEuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZy
YW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChj
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxs
RnJhbWVfaAotI2RlZmluZSBTY3JpcHRDYWxsRnJhbWVfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLQotY2xhc3MgU2NyaXB0Q2FsbEZyYW1lICB7
Ci1wdWJsaWM6Ci0gICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdW5zaWduZWQgbGluZU51bWJlcik7Ci0gICAgflNj
cmlwdENhbGxGcmFtZSgpOwotCi0gICAgY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KLSAgICB1bnNpZ25lZCBsaW5lTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0KLSAgICBib29sIGlzRXF1YWwoY29u
c3QgU2NyaXB0Q2FsbEZyYW1lJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5n
IG1fZnVuY3Rpb25OYW1lOwotICAgIFN0cmluZyBtX3NvdXJjZVVSTDsKLSAgICB1bnNpZ25lZCBt
X2xpbmVOdW1iZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBT
Y3JpcHRDYWxsRnJhbWVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMDEwYmIuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICog
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgot
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4m
IGZyYW1lcykKLXsKLSAgICBtX2ZyYW1lcy5zd2FwKGZyYW1lcyk7Ci19Ci0KLVNjcmlwdENhbGxT
dGFjazo6flNjcmlwdENhbGxTdGFjaygpCi17Ci19Ci0KLWNvbnN0IFNjcmlwdENhbGxGcmFtZSAm
U2NyaXB0Q2FsbFN0YWNrOjphdChzaXplX3QgaW5kZXgpCi17Ci0gICAgQVNTRVJUKG1fZnJhbWVz
LnNpemUoKSA+IGluZGV4KTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdOwotfQotCi1zaXpl
X3QgU2NyaXB0Q2FsbFN0YWNrOjpzaXplKCkKLXsKLSAgICByZXR1cm4gbV9mcmFtZXMuc2l6ZSgp
OwotfQotCi1ib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8p
IGNvbnN0Ci17Ci0gICAgaWYgKCFvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXpl
X3QgZnJhbWVDb3VudCA9IG8tPm1fZnJhbWVzLnNpemUoKTsKLSAgICBpZiAoZnJhbWVDb3VudCAh
PSBtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmICghbV9mcmFtZXNb
aV0uaXNFcXVhbChvLT5tX2ZyYW1lc1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAotewotICAgIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gZnJhbWVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCi0gICAgICAg
IGZyYW1lcy0+cHVzaE9iamVjdChtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgp
KTsKLSAgICByZXR1cm4gZnJhbWVzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
NGM2YmJhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAw
OCwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2Fs
bFN0YWNrX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrX2gKLQotI2luY2x1ZGUgIlNjcmlwdENh
bGxGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsK
LQotY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgPSAyMDA7
Ci0KLSAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mKTsKLSAgICB+
U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHNpemVf
dCk7Ci0gICAgc2l6ZV90IHNpemUoKTsKLSAgICBzdGF0aWMgYm9vbCBzdGFja1RyYWNlKGludCwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOwotCi0gICAgYm9vbCBpc0VxdWFsKFNjcmlw
dENhbGxTdGFjayopIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxk
SW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFNjcmlwdENh
bGxGcmFtZT4gbV9mcmFtZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBTY3JpcHRDYWxsU3RhY2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IDZmYmYyNTMuLjJkNGNjOTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCkBAIC03OCw2ICs3NywxOSBAQCBzdGF0aWMgdm9p
ZCBwcmludFNvdXJjZVVSTEFuZExpbmUoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVk
IGxpbmVOdW1iZXIpCiAgICAgfQogfQogCitzdGF0aWMgYm9vbCBnZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNh
bGxGcmFtZSwgU3RyaW5nJiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsT3JVbmRlZmluZWQgPSBm
YWxzZSkKK3sKKyAgICBpZiAoIWNhbGxGcmFtZS5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSA9IGNhbGxGcmFtZS5h
cmd1bWVudEF0KDApOworICAgIGlmIChjaGVja0Zvck51bGxPclVuZGVmaW5lZCAmJiAodmFsdWUu
aXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJlc3VsdCA9IHZhbHVlLnRvU3RyaW5nKHNjcmlwdFN0YXRlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCkKIHsKICAgICBjb25zdCBj
aGFyKiBzb3VyY2VTdHJpbmc7CkBAIC0xMzIsMTIgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIHByaW50
TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwKICAgICBwcmludGYoIiVzICVzOiIsIHNvdXJjZVN0cmluZywgbGV2ZWxTdHJpbmcpOwog
fQogCi12b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBhZGRN
ZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCwgMCk7Ci19Ci0KLXZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNz
T3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjphZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewogICAgIFBh
Z2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTQ4LDcgKzE1NSw3
IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxlCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IGlmIChjYWxsU3RhY2spCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRk
TWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCAwLCBjYWxsU3Rh
Y2spOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0YWNrLCBtZXNzYWdlKTsKICAgICBlbHNl
CiAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwog
I2VuZGlmCkBAIC0xNjIsNyArMTY5LDcgQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGUKICAgICBw
cmludGYoIiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBDb25zb2xl
OjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2ssIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMpCit2b2lkIENvbnNvbGU6OmFk
ZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaywgYm9vbCBhY2NlcHROb0FyZ3VtZW50cykKIHsKICAgICBQYWdlKiBw
YWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTE3MCwxNSArMTc3LDE1IEBA
IHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIFBhc3NPd25QdHI8U2NyaXB0CiAKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxh
c3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwogCi0gICAgaWYgKCFhY2NlcHROb0FyZ3VtZW50
cyAmJiAhYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpCisgICAgaWYgKCFhY2NlcHROb0FyZ3Vt
ZW50cyAmJiAhbGFzdENhbGxlci5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyhtZXNzYWdlKSkKKyAgICBpZiAoZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNhbGxT
dGFjay0+c3RhdGUoKSwgbGFzdENhbGxlciwgbWVzc2FnZSkpCiAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3Vy
Y2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxl
dmVsLCAiIiwgYXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVs
LCBjYWxsU3RhY2ssIG1lc3NhZ2UpOwogI2VuZGlmCiAKICAgICBpZiAoIUNvbnNvbGU6OnNob3Vs
ZFByaW50RXhjZXB0aW9ucygpKQpAQCAtMTg3LDQ5ICsxOTQsNDkgQEAgdm9pZCBDb25zb2xlOjph
ZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgUGFzc093blB0
cjxTY3JpcHQKICAgICBwcmludFNvdXJjZVVSTEFuZExpbmUobGFzdENhbGxlci5zb3VyY2VVUkwo
KSwgMCk7CiAgICAgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoSlNNZXNzYWdlU291
cmNlLCBsZXZlbCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRzLT5h
cmd1bWVudENvdW50KCk7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsYXN0
Q2FsbGVyLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBhcmdBc1N0cmlu
ZzsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKS5nZXRTdHJpbmcoYXJndW1l
bnRzLT5nbG9iYWxTdGF0ZSgpLCBhcmdBc1N0cmluZykpCisgICAgICAgIGlmIChsYXN0Q2FsbGVy
LmFyZ3VtZW50QXQoaSkuZ2V0U3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgYXJnQXNTdHJpbmcp
KQogICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBhcmdBc1N0cmluZy51dGY4KCkuZGF0YSgpKTsK
ICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQogCi12b2lkIENvbnNvbGU6OmRlYnVnKFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmRlYnVnKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQogewogICAgIC8vIEluIEZpcmVidWcsIGNvbnNvbGUuZGVidWcgaGFzIHRoZSBzYW1l
IGJlaGF2aW9yIGFzIGNvbnNvbGUubG9nLiBTbyB3ZSdsbCBkbyB0aGUgc2FtZS4KLSAgICBsb2co
YXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIGxvZyhjYWxsU3RhY2spOwogfQogCi12b2lkIENv
bnNvbGU6OmVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmVycm9yKFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CisgICAgYWRkTWVz
c2FnZShMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6aW5mbyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRz
LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpp
bmZvKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewotICAgIGxvZyhhcmd1bWVudHMsIGNh
bGxTdGFjayk7CisgICAgbG9nKGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6bG9nKFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmxvZyhTY3JpcHRDYWxsU3RhY2sqIGNh
bGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2
ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBl
LCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyKFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmRpcihTY3JpcHRDYWxsU3RhY2sqIGNh
bGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdlKE9iamVjdE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdl
TGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdlKE9iamVjdE1lc3Nh
Z2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6
ZGlyeG1sKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmRpcnhtbChTY3JpcHRD
YWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICAgICAvLyBUaGUgc3RhbmRhcmQgYmVoYXZpb3Igb2Yg
b3VyIGNvbnNvbGUubG9nIHdpbGwgcHJpbnQgdGhlIERPTSB0cmVlIGZvciBub2Rlcy4KLSAgICBs
b2coYXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIGxvZyhjYWxsU3RhY2spOwogfQogCi12b2lk
IENvbnNvbGU6OnRyYWNlKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnRyYWNl
KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNz
YWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1ZSk7Cisg
ICAgYWRkTWVzc2FnZShUcmFjZU1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFj
aywgdHJ1ZSk7CiAKICAgICBpZiAoIXNob3VsZFByaW50RXhjZXB0aW9ucygpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDEsMTUgKzI0OCwxNSBAQCB2b2lkIENvbnNvbGU6OnRyYWNlKFBhc3NPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbAogICAg
IH0KIH0KIAotdm9pZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29sIGNv
bmRpdGlvbiwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7CiAgICAgaWYgKGNvbmRpdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkTWVzc2FnZShBc3NlcnRNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCB0cnVlKTsKKyAgICBhZGRN
ZXNzYWdlKEFzc2VydE1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrLCB0
cnVlKTsKIH0KIAotdm9pZCBDb25zb2xlOjpjb3VudChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9p
ZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CkBAIC0yNjAsNyAr
MjY3LDcgQEAgdm9pZCBDb25zb2xlOjpjb3VudChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGwKICAgICAvLyBGb2xsb3cgRmlyZWJ1Zydz
IGJlaGF2aW9yIG9mIGNvdW50aW5nIHdpdGggbnVsbCBhbmQgdW5kZWZpbmVkIHRpdGxlIGluCiAg
ICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5vIGFyZ3VtZW50CiAgICAgU3RyaW5nIHRpdGxlOwot
ICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKHRpdGxlKTsKKyAgICBnZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBsYXN0Q2FsbGVyLCB0aXRs
ZSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvdW50KHRpdGxlLCBsYXN0
Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZWxzZQpAQCAt
MjY4LDE5ICsyNzUsMjAgQEAgdm9pZCBDb25zb2xlOjpjb3VudChQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGwKICNlbmRpZgogfQogCi12
b2lkIENvbnNvbGU6Om1hcmtUaW1lbGluZShQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pCit2b2lkIENvbnNvbGU6Om1hcmtU
aW1lbGluZShTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBj
YWxsU3RhY2stPmF0KDApOwogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGFyZ3VtZW50cy0+Z2V0
Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOworICAgIGdldEZpcnN0QXJndW1lbnRBc1N0
cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIG1lc3NhZ2UpOwogCiAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5tYXJrVGltZWxpbmUobWVzc2FnZSk7CiAjZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOworICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2sp
OwogI2VuZGlmCiB9CiAKQEAgLTMxMyw3ICszMjEsNyBAQCBTdHJpbmcgQ29uc29sZTo6bGFzdFdN
TEVycm9yTWVzc2FnZSgpIGNvbnN0CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
IAotdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRl
KiBzdGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29u
c29sZTo6cHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxT
dGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkK
QEAgLTMzNCw3ICszNDIsNyBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzT3duUHRyPFNjcmlwdAogICAgICAgICByZXNv
bHZlZFRpdGxlID0gIiI7CiAjZW5kaWYKIAotICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChzdGF0
ZSwgcmVzb2x2ZWRUaXRsZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KGNhbGxTdGFjay0+
c3RhdGUoKSwgcmVzb2x2ZWRUaXRsZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNv
bnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CkBAIC0z
NDIsNyArMzUwLDcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc093blB0cjxTY3JpcHQKICNlbmRpZgogfQogCi12b2lk
IENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0
YXRlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9pZCBDb25zb2xl
Ojpwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpA
QCAtMzU0LDcgKzM2Miw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcm
IHRpdGxlLCBTY3JpcHRTdGF0ZSogc3RhdGUsIFBhc3NPd25QdHI8U2NyCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQ
cm9maWxlcjo6c3RvcChzdGF0ZSwgdGl0bGUpOworICAgIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBw
cm9maWxlID0gU2NyaXB0UHJvZmlsZXI6OnN0b3AoY2FsbFN0YWNrLT5zdGF0ZSgpLCB0aXRsZSk7
CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Niw3ICszOTQsNyBA
QCB2b2lkIENvbnNvbGU6OnRpbWUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICNlbmRpZgogfQogCi12
b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc093blB0cjxTY3Jp
cHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQordm9p
ZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayog
Y2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKTsKQEAgLTQxMiwzMCArNDIwLDI4IEBAIHZvaWQgQ29uc29sZTo6dGltZUVuZChj
b25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25Q
CiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjpncm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQor
dm9pZCBDb25zb2xlOjpncm91cChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2spOworICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChKU01lc3NhZ2VTb3VyY2UsIGNhbGxTdGFjayk7CiAj
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxs
U3RhY2spOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoU2NyaXB0Q2FsbFN0
YWNrKiBjYWxsU3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYWdlKiBwYWdl
ID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdyb3VwKGFyZ3VtZW50cywgY2FsbFN0
YWNrLCB0cnVlKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAo
SlNNZXNzYWdlU291cmNlLCBjYWxsU3RhY2ssIHRydWUpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oYXJndW1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbFN0YWNrKTsKICNlbmRpZgogfQpA
QCAtNDUxLDIyICs0NTcsOSBAQCB2b2lkIENvbnNvbGU6Omdyb3VwRW5kKCkKICNlbmRpZgogfQog
Ci1ib29sIENvbnNvbGU6OnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpIGNvbnN0Ci17Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAg
IGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzRnJvbnRlbmQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgQ29uc29sZTo6d2FybihQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KQordm9pZCBDb25zb2xlOjp3YXJuKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewotICAg
IGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50
cywgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVz
c2FnZUxldmVsLCBjYWxsU3RhY2spOwogfQogCiBNZW1vcnlJbmZvKiBDb25zb2xlOjptZW1vcnko
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCBiL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmgKaW5kZXggOTJmZWU1OS4uYWI2MjUyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC00MCw4ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0QXJn
dW1lbnRzOwotCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc0FycmF5OwogI2VuZGlmCkBAIC04Niw0
NCArODMsNDQgQEAgcHVibGljOgogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwogICAgIHZvaWQg
ZGlzY29ubmVjdEZyYW1lKCk7CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdm9pZCBhZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spOwotCi0gICAgdm9pZCBkZWJ1
ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNr
Pik7Ci0gICAgdm9pZCBlcnJvcihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBpbmZvKFBhc3NPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKLSAgICB2b2lkIGxvZyhQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0g
ICAgdm9pZCB3YXJuKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3Jp
cHRDYWxsU3RhY2s+KTsKLSAgICB2b2lkIGRpcihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4s
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBkaXJ4bWwoUGFzc093blB0
cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwotICAgIHZv
aWQgdHJhY2UoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4pOwotICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0g
ICAgdm9pZCBjb3VudChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPik7Ci0gICAgdm9pZCBtYXJrVGltZWxpbmUoUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjayA9IDApOworCisgICAgdm9pZCBkZWJ1ZyhTY3Jp
cHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGVycm9yKFNjcmlwdENhbGxTdGFjayopOworICAgIHZv
aWQgaW5mbyhTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGxvZyhTY3JpcHRDYWxsU3RhY2sq
KTsKKyAgICB2b2lkIHdhcm4oU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBkaXIoU2NyaXB0
Q2FsbFN0YWNrKik7CisgICAgdm9pZCBkaXJ4bWwoU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9p
ZCB0cmFjZShTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGFzc2VydENvbmRpdGlvbihib29s
IGNvbmRpdGlvbiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBjb3VudChTY3JpcHRDYWxs
U3RhY2sqKTsKKyAgICB2b2lkIG1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqKTsKICNpZiBF
TkFCTEUoV01MKQogICAgIFN0cmluZyBsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3Q7CiAjZW5k
aWYKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBjb25zdCBQcm9maWxlc0Fy
cmF5JiBwcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZmlsZXM7IH0KLSAgICB2b2lkIHBy
b2ZpbGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0U3RhdGUqLCBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4pOwotICAgIHZvaWQgcHJvZmlsZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRTdGF0ZSos
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBwcm9maWxlKGNvbnN0IFN0
cmluZyYsIFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgcHJvZmlsZUVuZChjb25zdCBTdHJp
bmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKICNlbmRpZgogICAgIHZvaWQgdGltZShjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwotICAgIHZvaWQgZ3JvdXAo
UGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4p
OwotICAgIHZvaWQgZ3JvdXBDb2xsYXBzZWQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgdGltZUVuZChjb25zdCBTdHJp
bmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGdyb3VwKFNjcmlwdENhbGxTdGFjayop
OworICAgIHZvaWQgZ3JvdXBDb2xsYXBzZWQoU2NyaXB0Q2FsbFN0YWNrKik7CiAgICAgdm9pZCBn
cm91cEVuZCgpOwogCi0gICAgYm9vbCBzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSBjb25z
dDsKLQogICAgIHN0YXRpYyBib29sIHNob3VsZFByaW50RXhjZXB0aW9ucygpOwogICAgIHN0YXRp
YyB2b2lkIHNldFNob3VsZFByaW50RXhjZXB0aW9ucyhib29sKTsKIAorI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQorICAgIGNvbnN0IFByb2ZpbGVzQXJyYXkmIHByb2ZpbGVzKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9maWxlczsgfQorI2VuZGlmCisKICAgICBNZW1vcnlJbmZvKiBtZW1v
cnkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0Owot
ICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiwgYm9vbCBhY2Nl
cHROb0FyZ3VtZW50cyA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9
IGZhbHNlKTsKIAogICAgIENvbnNvbGUoRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuaWRsIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCmluZGV4IDlmMDM5MTEu
LjUyNTI4ZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAorKysgYi9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwKQEAgLTMwLDYgKzMwLDEwIEBAIG1vZHVsZSB3aW5kb3cgewog
CiAgICAgaW50ZXJmYWNlIFtPbWl0Q29uc3RydWN0b3JdIENvbnNvbGUgewogCisjaWYgZGVmaW5l
ZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIEFycmF5IHByb2Zp
bGVzOworI2VuZGlmCisgICAgCiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lk
IGRlYnVnKCk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIGVycm9yKCk7
CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIGluZm8oKTsKQEAgLTQ3LDkg
KzUxLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCi0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBwcm9maWxlczsKLSAgICAg
ICAgW0N1c3RvbV0gdm9pZCBwcm9maWxlKGluIERPTVN0cmluZyB0aXRsZSk7Ci0gICAgICAgIFtD
dXN0b21dIHZvaWQgcHJvZmlsZUVuZChpbiBET01TdHJpbmcgdGl0bGUpOworICAgICAgICBbQ3Vz
dG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBwcm9maWxlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOworICAgICAgICBbQ3VzdG9tQXJndW1l
bnRIYW5kbGluZ10gdm9pZCBwcm9maWxlRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwogI2VuZGlmCiAKICAgICAgICAgdm9pZCB0aW1l
KGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>