<?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>235978</bug_id>
          
          <creation_ts>2022-02-01 14:54:50 -0800</creation_ts>
          <short_desc>Flaky scope.assertNoException() assertion in ~JSExecState when running workers WPT tests</short_desc>
          <delta_ts>2022-02-03 08:40:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>235958</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ap</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1836163</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 14:54:50 -0800</bug_when>
    <thetext>Flaky scope.assertNoException() assertion in ~JSExecState when running workers WPT tests:
Thread 8 Crashed:: WebCore: SharedWorker
0   JavaScriptCore                	       0x27fca827e WTFCrash + 14
1   WebCore                       	       0x293d64baa JSC::ExceptionScope::assertNoException() + 122 (ExceptionScope.h:55)
2   WebCore                       	       0x296198305 WebCore::JSExecState::~JSExecState() + 325 (JSExecState.h:149)
3   WebCore                       	       0x2961980e5 WebCore::JSExecState::~JSExecState() + 21 (JSExecState.h:133)
4   WebCore                       	       0x296230857 WebCore::JSExecState::loadModule(JSC::JSGlobalObject&amp;, JSC::SourceCode const&amp;, JSC::JSValue) + 71 (JSExecState.h:105)
5   WebCore                       	       0x2986d80fa WebCore::WorkerOrWorkletScriptController::loadModuleSynchronously(WebCore::WorkerScriptFetcher&amp;, WebCore::ScriptSourceCode const&amp;) + 234 (WorkerOrWorkletScriptController.cpp:286)
6   WebCore                       	       0x298706045 WebCore::WorkerThread::evaluateScriptIfNecessary(WTF::String&amp;) + 741 (WorkerThread.cpp:150)
7   WebCore                       	       0x2986dbff3 WebCore::WorkerOrWorkletThread::workerOrWorkletThread() + 723 (WorkerOrWorkletThread.cpp:175)
8   WebCore                       	       0x2987170e8 WebCore::WorkerThread::createThread()::$_4::operator()() const + 24 (WorkerThread.cpp:121)
9   WebCore                       	       0x298717089 WTF::Detail::CallableWrapper&lt;WebCore::WorkerThread::createThread()::$_4, void&gt;::call() + 25 (Function.h:53)
10  JavaScriptCore                	       0x27fcd1c02 WTF::Function&lt;void ()&gt;::operator()() const + 130
11  JavaScriptCore                	       0x27fd97538 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) + 408
12  JavaScriptCore                	       0x27fda3175 WTF::wtfThreadEntryPoint(void*) + 21
13  libsystem_pthread.dylib       	    0x7ff80dad64f4 _pthread_start + 125
14  libsystem_pthread.dylib       	    0x7ff80dad200f thread_start + 15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836165</commentid>
    <comment_count>1</comment_count>
      <attachid>450571</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 14:57:52 -0800</bug_when>
    <thetext>Created attachment 450571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836166</commentid>
    <comment_count>2</comment_count>
      <attachid>450571</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-02-01 14:58:49 -0800</bug_when>
    <thetext>Comment on attachment 450571
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836185</commentid>
    <comment_count>3</comment_count>
      <attachid>450580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-01 15:22:29 -0800</bug_when>
    <thetext>Created attachment 450580
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836716</commentid>
    <comment_count>4</comment_count>
      <attachid>450719</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-02-02 17:13:21 -0800</bug_when>
    <thetext>Created attachment 450719
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836727</commentid>
    <comment_count>5</comment_count>
      <attachid>450723</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-02-02 17:47:23 -0800</bug_when>
    <thetext>Created attachment 450723
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836734</commentid>
    <comment_count>6</comment_count>
      <attachid>450723</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-02 18:17:46 -0800</bug_when>
    <thetext>Comment on attachment 450723
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836953</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-03 08:39:51 -0800</bug_when>
    <thetext>Committed r289057 (246764@main): &lt;https://commits.webkit.org/246764@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450723.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836954</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-03 08:40:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/88436985&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450571</attachid>
            <date>2022-02-01 14:57:52 -0800</date>
            <delta_ts>2022-02-02 17:13:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235978-20220201145749.patch</filename>
            <type>text/plain</type>
            <size>3529</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY0MjdkOTk5MTEwOWFh
MmRkOTZkOGZhYmI3YzIyMWQzMmNjOTg4Mi4uN2M0YjBiMmVjY2M0Zjg2YzEyZTgzZTkyMWI5OGY2
MmU4MjQ2YTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAyLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRmxha3kgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb24oKSBhc3NlcnRpb24gaW4gfkpTRXhlY1N0YXRlIHdoZW4gcnVubmluZyB3b3Jr
ZXJzIFdQVCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQmVjYXVzZSBXZWIgd29ya2VycyBjYW4gYmUgdGVybWluYXRlZCBhdCBhbnkgcG9pbnQs
IGl0IGlzIHBvc3NpYmxlIGZvciBKU0V4ZWNTdGF0ZTo6bG9hZE1vZHVsZSgpCisgICAgICAgIHRv
IGdldCBhIHRlcm1pbmF0aW9uIGV4Y2VwdGlvbiwgd2hpY2ggd291bGQgaW5jb3JyZWN0bHkgY2F1
c2UgaXQgdG8gYXNzZXJ0IGFuZCBjcmFzaCBpbiBkZWJ1Zy4KKyAgICAgICAgVGhpcyBwYXRjaCB1
cGRhdGVzIHRoZSBjb2RlIHNvIHRoYXQgdGVybWluYXRpb24gZXhjZXB0aW9ucyBhcmUgcHJvcGVy
bHkgZGVhbHQgd2l0aCBpbnN0ZWFkIG9mCisgICAgICAgIGNyYXNoaW5nLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgY292ZXJlZCBieSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMgdGhhdCBmbGFraWx5IGNyYXNoIGluCisgICAgICAgIGRlYnVnLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRl
Ojp+SlNFeGVjU3RhdGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseSk6CisKIDIwMjItMDItMDEgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIG1vcmUgQXRvbVN0cmlu
ZyBhbmQgdW4taW5saW5lIGNvZGUgZm9yIFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVy
IGFuZCBpdHMgc3ViY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRl
LmgKaW5kZXggZTI2NWIxMzM4YWM4NzQ5MDNlMWY3ZmMyMzZlZDU3M2Q1NWZmMzFmYy4uNjQwZmM1
N2FjNTI4N2U0ZTAxZGJhMjMwNjY0ZjU4NTQzMTNhNGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V4ZWNTdGF0ZS5oCkBAIC0xMzEsOCArMTMxLDggQEAgcHJpdmF0ZToKICAgICB+
SlNFeGVjU3RhdGUoKQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBjdXJyZW50U3RhdGUo
KS0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwot
ICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
RXhjZXB0VGVybWluYXRpb24oKTsKIAogICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0ID0gY3VycmVudFN0YXRlKCk7CiAgICAgICAgIGJvb2wgZGlkRXhpdEph
dmFTY3JpcHQgPSBsZXhpY2FsR2xvYmFsT2JqZWN0ICYmICFtX3ByZXZpb3VzU3RhdGU7CkBAIC0x
NDIsNyArMTQyLDggQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGRpZEV4aXRKYXZhU2NyaXB0KSB7
CiAgICAgICAgICAgICBkaWRMZWF2ZVNjcmlwdENvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIGFueSBleGNlcHRpb25zIGZyb20gbWlj
cm90YXNrIGRyYWluLgotICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAg
ICAgICAgIGlmICghdm0uaGFzUGVuZGluZ1Rlcm1pbmF0aW9uRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggZGI3MmQ3M2Q1ODFmNzg4NGMzMjkxNDZiYmZjMjU1OGRlOTE0
YjM2ZC4uY2UxMDI2NjMzNThhZGMxNzc3ZTU2NTFhODgzZTJiOGE2OTZiODYzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0yODAsMTAgKzI4MCwxMyBAQCBib29sIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KFdvcmtlclNjcmlwdEZldGNo
ZQogICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7
IHZtIH07CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
UmVmIHByb3RlY3RvciB7IHNjcmlwdEZldGNoZXIgfTsKICAgICB7CiAgICAgICAgIGF1dG8mIHBy
b21pc2UgPSBKU0V4ZWNTdGF0ZTo6bG9hZE1vZHVsZShnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUodm0sIHsgJnNjcmlw
dEZldGNoZXIgfSkpOworICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1p
bmF0aW9uKCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAog
ICAgICAgICBhdXRvJiBmdWxmaWxsSGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVh
dGUodm0sICZnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbcHJvdGVjdG9yXShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgLT4gSlNDOjpFbmNvZGVk
SlNWYWx1ZSB7CiAgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cg==
</data>
<flag name="review"
          id="476998"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="477013"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450580</attachid>
            <date>2022-02-01 15:22:29 -0800</date>
            <delta_ts>2022-02-01 15:25:02 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>235958_SharedWorker_multiProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>337991</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQwYjI5NmM3MWQzNy4uMzZhMDczMTE3NjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ2Myw3ICs0NjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55Lmh0bWwgWyBEdW1wSgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3Rlc3QtYW5hbHlzZXItbWluaW11bS5odG1sIFsgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUt
ZGlzY29ubmVjdC1hdWRpb3BhcmFtLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NhbWUtb3JpZ2luLWNoZWNr
LnN1Yi5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWJh
Y2stZm9yd2FyZC1jYWNoZS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGZhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLWNyZWF0ZUltYWdlQml0bWFwLmh0bWwgWyBEdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWluLWxv
YWRpbmctaWZyYW1lLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpAQCAtNTE1NCw2
ICs1MTUzLDEwIEBAIHdlYmtpdC5vcmcvYi8xODM5OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3Nzb20vY3NzLXN0eWxlLWF0dHItZGVjCiAjIFRlc3QgaXMgY3Jhc2hpbmcg
aW4gRGVidWcgYnVpbGRzIHNpbmNlIGltcG9ydC4KIHdlYmtpdC5vcmcvYi8yMzQ5NzcgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9mb2N1cy1ldmVu
dC1kb2N1bWVudC1tb3ZlLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IGlzIGZsYWt5IGJlY2F1c2Ug
TWVzc2FnZVBvcnQgbWVzc2FnZXMgbWF5IGdldCByZWNlaXZlZCBpbiBhIGRpZmZlcmVudCBvcmRl
ciB3aGVuIHNldmVyYWwgTWVzc2FnZVBvcnRzIGFyZSBpbnZvbHZlZCwKKyMgZHVlIHRvIGhvdyBN
ZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpIGlzIGltcGxlbWVudGVkLgoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIEZhaWx1cmUgUGFzcyBdCisKICMg
UGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgogcGx1Z2lucy8gWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0
LW9ubHkuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3
b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dAppbmRleCAwZTk5NzI0Yjg2NGIuLjY4
OThiNTRhYWI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdv
cmtlci1yZXBvcnQtb25seS5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvaW5zaWRl
LXdvcmtlci9zaGFyZWR3b3JrZXItcmVwb3J0LW9ubHkuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2Nh
bGhvc3Q6OTQ0NC9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zdXBwb3J0L3Jlc291cmNlLnB5P2Ny
b3NzLW9yaWdpbi1mZXRjaAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8v
d3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQvcmVzb3Vy
Y2UucHk/Y3Jvc3Mtb3JpZ2luLXhocgotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0
dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3N1cHBvcnQv
cmVzb3VyY2UucHk/Y3Jvc3Mtb3JpZ2luLWZldGNoCiAKIFBBU1MgU2FtZS1vcmlnaW4gJ2ZldGNo
KCknLgogUEFTUyBTYW1lLW9yaWdpbiBYSFIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2luc2lk
ZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvaW5zaWRlLXdvcmtlci9zaGFyZWR3b3JrZXItc2NyaXB0LXNyYy5zdWItZXhwZWN0ZWQu
dHh0CmluZGV4IDk3OTEwNjMwMzc4NS4uYmI2NDUyZjQ0YTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMuc3ViLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2luc2lkZS13b3JrZXIvc2hhcmVkd29ya2VyLXNjcmlwdC1zcmMu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw5IEBACiBIYXJuZXNzIEVycm9yIChUSU1FT1VU
KSwgbWVzc2FnZSA9IG51bGwKIAogVElNRU9VVCBzaGFyZWR3b3JrZXItc2NyaXB0LXNyYyBUZXN0
IHRpbWVkIG91dAotRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgbm90IGJsb2Nr
ZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLUZBSUwg
YGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AgUmVmdXNlZCB0byBldmFs
dWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3Qg
YW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ25vbmNlLWEnIGJsb2I6
IGZpbGVzeXN0ZW06Ii4KLQotRkFJTCBgc2V0VGltZW91dChbc3RyaW5nXSlgIG5vdCBibG9ja2Vk
IGluIGh0dHA6IHdpdGhvdXQgQ1NQIGFzc2VydF91bnJlYWNoZWQ6IGNhbGxiYWNrIG5vdCBjYWxs
ZWQuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBDcm9zcy1vcmlnaW4gYGltcG9ydFNj
cmlwdHMoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91ciBDU1AgTG9hZCBmYWlsZWQKK1BB
U1MgYGV2YWwoKWAgbm90IGJsb2NrZWQgaW4gaHR0cDogd2l0aG91dCBDU1AKK1BBU1MgYHNldFRp
bWVvdXQoW3N0cmluZ10pYCBub3QgYmxvY2tlZCBpbiBodHRwOiB3aXRob3V0IENTUAogVElNRU9V
VCBDcm9zcy1vcmlnaW4gYGltcG9ydFNjcmlwdHMoKWAgYmxvY2tlZCBpbiBodHRwOiB3aXRoIHNj
cmlwdC1zcmMgJ3NlbGYnIFRlc3QgdGltZWQgb3V0CiBOT1RSVU4gYGV2YWwoKWAgYmxvY2tlZCBp
biBodHRwOiB3aXRoIHNjcmlwdC1zcmMgJ3NlbGYnCiBOT1RSVU4gYHNldFRpbWVvdXQoW3N0cmlu
Z10pYCBibG9ja2VkIGluIGh0dHA6IHdpdGggc2NyaXB0LXNyYyAnc2VsZicKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVk
LnR4dAppbmRleCA0ZWFjMWNjYzA1MjYuLmI4ZWUxM2IwZmZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKIAogRkFJTCBEZWRpY2F0ZWQgd29ya2VyIGluaGVyaXRzIENTUCBm
cm9tIG1haW4gZG9jdW1lbnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInNldFRpbWVvdXQgYWxs
b3dlZCIgYnV0IGdvdCAic2V0VGltZW91dCBibG9ja2VkIgotRkFJTCBTaGFyZWQgd29ya2VyIGRl
bGl2ZXJzIGl0cyBvd24gQ1NQIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGJs
b2NrZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQgYWxsb3dlZCIKK1BBU1MgU2hhcmVkIHdvcmtlciBk
ZWxpdmVycyBpdHMgb3duIENTUAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3Jr
ZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNo
ZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYzEwNzEz
NjU1MjgwLi42Zjg0NGRkNWQ5NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtl
cnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNyAr
NSw3IEBAIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogUEFTUyBEZWRp
Y2F0ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIg
b2YgdGhlIGZhbGxiYWNrZWQgc2NyaXB0CiBQQVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIG5v
dC1pbi1jYWNoZSBzY3JpcHQKLVBBU1MgU2hhcmVkIHdvcmtlciBvZiB0aGUgY2FjaGVkIHNjcmlw
dAotUEFTUyBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlwdAorRkFJTCBTaGFy
ZWQgd29ya2VyIG9mIHRoZSBjYWNoZWQgc2NyaXB0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJE
b25lOiBjYWNoZWQiIGJ1dCBnb3QgIkVycm9yOiBJbXBvcnRpbmcgYSBub24tY2FjaGVkIHNjcmlw
dCBtdXN0IGZhaWwuIgorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBmYWxsYmFja2VkIHNjcmlw
dCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRG9uZTogZmFsbGJhY2tlZCIgYnV0IGdvdCAiRXJy
b3I6IEltcG9ydGluZyBhIG5vbi1jYWNoZWQgc2NyaXB0IG11c3QgZmFpbC4iCiBUSU1FT1VUIFNo
YXJlZCB3b3JrZXIgb2YgdGhlIG5vdC1pbi1jYWNoZSBzY3JpcHQgVGVzdCB0aW1lZCBvdXQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3
b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9y
aWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlmcmFtZS9zaGFyZWR3b3JrZXItcGFydGl0
aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IDRlZDg3NDc0
NzZjNy4uZjFlYjBiMjE3ZjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9hbm9u
eW1vdXMtaWZyYW1lL3NoYXJlZHdvcmtlci1wYXJ0aXRpb25pbmcudGVudGF0aXZlLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYW5vbnltb3VzLWlm
cmFtZS9zaGFyZWR3b3JrZXItcGFydGl0aW9uaW5nLnRlbnRhdGl2ZS5odHRwcy53aW5kb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFub255bW91cyBpZnJhbWVzIGdldCBw
YXJ0aXRpb25lZCBzaGFyZWQgd29ya2Vycy4gYXNzZXJ0X3RydWU6IFRoZSAibm9ybWFsIiBpZnJh
bWUncyBzaGFyZWR3b3JrZXIgc2hvdWxkIHJldHVybiB7Im5vcm1hbCI6IHRydWUsICJub3JtYWxf
Y29udHJvbCI6IHRydWV9LCBidXQgaW5zdGVhZCByZXR1cm5lZCB7Im5vcm1hbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgQW5vbnltb3VzIGlmcmFtZXMgZ2V0IHBhcnRpdGlv
bmVkIHNoYXJlZCB3b3JrZXJzLiBhc3NlcnRfdHJ1ZTogVGhlICJub3JtYWwiIGlmcmFtZSdzIHNo
YXJlZHdvcmtlciBzaG91bGQgcmV0dXJuIHsibm9ybWFsIjogdHJ1ZSwgIm5vcm1hbF9jb250cm9s
IjogdHJ1ZX0sIGJ1dCBpbnN0ZWFkIHJldHVybmVkIHsiYW5vbnltb3VzIjp0cnVlLCJub3JtYWxf
Y29udHJvbCI6dHJ1ZSwibm9ybWFsIjp0cnVlLCJhbm9ueW1vdXNfY29udHJvbCI6dHJ1ZX0gZXhw
ZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
Y3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2luLWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYzNTViNjhkZTcwYi4uYzhiZjc1ZTdlYTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9jcm9zcy1vcmlnaW4taXNvbGF0ZWQtcGVybWlzc2lvbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvY3Jvc3Mtb3JpZ2lu
LWlzb2xhdGVkLXBlcm1pc3Npb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCw3IEBA
IFBBU1MgZGVkaWNhdGVkIHdvcmtlcjogc2NoZW1lID0gYmxvYiwgdmFsdWUgPSAqCiBQQVNTIGRl
ZGljYXRlZCB3b3JrZXI6IHNjaGVtZSA9IGJsb2IsIHZhbHVlID0gc2VsZgogRkFJTCBkZWRpY2F0
ZWQgd29ya2VyOiBzY2hlbWUgPSBibG9iLCB2YWx1ZSA9IChcKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKIFBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2Vw
ID0gZmFsc2UKLVBBU1Mgc2hhcmVkIHdvcmtlcjogd2l0aENvb3BDb2VwID0gdHJ1ZQorRkFJTCBz
aGFyZWQgd29ya2VyOiB3aXRoQ29vcENvZXAgPSB0cnVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogUEFTUyBzZXJ2aWNlIHdvcmtlcjogd2l0aENvb3BDb2VwID0g
ZmFsc2UKIEZBSUwgc2VydmljZSB3b3JrZXI6IHdpdGhDb29wQ29lcCA9IHRydWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1i
ZWRkZXItcG9saWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMzk4
YmQ4ODkzMWIuLjRjODY2ZWIyOTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kv
c2hhcmVkLXdvcmtlcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9s
aWN5L3NoYXJlZC13b3JrZXJzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVmVy
aWZ5IHRoZSBDcm9zcy1PcmlnaW4gRW1iZWRkZXIgUG9saWN5IGZvciBTaGFyZWQgV29ya2VycyBi
eSBwZXJmb3JtaW5nIGEgY3Jvc3MKIAogCiBQQVNTIGRlZmF1bHQgcG9saWN5IChkZXJpdmVkIGZy
b20gcmVzcG9uc2UpCi1GQUlMICJyZXF1aXJlLWNvcnAiIChkZXJpdmVkIGZyb20gcmVzcG9uc2Up
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJmYWlsdXJlIiBidXQgZ290ICJzdWNjZXNzIgorUEFT
UyAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIHJlc3BvbnNlKQogUEFTUyBkZWZhdWx0IHBv
bGljeSAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBkdWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAt
IGJsb2IgVVJMKQogRkFJTCAicmVxdWlyZS1jb3JwIiAoZGVyaXZlZCBmcm9tIG93bmVyIHNldCBk
dWUgdG8gdXNlIG9mIGxvY2FsIHNjaGVtZSAtIGJsb2IgVVJMKSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiZmFpbHVyZSIgYnV0IGdvdCAic3VjY2VzcyIKIFBBU1MgZGVmYXVsdCBwb2xpY3kgKGRl
cml2ZWQgZnJvbSBvd25lciBzZXQgZHVlIHRvIHVzZSBvZiBsb2NhbCBzY2hlbWUgLSBkYXRhIFVS
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5jZS5z
dWIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvd29ya2VyLWluaGVy
aXRhbmNlLnN1Yi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNzViMWQzM2U1MjYwLi5iMmJmMmUz
YmZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtlci1pbmhlcml0YW5j
ZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3dvcmtl
ci1pbmhlcml0YW5jZS5zdWIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0L2Nv
bW1vbi9ibGFuay5odG1sCiBCbG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93
d3cubG9jYWxob3N0Ojk0NDQvY29tbW9uL2JsYW5rLmh0bWwKIEJsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwczovL3d3dy5sb2NhbGhvc3Q6OTQ0NC9jb21tb24vYmxhbmsuaHRtbAot
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3LmxvY2FsaG9zdDo5NDQ0
L2NvbW1vbi9ibGFuay5odG1sCiAKIFBBU1MgVGVzdCB0aGF0IGxvY2FsIHNjaGVtZSB3b3JrZXJz
IGluaGVyaXQgQ09FUDogcmVxdWlyZS1jb3JwIGZyb20gdGhlIGNyZWF0aW5nIGRvY3VtZW50CiBQ
QVNTIGJsb2IgVVJMIGRlZGljYXRlZCB3b3JrZXI6IFNhbWUgb3JpZ2luIHNob3VsZCBiZSBhbGxv
d2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRhVXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9TaGFyZWRXb3JrZXJf
ZGF0YVVybC1leHBlY3RlZC50eHQKaW5kZXggOTk1YTA2MDE5Yjg0Li45YjU4MjBhYWU4Y2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy9TaGFyZWRXb3JrZXJfZGF0YVVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1NoYXJlZFdvcmtlcl9kYXRh
VXJsLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6IEVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyIGJ1dCBnb3QgMQogCiAKLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIgYnV0IGdv
dCAxCi0KLVBBU1MgRGF0YSBVUkwgbm90IHNoYXJlZCBieSBjcm9zcy1vcmlnaW4gU2hhcmVkV29y
a2VycwotVElNRU9VVCBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtl
cnMgVGVzdCB0aW1lZCBvdXQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBFcnJv
cjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290IDEKLQogUEFTUyBEYXRhIFVSTCBu
b3Qgc2hhcmVkIGJ5IGNyb3NzLW9yaWdpbiBTaGFyZWRXb3JrZXJzCi1USU1FT1VUIERhdGEgVVJM
cyBzaGFyZWQgYnkgc2FtZS1vcmlnaW4gU2hhcmVkV29ya2VycyBUZXN0IHRpbWVkIG91dAorUEFT
UyBEYXRhIFVSTHMgc2hhcmVkIGJ5IHNhbWUtb3JpZ2luIFNoYXJlZFdvcmtlcnMKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJz
L21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9t
b2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQK
aW5kZXggNTc2ZTZkMmI3ZWQyLi40YTI2YmU5MjlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13
b3JrZXItaW1wb3J0LWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVk
LXdvcmtlci1pbXBvcnQtYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0
Ojk0NDMvd29ya2Vycy9tb2R1bGVzL3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkK
IAogUEFTUyBTdGF0aWMgaW1wb3J0LgogRkFJTCBTdGF0aWMgaW1wb3J0IChjcm9zcy1vcmlnaW4p
LiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIkltcG9ydGlu
ZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29y
a2VyLWltcG9ydC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CmluZGV4IDRmODY0
MWU1MTQ4MC4uMjk5N2Y3ZTFmMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9y
dC1kYXRhLXVybC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0LWRhdGEtdXJsLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBudWxsIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDIwMAogCiBIYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtl
ci1pbXBvcnQtZGF0YS11cmwud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXIt
aW1wb3J0LWRhdGEtdXJsLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggZWFjN2Y5NWRlNmYyLi5j
YmMwNDI5ZTBjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1wb3J0LWRhdGEtdXJs
LndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1pbXBvcnQtZGF0YS11
cmwud2luZG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRv
IGV4dGVybmFsIFVSTCBodHRwczovL3d3dzEubG9jYWxob3N0Ojk0NDMvd29ya2Vycy9tb2R1bGVz
L3Jlc291cmNlcy9leHBvcnQtb24tbG9hZC1zY3JpcHQucHkKIAogSGFybmVzcyBFcnJvciAoVElN
RU9VVCksIG1lc3NhZ2UgPSBudWxsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3NoYXJlZC13b3JrZXItaW1w
b3J0LndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IDU3NmU2ZDJiN2VkMi4uNGEyNmJlOTI5YThkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9k
dWxlcy9zaGFyZWQtd29ya2VyLWltcG9ydC53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9tb2R1bGVzL3No
YXJlZC13b3JrZXItaW1wb3J0LndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1C
bG9ja2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cHM6Ly93d3cxLmxvY2FsaG9zdDo5NDQz
L3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LW9uLWxvYWQtc2NyaXB0LnB5CiAKIFBB
U1MgU3RhdGljIGltcG9ydC4KIEZBSUwgU3RhdGljIGltcG9ydCAoY3Jvc3Mtb3JpZ2luKS4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJJbXBvcnRpbmcgYSBt
b2R1bGUgc2NyaXB0IGZhaWxlZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNy
ZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlZGY1NDMwZWYuLmE3MGYwNWFmNTRmNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL21vZHVsZXMvc2hhcmVkLXdvcmtlci1vcHRpb25zLWNyZWRlbnRpYWxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvbW9kdWxlcy9zaGFyZWQtd29ya2VyLW9wdGlvbnMtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAwL3dvcmtlcnMvbW9kdWxlcy9yZXNvdXJjZXMvZXhwb3J0LWNy
ZWRlbnRpYWxzLnB5CiAKIEhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zZW1hbnRp
Y3MvbXVsdGlwbGUtd29ya2Vycy8wMDQtZXhwZWN0ZWQudHh0CmluZGV4IDAxOGRiNjA0NTY5ZC4u
Y2ZlNDY1NTY3NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA0LWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LU5PVFJVTiBzaGFyZWQgd29ya2VyIHdpdGggbXVsdGlwbGUgZG9jdW1lbnRzCitQQVNTIHNoYXJl
ZCB3b3JrZXIgd2l0aCBtdWx0aXBsZSBkb2N1bWVudHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2VtYW50aWNzL211bHRpcGxlLXdvcmtlcnMvMDA4
LWV4cGVjdGVkLnR4dAppbmRleCA5N2E0ZTdhNzNhNjMuLjA5ZjY3MmQxYzYyMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3Nl
bWFudGljcy9tdWx0aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NlbWFudGljcy9tdWx0
aXBsZS13b3JrZXJzLzAwOC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3Mg
RXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIG1lc3NhZ2VjaGFubmVs
IGluIHNoYXJlZCB3b3JrZXIgVGVzdCB0aW1lZCBvdXQKK1BBU1MgbWVzc2FnZWNoYW5uZWwgaW4g
c2hhcmVkIHdvcmtlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJsb2ItdXJsLndpbmRvdy1leHBlY3RlZC50
eHQKaW5kZXggYTA4OWMyMjQ4OWUyLi5kMzlhNTUwODRkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWZyb20tYmxvYi11cmwud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcm9tLWJs
b2ItdXJsLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEhhcm5lc3MgRXJy
b3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAogCi1GQUlMIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ3b3Jr
ZXJfT0tfMiIgYnV0IGdvdCAid29ya2VyX09LXzEiCi1QQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdv
cmtlciBmcm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLgot
VElNRU9VVCBDb25uZWN0aW5nIHRvIGEgc2hhcmVkIHdvcmtlciBvbiBhIHJldm9rZWQgYmxvYiBV
Ukwgd29ya3MuIFRlc3QgdGltZWQgb3V0CitQQVNTIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MuCitUSU1FT1VUIENyZWF0aW5nIGEgc2hhcmVkIHdvcmtlciBm
cm9tIGEgYmxvYiBVUkwgd29ya3MgaW1tZWRpYXRlbHkgYmVmb3JlIHJldm9raW5nLiBUZXN0IHRp
bWVkIG91dAorTk9UUlVOIENvbm5lY3RpbmcgdG8gYSBzaGFyZWQgd29ya2VyIG9uIGEgcmV2b2tl
ZCBibG9iIFVSTCB3b3Jrcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCA2ZmZlZTI3MzkwZDkuLmFlNDViNGQyNzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFt
ZS12aWEtb3B0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgVGVzdCB0aGUgbmFtZSBwcm9w
ZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29u
c3RydWN0b3Igc3RyaW5ncyBFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMiBidXQgZ290
IDEKK1BBU1MgVGVzdCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiBzaGFyZWQgd29ya2VycyBtaXhpbmcg
Y29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uc3RydWN0b3Igc3RyaW5ncwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW9wdGlv
bnMtbWlzbWF0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGY2NTY5NDYxNTBkYi4uNGY5OWExMzQwOWU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1vcHRpb25zLW1pc21hdGNoLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSwyNiBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBtb2R1bGUgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3
b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogY2xhc3NpYyB0
byBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJl
bnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGNsYXNzaWMKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogZGVmYXVsdCB0byBpbmNsdWRlIGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21p
dCB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3Jr
ZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0byBzYW1l
LW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdp
dGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBp
biBjbGFzc2ljCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUtb3JpZ2luIHRvIG9taXQgaW4gY2xh
c3NpYwotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIGNsYXNzaWMKLU5P
VFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBz
aG91bGQgYmUgYmxvY2tlZDogaW5jbHVkZSB0byBvbWl0IGluIGNsYXNzaWMKLU5PVFJVTiBDb25u
ZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUg
YmxvY2tlZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCi1OT1RSVU4gQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGRlZmF1bHQgdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJVTiBDb25uZWN0aW5nIHRvIHNo
YXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVm
YXVsdCB0byBpbmNsdWRlIGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRl
ZmF1bHQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGgg
ZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gc2FtZS1vcmlnaW4g
aW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVy
ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IG9taXQgdG8gaW5jbHVkZSBpbiBtb2R1bGUK
LU5PVFJVTiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9u
cyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKLU5PVFJV
TiBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gaW5jbHVkZSBpbiBtb2R1bGUKLU5PVFJVTiBD
b25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQg
YmUgYmxvY2tlZDogaW5jbHVkZSB0byBkZWZhdWx0IGluIG1vZHVsZQotTk9UUlVOIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gbW9kdWxlCi1OT1RSVU4gQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1
ZGUgdG8gc2FtZS1vcmlnaW4gaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRv
IG1vZHVsZQorUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQg
b3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogbW9kdWxlIHRvIGRlZmF1bHQKK1BBU1MgQ29ubmVj
dGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJs
b2NrZWQ6IGNsYXNzaWMgdG8gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBtb2R1bGUgdG8gY2xh
c3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0
aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogZGVmYXVsdCB0byBvbWl0IGluIGNsYXNzaWMKK1BBU1Mg
Q29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxk
IGJlIGJsb2NrZWQ6IGRlZmF1bHQgdG8gaW5jbHVkZSBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3Rp
bmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9j
a2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJl
ZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogb21pdCB0
byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGluY2x1
ZGUgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZm
ZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tlZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBj
bGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBzYW1lLW9yaWdpbiB0byBpbmNsdWRlIGluIGNsYXNz
aWMKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFyZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlv
bnMgc2hvdWxkIGJlIGJsb2NrZWQ6IGluY2x1ZGUgdG8gZGVmYXVsdCBpbiBjbGFzc2ljCitQQVNT
IENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3Vs
ZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4gY2xhc3NpYworUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogaW5jbHVkZSB0byBzYW1lLW9yaWdpbiBpbiBjbGFzc2ljCitQQVNTIENvbm5lY3RpbmcgdG8g
c2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBk
ZWZhdWx0IHRvIG9taXQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtl
ciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBkZWZhdWx0IHRvIGlu
Y2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRp
ZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIGRlZmF1bHQgaW4gbW9k
dWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBvcHRp
b25zIHNob3VsZCBiZSBibG9ja2VkOiBvbWl0IHRvIHNhbWUtb3JpZ2luIGluIG1vZHVsZQorUEFT
UyBDb25uZWN0aW5nIHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91
bGQgYmUgYmxvY2tlZDogb21pdCB0byBpbmNsdWRlIGluIG1vZHVsZQorUEFTUyBDb25uZWN0aW5n
IHRvIHNoYXJlZCB3b3JrZXIgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyBzaG91bGQgYmUgYmxvY2tl
ZDogc2FtZS1vcmlnaW4gdG8gb21pdCBpbiBtb2R1bGUKK1BBU1MgQ29ubmVjdGluZyB0byBzaGFy
ZWQgd29ya2VyIHdpdGggZGlmZmVyZW50IG9wdGlvbnMgc2hvdWxkIGJlIGJsb2NrZWQ6IHNhbWUt
b3JpZ2luIHRvIGluY2x1ZGUgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdv
cmtlciB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRv
IGRlZmF1bHQgaW4gbW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRo
IGRpZmZlcmVudCBvcHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIG9taXQgaW4g
bW9kdWxlCitQQVNTIENvbm5lY3RpbmcgdG8gc2hhcmVkIHdvcmtlciB3aXRoIGRpZmZlcmVudCBv
cHRpb25zIHNob3VsZCBiZSBibG9ja2VkOiBpbmNsdWRlIHRvIHNhbWUtb3JpZ2luIGluIG1vZHVs
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Bl
bi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAppbmRleCAx
ZTJkMzk5MmY2ZDUuLjU5Y2FjYTQ4NmY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvb3Blbi11cmwtcmVkaXJlY3RlZC1zaGFyZWR3
b3JrZXItb3JpZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9vcGVuLXVybC1yZWRpcmVjdGVkLXNoYXJlZHdvcmtlci1v
cmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0
ZXJuYWwgVVJMIGh0dHA6Ly93d3cyLmxvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvaW5zcGVj
dC1oZWFkZXJzLnB5P2ZpbHRlcl9uYW1lPW9yaWdpbiZjb3JzCiAKIEZBSUwgUmVmZXJlciBoZWFk
ZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIlJlZmVyZXI6IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MC94aHIvcmVzb3VyY2VzL3dvcmtlcnhoci1vcmlnaW4tcmVmZXJyZXIuanNcbiIgYnV0IGdvdCAi
UmVmZXJlcjogaHR0cDovL2xvY2FsaG9zdDo4ODAwL3hoci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/
bG9jYXRpb249d29ya2VyeGhyLW9yaWdpbi1yZWZlcnJlci5qc1xuIgogRkFJTCBPcmlnaW4gaGVh
ZGVyIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJPcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MFxuIiBidXQgZ290ICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggODZkZjI3ZDViYWJiLi42NDdjNGM4NWY0YWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2LDYgKzY2LDg5IEBA
IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWdldFVzZXJNZWRpYS1wZW5kaW5nLXBy
b21pc2UuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtbWVk
aWFzdHJlYW0uaHRtbCBbIFNraXAgXQogbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS5odG1s
IFsgU2tpcCBdCiAKKyMgU2hhcmVkIHdvcmtlcnMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIFdl
YktpdDIuCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNz
aWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hh
cmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2Ny
aXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAu
aHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQt
c3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90
b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNs
YXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1zZWxm
L3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93
b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNlbGYvc2hhcmVk
d29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1l
dGEvc2NyaXB0LXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0
dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3
b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3Jj
LXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0
YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWNsYXNzaWMuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1zZWxmL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5o
dG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLW1v
ZHVsZS5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJk
L3NoYXJlZHdvcmtlci1jbGFzc2ljLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29y
a2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0
cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXdpbGRjYXJkL3NoYXJlZHdv
cmtlci1tb2R1bGUuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1jb25uZWN0LXNyYy5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1yZXBvcnQtb25seS5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9pbnNpZGUtd29ya2VyL3NoYXJlZHdvcmtl
ci1zY3JpcHQtc3JjLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NhbmRib3gvc2hhcmVkLXdvcmtlci1zYW5k
Ym94Lmh0bWwgIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWRhdGEtc2V0LXRpbWVvdXQuc3Vi
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtY2hpbGQuc3ViLmh0bWwgWyBTa2lwIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kv
Z2VuL3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEu
aHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC9zY3JpcHQtc3JjLXNlbGYvc2hhcmVk
d29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3Nj
cmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2Vu
L3RvcC5odHRwLXJwL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRh
Lmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvc2NyaXB0LXNyYy13aWxkY2FyZC9z
aGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAt
cnAvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3JrZXItY2xhc3Np
Yy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMtbm9uZS9zaGFy
ZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3Jr
ZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9n
ZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLW5vbmUvc2hhcmVk
d29ya2VyLW1vZHVsZS5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1z
cmMtbm9uZS9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5o
dHRwLXJwL3dvcmtlci1zcmMtc2VsZi9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cC5odG1s
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2dlbi90b3AuaHR0cC1ycC93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWlt
cG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRwLXJwL3dvcmtlci1zcmMt
c2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5odHRw
LXJwL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRt
bCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3Jr
ZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLmh0dHAtcnAvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4v
dG9wLmh0dHAtcnAvd29ya2VyLXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXIt
aW1wb3J0LWRhdGEuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS9zY3JpcHQtc3JjLXNl
bGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5t
ZXRhL3NjcmlwdC1zcmMtc2VsZi9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvZ2VuL3RvcC5tZXRhL3NjcmlwdC1zcmMtd2lsZGNhcmQvc2hhcmVkd29ya2VyLWltcG9ydC1k
YXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9z
aGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEv
c2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvc2NyaXB0LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItbW9kdWxlLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3Jr
ZXItY2xhc3NpYy5odHRwLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9u
ZS9zaGFyZWR3b3JrZXItY2xhc3NpYy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0YS93
b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9nZW4vdG9wLm1ldGEvd29ya2VyLXNyYy1ub25lL3NoYXJlZHdvcmtlci1pbXBvcnQtZGF0YS5o
dHRwLmh0bWwJWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtbm9uZS9zaGFyZWR3b3Jr
ZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2VyLXNy
Yy1ub25lL3NoYXJlZHdvcmtlci1tb2R1bGUuaHR0cC5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2dlbi90b3AubWV0
YS93b3JrZXItc3JjLW5vbmUvc2hhcmVkd29ya2VyLW1vZHVsZS5odHRwcy5odG1sIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2dlbi90b3AubWV0YS93b3JrZXItc3JjLXNlbGYvc2hhcmVkd29ya2VyLWltcG9ydC1kYXRhLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZ2VuL3RvcC5tZXRhL3dvcmtlci1zcmMtd2lsZGNhcmQvc2hhcmVk
d29ya2VyLWltcG9ydC1kYXRhLmh0dHAuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9nZW4vdG9wLm1ldGEvd29ya2Vy
LXNyYy13aWxkY2FyZC9zaGFyZWR3b3JrZXItaW1wb3J0LWRhdGEuaHR0cHMuaHRtbCBbIFNraXAg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS93b3JrZXItc3JjL3NoYXJlZC1mYWxsYmFjay5zdWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3Jj
L3NoYXJlZC1saXN0LnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3dvcmtlci1zcmMvc2hhcmVkLW5vbmUuc3Vi
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtc2VsZi5zdWIuaHRtbCBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS93
b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLWNoaWxkLWZhbGxiYWNrLWJsb2NrZWQuc3ViLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1jaGlsZC1mYWxsYmFjay5z
dWIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS93b3JrZXItc3JjL3NoYXJlZC13b3JrZXItc3JjLWRlZmF1bHQtZmFs
bGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNyYy1zY3Jp
cHQtZmFsbGJhY2suc3ViLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvd29ya2VyLXNyYy9zaGFyZWQtd29ya2VyLXNy
Yy1zZWxmLWZhbGxiYWNrLnN1Yi5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2RhdGEtdXJsLXNoYXJlZC13b3JrZXIuaHRtbCBbIFNr
aXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxp
bmUvbm8tYXBwY2FjaGUtaW4tc2hhcmVkLXdvcmtlcnMtaGlzdG9yaWNhbC5odHRwcy5odG1sIFsg
U2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3Nj
cmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlvbi1vcmRlci0xLW5v
dGhyb3ctc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L21v
ZHVsZS9ldmFsdWF0aW9uLW9yZGVyLTEtc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhl
LXNjcmlwdC1lbGVtZW50L21vZHVsZS9ldmFsdWF0aW9uLW9yZGVyLTItaW1wb3J0LXNoYXJlZHdv
cmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvZXZhbHVhdGlv
bi1vcmRlci0zLWR5bmFtaWMtc2hhcmVkd29ya2VyLmh0bWwgWyBTa2lwIF0KKwogaHR0cC93cHQv
bWVkaWFyZWNvcmRlciBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYWNhcHR1cmUtcmVjb3JkIFsgU2tpcCBdCiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRp
YS1yZWNvcmRlci5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvc2NyaXB0LXNyYy93b3JrZXItaW1wb3J0c2NyaXB0cy5zdWItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29ya2VyLWltcG9ydHNj
cmlwdHMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjZlZWExYmVhYjViMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1pbXBvcnRzY3JpcHRzLnN1Yi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgRGVkaWNhdGVkIHdvcmtlciBpbmhlcml0cyBDU1Ag
ZnJvbSBtYWluIGRvY3VtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJpbXBvcnRTY3JpcHRz
IGFsbG93ZWQiIGJ1dCBnb3QgImltcG9ydFNjcmlwdHMgYmxvY2tlZCIKK0ZBSUwgU2hhcmVkIHdv
cmtlciBkZWxpdmVycyBpdHMgb3duIENTUCBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvc2NyaXB0LXNyYy93
b3JrZXItc2V0LXRpbWVvdXQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9zY3JpcHQtc3JjL3dvcmtlci1zZXQtdGltZW91dC5zdWItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjc1YTNhOGUwZjBiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvd29y
a2VyLXNldC10aW1lb3V0LnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwg
RGVkaWNhdGVkIHdvcmtlciBpbmhlcml0cyBDU1AgZnJvbSBtYWluIGRvY3VtZW50IGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJzZXRUaW1lb3V0IGFsbG93ZWQiIGJ1dCBnb3QgInNldFRpbWVvdXQg
YmxvY2tlZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBkZWxpdmVycyBpdHMgb3duIENTUCBTaGFyZWQg
d29ya2VycyBhcmUgbm90IHN1cHBvcnRlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvYXBwY2FjaGUtd29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNo
ZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uN2YyY2Q1MThjN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uQ2Fj
aGUgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBTZXJ2aWNlV29ya2VycyBpbnN0ZWFkLgorCitQ
QVNTIERlZGljYXRlZCB3b3JrZXIgb2YgdGhlIGNhY2hlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVk
IHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQKK1BBU1MgRGVkaWNhdGVkIHdvcmtlciBv
ZiB0aGUgbm90LWluLWNhY2hlIHNjcmlwdAorRkFJTCBTaGFyZWQgd29ya2VyIG9mIHRoZSBjYWNo
ZWQgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRl
ZCIKK0ZBSUwgU2hhcmVkIHdvcmtlciBvZiB0aGUgZmFsbGJhY2tlZCBzY3JpcHQgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVk
RXJyb3I6IFNoYXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIgorRkFJTCBTaGFyZWQgd29y
a2VyIG9mIHRoZSBub3QtaW4tY2FjaGUgc2NyaXB0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBTaGFyZWQgd29y
a2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9tb2R1bGUvaW1wb3J0LW1ldGEvaW1wb3J0
LW1ldGEtdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90
aGUtc2NyaXB0LWVsZW1lbnQvbW9kdWxlL2ltcG9ydC1tZXRhL2ltcG9ydC1tZXRhLXVybC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMjQ5OWZh
ZGNiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEv
dGhlLXNjcmlwdC1lbGVtZW50L21vZHVsZS9pbXBvcnQtbWV0YS9pbXBvcnQtbWV0YS11cmwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKworUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSBy
b290IGV4dGVybmFsIHNjcmlwdAorUEFTUyBpbXBvcnQubWV0YS51cmwgaW4gYSBkZXBlbmRlbnQg
ZXh0ZXJuYWwgc2NyaXB0CitQQVNTIGltcG9ydC5tZXRhIGlzIGFuIG9iamVjdAorUEFTUyBpbXBv
cnQubWV0YSBpcyBleHRlbnNpYmxlCitQQVNTIGltcG9ydC5tZXRhJ3MgcHJvcGVydGllcyBhcmUg
d3JpdGFibGUsIGNvbmZpZ3VyYWJsZSwgYW5kIGVudW1lcmFibGUKK1BBU1MgaW1wb3J0Lm1ldGEu
dXJsIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUgd2l0aCBkaWZmZXJlbnQgZnJhZ21lbnRzCitQ
QVNTIGltcG9ydC5tZXRhLnVybCBpbiBhIHJvb3QgaW5saW5lIHNjcmlwdAorUEFTUyBpbXBvcnQu
bWV0YS51cmwgYXQgdG9wLWxldmVsIG1vZHVsZSBEZWRpY2F0ZWRXb3JrZXIKK0ZBSUwgaW1wb3J0
Lm1ldGEudXJsIGF0IHRvcC1sZXZlbCBtb2R1bGUgU2hhcmVkV29ya2VyIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiBTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA3OTJhMDBmOWVhMWEuLjQ1N2M0YWE5YjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE3OSw2ICsxNzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJDT1JFX0RJUn0vd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3dv
cmtlcnMvc2hhcmVkIgorICAgICIke1dFQkNPUkVfRElSfS93b3JrZXJzL3NoYXJlZC9jb250ZXh0
IgogICAgICIke1dFQkNPUkVfRElSfS93b3JrbGV0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0veG1s
IgogICAgICIke1dFQkNPUkVfRElSfS94bWwvcGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NWFjYzJkOWRmZTFlLi5mY2UwOTliYWRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTk1MSwx
MiArMTk1MSwxNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAogICAgIHdvcmtlcnMvV29ya2VyQW5pbWF0aW9uQ29udHJv
bGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJEZWJ1Z2dlclByb3h5LmgKKyAgICB3b3JrZXJzL1dv
cmtlckZldGNoUmVzdWx0LmgKICAgICB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCiAg
ICAgd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisgICAgd29ya2Vycy9Xb3Jr
ZXJPcHRpb25zLmgKICAgICB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKICAg
ICB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5
LmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCkBAIC0yMDAw
LDYgKzIwMDQsMTUgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKICAg
ICB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKIAorICAgIHdvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaAorICAgIHdvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlcktleS5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oCisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5o
CisgICAgd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaAorCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCisgICAgd29ya2Vy
cy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5oCisKICAgICB4bWwvQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uLmgKICAgICB4bWwv
WFBhdGhOU1Jlc29sdmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjY2Y2NmOGYwNmE1Li45YWI4NjA0
YzlkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzg2LDEwICsyNzg2LDEyIEBAIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKIHdvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAotd29ya2Vy
cy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKLXdvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlclByb3h5LmNwcAord29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5jcHAKK3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmNwcAogd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcAogd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcAord29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAKK3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhyZWFk
UHJveHkuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNiZjg3
NmUyNThmLi4xOGRmZWMwNjgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3ICs5MDMsNyBAQAogCQkyRTQzNDY0QjBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKIAkJMkU0MzQ2NEQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzQjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTG9jYXRp
b24uaCAqLzsgfTsKIAkJMkU0MzQ2NTAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDYzRTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCAqLzsgfTsK
LQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAqLzsgfTsKKwkJMkU0MzQ2NTEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
T2JqZWN0UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NDEwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2
MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNzU4NDFCMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVhZGVyTG9h
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTExMjUsNyArMTEyNSw3IEBACiAJCTQxNkEwNkExMjNDQ0FEMDMwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RDc1QTIyMEM2NTFBNTAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTBCM0EyMDlC
QzNDQjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNo
SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CisJCTQxNkUy
OUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGlu
Z0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEgLyogSlNET01CaW5kaW5nSW50ZXJu
YWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNzQgLyogVHJhbnNmb3JtU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFQSAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzIwLDYgKzEzMjAsOCBAQAogCQk0NjBFMzA3NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8q
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1
NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyN0ZGNTkyNzlCODI0OTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjI3RkY1ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NjI3RkY1QjI3OUI4N0FGMDBBQTM5MTYgLyogU2hhcmVkV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjJDN0Y0MTI3NTZEQkU0MDBE
MDgzQzggLyogV2ViTG9ja0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzgwMkIyMjc0NzExODUwMERBOUZCNiAvKiBXZWJMb2NrSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNB
MkM2NyAvKiBTY3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjM0QzcyQzI3NTdEQUIyMDAyNkE4MTUgLyogV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3ODAyQjAyNzQ3MTE3QjAwREE5RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM0MSwx
NSArMTM0MywxOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3Bl
bnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2N0E2OEQ3Mjc1RUE5
OTEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKIAkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3QTY4RDUyNzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5oICovOyB9OwotCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVk
V29ya2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0E2OEQ2Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovOyB9
OwotCQk0NjdBNjhEQTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QTY4RDIyNzVF
QTk4QTAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCAqLzsgfTsKIAkJNDY4MkQyMDAx
Rjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYz
REIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODNERjQwMjc2N0RGOTgwMDdE
MDBDOCAvKiBKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzREYzRTI3NjdERjk4MDA3RDAwQzggLyog
SlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oICovOyB9OwogCQk0NjgzREY0MTI3NjdFOTFB
MDA3RDAwQzggLyogU2hhZG93UmVhbG1HbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNo
YWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5N
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4
RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2
MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDY5NDNEQzkyNzYzRjgxNzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlclByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0
M0RDNDI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyUHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0Njk4NUYyMzI3QTRBNkFE
MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk4NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29y
a2VyS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIw
MDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmln
YXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZBNzhC
MzQyNzk5QkQ3MTAwMTE1NEZFIC8qIFdvcmtlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUIxRDI2MjZGMThBNEIwMDg4MkRBMiAvKiBX
b3JrZXJPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEz
QTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZC
NjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM2Niw2ICsxMzcxLDcg
QEAKIAkJNDZCRDA1QzYyNUJCNkU2QzAwMjI1RjMwIC8qIEV2ZW50TGlzdGVuZXJPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJEMDVDMzI1
QkI2RTRFMDAyMjVGMzAgLyogRXZlbnRMaXN0ZW5lck9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkMwOTYyMTIzRDc4REQ2MDA2NTdD
MDkgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMDk2MjAyM0Q3OERENjAwNjU3QzA5IC8qIEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkMzNzY2MjIwODUxNzdEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM3NjYx
MjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oICovOyB9OworCQk0NkM0MTY5
QjI3OUEwNEM3MDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MjZCNDc1Mjc5QTAzRDIw
MEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5Nzkz
NyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1
RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFB
OUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM3Myw2ICsxMzc5LDcgQEAKIAkJNDZEMDAwNDAy
NkEwRkVCMzAwRDFCRjFFIC8qIFN1Ym1pdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQwMDAzRTI2QTBGRTZGMDBEMUJGMUUgLyogU3VibWl0
RXZlbnQuaCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZERDkzRDcyNjlERTc1NjAw
MUFGRDg4IC8qIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkREOTNENTI2OURFNzRCMDAxQUZEODggLyog
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0NkREQkRBMzI3QTlDNzE2MDA3NzM0N0EgLyogV29ya2Vy
RmV0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RERCREExMjdBOUM3MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REU5QkI1MjY5
REY5M0UwMDI0QzVBNiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REU5QkI0MjY5REY5MzIwMDI0QzVB
NiAvKiBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRGRjQ5ODFEQzI2MDMxMDBCODBCNDggLyogU2hh
ZG93Um9vdE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2REZGNDk2MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2REZGNDlDMURDMjYy
MEIwMEI4MEI0OCAvKiBKU1NoYWRvd1Jvb3RNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGRjQ5QTFEQzI2MUY5MDBCODBCNDggLyogSlNTaGFk
b3dSb290TW9kZS5oICovOyB9OwpAQCAtOTE4MCw5ICs5MTg3LDEzIEBACiAJCTQ2MENCRjMzMUQ0
QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRDE5
NDQxRkNFMjFERDAwQzNEQjg1IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNkI0
NzUyNzlBMDNEMjAwQUVGMEIyIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MjczQzIxMjdBMUNCQzcwMDZBMTVCOSAvKiBKU0F1ZGlvV29ya2xldFBy
b2Nlc3NvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyN0ZGNTcyNzlCODI0NTAwQUEzOTE2IC8qIFNo
YXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDYyN0ZGNTgyNzlCODI0NjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjdGRjVBMjc5Qjg3QTIw
MEFBMzkxNiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFBQzIyNzEwMDBF
Q0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkyMjksMTQgKzkyNDAsMTAgQEAKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3ODAyQjAyNzQ3MTE3QjAwREE5
RkI2IC8qIFdlYkxvY2tNYW5hZ2VyU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0Njc4MDJCMjI3NDcxMTg1MDBEQTlGQjYgLyogV2ViTG9ja0lkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTG9ja0lkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4Q0YyNzVFQTk4OTAwOUIzMUM1IC8qIFNo
YXJlZFdvcmtlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QTY4RDAyNzVFQTk4OTAwOUIz
MUM1IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdBNjhEMTI3
NUVBOThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2N0E2OEQyMjc1RUE5OEEwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDY3QTY4RDMyNzVFQTk4QjAwOUIzMUM1IC8qIFNoYXJlZFdvcmtl
ck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ0Mjc1RUE5OEIwMDlCMzFDNSAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0E2OEQ1Mjc1RUE5OEMwMDlCMzFD
NSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2N0E2OEQ2
Mjc1RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFG
RjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MjQ5LDYgKzkyNTYsMTIgQEAKIAkJNDY4M0RGM0UyNzY3REY5ODAwN0QwMEM4IC8qIEpT
U2hhZG93UmVhbG1HbG9iYWxTY29wZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREMyMjc2M0Y4MEMwMDRCNjEwRSAv
KiBTaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3Jr
ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM0Mjc2
M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0
M0RDNTI3NjNGODBEMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzREM2Mjc2M0Y4MEUwMDRCNjEwRSAvKiBTaGFyZWRXb3Jr
ZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RD
NzI3NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJL
ZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENoYW5u
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAyMDA2
RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyODMsNiArOTI5Niw3IEBACiAJCTQ2QzM3
NjVGMjA4NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90
ZURPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURP
TVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzQThEMzI1NDhENEI3
MDBDOEM1M0EgLyogSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0F1ZGlvQnVmZmVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZD
NDE2OUQyNzlBMDREMjAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2QzkxRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOTQsNiArOTMwOCw3IEBACiAJCTQ2RDAwMDNGMjZBMEZFNzAw
MEQxQkYxRSAvKiBTdWJtaXRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3VibWl0
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCQjY0RTFBQjhDOTZG
MDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2REQ5M0Q1MjY5REU3NEIwMDFBRkQ4OCAvKiBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkREQkRBMTI3QTlDNzBDMDA3NzM0N0EgLyogV29ya2VyRmV0
Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRmV0Y2hS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERTlCQjQyNjlERjkzMjAw
MjRDNUE2IC8qIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
RkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd1Jvb3RNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2REZGNDk3MURDMjYwMTMwMEI4MEI0OCAvKiBTaGFkb3dSb290TW9kZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdE1vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3OTQsNiArMjA4MDksNyBAQAogCQkJCUE1MkIzNDlDMUZBNDE2
RjgwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggKi8sCiAJCQkJOUIwQUJDQTMyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5jcHAgKi8sCiAJCQkJOUIwQUJDQTQyMzY3
OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovLAorCQkJCTQ2RERCREExMjdBOUM3
MEMwMDc3MzQ3QSAvKiBXb3JrZXJGZXRjaFJlc3VsdC5oICovLAogCQkJCUE3RDZCMzQ4MEY2MTEw
NDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwICovLAogCQkJCUE3RDZCMzQ3
MEY2MTEwNDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuaCAqLywKIAkJCQkyRTQz
NDYzNjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuY3BwICovLApAQCAtMjE1
MTYsNiArMjE1MzIsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0NjI2QjQ3MzI3OUEwM0IxMDBBRUYwQjIgLyogY29udGV4dCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYyN0ZGNTcyNzlCODI0
NTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcCAqLywKKwkJCQk0NjI3RkY1
ODI3OUI4MjQ2MDBBQTM5MTYgLyogU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCAqLywKKwkJCQk0
NkM0MTY5RDI3OUEwNEQyMDAyNTJDM0IgLyogU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
ICovLAorCQkJCTQ2MjZCNDc1Mjc5QTAzRDIwMEFFRjBCMiAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDY0MjQwNDQyMEVBRjBCRDAwQjI5RkQyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNTUwLDE2ICsy
MTU3NywyMCBAQAogCQk0NjY5NENERTI3NTk0NDZEMDBFMzE1MEUgLyogc2hhcmVkICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjI2QjQ3MzI3OUEwM0Ix
MDBBRUYwQjIgLyogY29udGV4dCAqLywKIAkJCQk0NjY5NENFMzI3NTk0NDhEMDBFMzE1MEUgLyog
U2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0NjY5NENFMjI3NTk0NDhEMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyLmggKi8sCiAJCQkJNDY2OTRDRTUyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdv
cmtlci5pZGwgKi8sCiAJCQkJNDY2OTRDRTQyNzU5NDQ4RTAwRTMxNTBFIC8qIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk0NjY5NENFMTI3NTk0NDhDMDBFMzE1MEUgLyogU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLywKIAkJCQk0NjY5NENFMDI3NTk0NDhDMDBFMzE1MEUg
LyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovLAotCQkJCTQ2N0E2OEQzMjc1RUE5OEIw
MDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmNwcCAqLywKLQkJCQk0NjdBNjhEMjI3NUVB
OThBMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oICovLAotCQkJCTQ2N0E2OENGMjc1
RUE5ODkwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5jcHAgKi8sCi0JCQkJNDY3QTY4RDYy
NzVFQTk4QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggKi8sCisJCQkJNDYyN0ZGNUEy
NzlCODdBMjAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk4
NUYyMjI3QTRBNjg2MDA5N0EzMkIgLyogU2hhcmVkV29ya2VyS2V5LmggKi8sCisJCQkJNDY5NDNE
QzYyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQ2OTQzREM1Mjc2M0Y4MEQwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQzcyNzYzRjgwRTAwNEI2MTBFIC8qIFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaCAqLywKKwkJCQk0Njk0M0RDMjI3NjNGODBDMDA0QjYxMEUgLyog
U2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovLAorCQkJCTQ2OTQzREM0Mjc2M0Y4MEQwMDRCNjEw
RSAvKiBTaGFyZWRXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTQ2N0E2OEQxMjc1RUE5OEEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICovLAogCQkJCTQ2N0E2OEQ1Mjc1
RUE5OEMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCAqLywKIAkJCQk0NjdB
NjhEMDI3NUVBOTg5MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLywKQEAgLTMz
ODY2LDYgKzMzODk3LDcgQEAKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQw
MDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2NzJBQTk4MjZCMDk0MzMwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NkE3OEIzNDI3OTlCRDcxMDAxMTU0RkUgLyogV29ya2VyT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENy
b3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3MkFBOTkyNkIwOTQzRjAwRTZF
QzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFC
RTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMzOTA0LDYgKzMzOTM2LDcgQEAKIAkJCQk1N0ZFREQzRjFEQjZENTky
MDBFQjk2RjUgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyMUE5OEIxRUNFNTcwNDAwODEyOTVBIC8q
IENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyN0ZG
NTkyNzlCODI0OTAwQUEzOTE2IC8qIFNoYXJlZFdvcmtlclRocmVhZFByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODJDMTgyMkNGRUMwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNF
RjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM0MTMzLDYgKzM0MTY2LDcgQEAKIAkJCQk0NUZFQTVEMDE1NkRERThDMDA2NTQxMDEg
LyogRGVjaW1hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRD
IC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEMyMjhBMTEx
RDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZEREJEQTMyN0E5QzcxNjAwNzczNDdBIC8qIFdvcmtlckZldGNoUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVjb2RpbmdP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTNENThG
MTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzQ4OTAsNiArMzQ5MjQsNyBAQAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAv
KiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEVFQTEwMDI3
NDc1N0YxMDA1OTRBODMgLyogSW1hZ2VDb250cm9sc01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDZDNDE2OUIyNzlBMDRDNzAwMjUyQzNCIC8qIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VE
YXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJG
QiAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQw
MDBDNDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTE4
LDYgKzM1NTUzLDcgQEAKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMzMEMxN0I2OUUwMDVDOTBBMiAvKiBK
U05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDIwQjE4RDE4RTlEMjM3MDA1QTgwODMg
LyogSlNOb2RlTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzkyNzYzRjgx
NzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwRTJGMzMyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMg
LyogSlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjY2OSw2ICszNjcw
NSw3IEBACiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIwMDlENzQwMyAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZF
NkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQzgyNzYzRjgxMjAwNEI2MTBFIC8qIFNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNG
NUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MjlDOUFCMUY1OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMzcwNDYsNiArMzcwODMsNyBAQAogCQkJCTBGNjA1QUVEMTVG
OTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGNjJFRTgxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MjdGRjVCMjc5Qjg3QUYwMEFBMzkx
NiAvKiBTaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0
OTIxRjhBRDgzMDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUI0NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTcy
LDggKzM3MjEwLDYgQEAKIAkJCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91
dGluZ0FyYml0cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMy
NzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2N0E2
OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ3Mjc1RUE5OTEwMDlC
MzFDNSAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNERCMDI2
MjczMzlGRTAwMDdCMEFEMSAvKiBTaG91bGRMb2NhbGl6ZUF4aXNOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNzQwNyw2ICszNzQ0Myw3IEBACiAJCQkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktl
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlEMTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxOTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzgwNTMsNiArMzgwOTAsNyBAQAogCQkJCTgzQUNEMDEz
MjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM0QTZBM0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmtsZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcyQjMgLyogV29ya2xldFBlbmRpbmdUYXNr
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNEQ0EyNzYzRjgxQzAwNEI2MTBFIC8qIFNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1
NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8q
IFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCA4NDMxZjRjNTIxMTYuLjBjYjQ5YWY3YzU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU0Niw2ICs1NDYsMTEgQEAgU3RyaW5n
IFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS50
b1N0cmluZygpOwogfQogCitVUkwgU2VjdXJpdHlPcmlnaW46OnRvVVJMKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kYXRhLnRvVVJMKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVPcmln
aW5zTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjEsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4yKQogewogICAgIEFTU0VSVCgmb3JpZ2luMSAhPSAmb3JpZ2luMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggNjNkNjM0MTU5ZjY0Li5lMTU1ZWM2
ZjI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE5MCw2ICsxOTAs
OCBAQCBwdWJsaWM6CiAgICAgLy8gY291bGQgbWFrZSB0aGUgc3RyaW5nIHJldHVybiAibnVsbCIu
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvUmF3U3RyaW5nKCkgY29uc3Q7CiAKKyAgICBV
UkwgdG9VUkwoKSBjb25zdDsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxp
dHkgYmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCiAgICAgLy8gb25lIG9yaWdp
biBjYW4gYWNjZXNzIGFub3RoZXIuIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KICAg
ICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGlzU2FtZU9yaWdpbkRvbWFpbigpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU0OWNkY2QzNjJhZS4u
MWFiNzdmNmVkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCkBAIC00OSw2ICs0OSwxMSBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAn
OicsIHN0YXRpY19jYXN0PHVpbnQzMl90PigqcG9ydCkpOwogfQogCitVUkwgU2VjdXJpdHlPcmln
aW5EYXRhOjp0b1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTCB7IFVSTCgpLCB0b1N0cmlu
ZygpIH07Cit9CisKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IGZkZmM4NjQzZWFkZi4uYWMwODI4NTYxMjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTg2LDYgKzg2LDcg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgfQogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b1VSTCgpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFN0cmluZyBkZWJ1Z1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYzBmNTA5OGI4N2YuLmZhN2QyMzAyZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFNl
bGVjdGlvbikgXAogICAgIE0oU2VydmljZXMpIFwKICAgICBNKFNlcnZpY2VXb3JrZXIpIFwKKyAg
ICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShT
UUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApAQCAtMTI2LDYgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdl
YlJUQ1N0YXRzKSBcCisgICAgTShXb3JrZXIpIFwKICAgICBNKFhSKSBcCiAgICAgTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGZXRjaFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRjaFJl
c3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRmZWExZWJi
ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGZXRj
aFJlc3VsdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisj
aW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgorI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQgeworICAgIFNjcmlwdEJ1ZmZlciBzY3JpcHQ7
CisgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKKyAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsKKyAgICBTdHJp
bmcgcmVmZXJyZXJQb2xpY3k7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKworICAgIFdvcmtl
ckZldGNoUmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xh
dGVkQ29weSgpLCBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIGVycm9yLmlzb2xhdGVkQ29w
eSgpIH07IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXb3JrZXJGZXRjaFJlc3VsdCYpOworfTsK
KworaW5saW5lIFdvcmtlckZldGNoUmVzdWx0IHdvcmtlckZldGNoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CisgICAgcmV0dXJuIHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IGVycm9yIH07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFdvcmtlckZldGNo
UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgY3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBlcnJvciA8PCBjZXJ0aWZpY2F0ZUluZm87Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdvcmtlckZldGNoUmVzdWx0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucmVmZXJyZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LmNlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9wdGlv
bnMuaAppbmRleCBmYmRhZWFiZThhYjcuLjc3MzM5NWI3OWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDM2IEBAIHN0cnVjdCBXb3JrZXJPcHRp
b25zIHsKICAgICBXb3JrZXJUeXBlIHR5cGUgeyBXb3JrZXJUeXBlOjpDbGFzc2ljIH07CiAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6U2FtZU9yaWdpbiB9OwogICAgIFN0cmluZyBuYW1lOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlck9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXb3JrZXJPcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHR5
cGUgPDwgY3JlZGVudGlhbHMgPDwgbmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8V29ya2VyT3B0aW9ucz4gV29ya2VyT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBl
OworICAgIGRlY29kZXIgPj4gd29ya2VyVHlwZTsKKyAgICBpZiAoIXdvcmtlclR5cGUpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBkZWNvZGVyID4+IGNyZWRlbnRpYWxzOwor
ICAgIGlmICghY3JlZGVudGlhbHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5hbWU7CisgICAg
aWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqd29ya2VyVHlwZSwgKmNyZWRlbnRpYWxzLCBXVEZNb3ZlKCpuYW1lKSB9IH07Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAppbmRleCA0MDY3MTczYTg5YTUuLmI3MTg1YTVlZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCkBAIC0xNjMsNiArMTY0LDEx
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkKICAgICBpZiAoc291cmNlUHJvdmlkZXIpCiAgICAgICAgIGdsb2Jh
bFNjb3BlKCktPnNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcigqc291cmNlUHJvdmlkZXIpOwog
CisgICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBSRUxFQVNFX0xP
RyhXb3JrZXIsICJXb3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBTVUND
RVNTIik7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXb3JrZXIsICJXb3Jr
ZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoKSBGQUlMVVJFICgle3ByaXZhdGV9
cykiLCBleGNlcHRpb25NZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgLy8gRnJlZSB0aGUg
c3RhcnR1cCBkYXRhIHRvIGNhdXNlIGl0cyBtZW1iZXIgdmFyaWFibGUgZGVyZWYncyBoYXBwZW4g
b24gdGhlIHdvcmtlcidzIHRocmVhZCAoc2luY2UKICAgICAvLyBhbGwgcmVmL2RlcmVmcyBvZiB0
aGVzZSBvYmplY3RzIGFyZSBoYXBwZW5pbmcgb24gdGhlIHRocmVhZCBhdCB0aGlzIHBvaW50KS4g
Tm90ZSB0aGF0CiAgICAgLy8gV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkIGhhcHBlbnMgb24g
YSBkaWZmZXJlbnQgdGhyZWFkIHdoZXJlIGl0IHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5o
CmluZGV4IDkwYmRiMDQ1OTU3MS4uM2ZkMDZjZjk0OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFVzZSB0
aGUgZ2VuZXJpYyBXb3JrZXJGZXRjaFJlc3VsdCBpbnN0ZWFkLgogc3RydWN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdCB7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRh
dGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0
aW9uS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYzY2NjE0
ZmEyYzk2Li4yYWMwMmE3ZDRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtNTEsMTEgKzUxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
VVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQotewotICAgIHJl
dHVybiBVUkwgeyBVUkwgeyB9LCBvcmlnaW4udG9SYXdTdHJpbmcoKSB9OwotfQotCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0dXBQYWdlRm9yU2VydmljZVdvcmtlcihQYWdlJiBw
YWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7CiAgICAgYXV0byYg
bWFpbkZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKQEAgLTY4LDggKzYzLDkgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNlcnZpY2VXb3JrZXIoUGFnZSYgcGFn
ZSwgY29uc3QgU2VydmkKICAgICBhdXRvIG9yaWdpbiA9IGRhdGEucmVnaXN0cmF0aW9uLmtleS50
b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwogICAgIG9yaWdpbi0+c2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KHBhZ2Uuc2V0dGluZ3MoKS5zdG9yYWdlQmxvY2tpbmdQb2xpY3koKSk7CiAKLSAg
ICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXModG9wT3JpZ2luVVJMKG9yaWdpbikpOwotICAg
IGRvY3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh0b3BPcmlnaW5VUkwob3JpZ2luKSk7
CisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwoKTsKKyAgICBkb2N1bWVudC0+
c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRvY3VtZW50LT5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CiAgICAgZG9jdW1lbnQtPnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAgICBp
ZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGRhdGEucmVmZXJyZXJQb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDZhNTliMmVmZTlhMS4uOTI2ZDM1
NzA3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5u
ZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlck1h
bmFnZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgIldvcmtlck9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtNDEsOCArNDUsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoU2hhcmVkV29ya2VyKTsKIAotRXhjZXB0aW9uT3I8UmVmPFNoYXJlZFdv
cmtlcj4+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSlNDOjpSdW50
aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25z
KQorI2RlZmluZSBTSEFSRURfV09SS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICIlcCAtIFtpZGVudGlmaWVyPSV7cHVibGljfXNdIFNoYXJlZFdvcmtl
cjo6IiBmbXQsIHRoaXMsIG1faWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0dfRVJST1IoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIiVwIC0gW2lkZW50aWZpZXI9
JXtwdWJsaWN9c10gU2hhcmVkV29ya2VyOjoiIGZtdCwgdGhpcywgbV9pZGVudGlmaWVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIEhhc2hNYXA8U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2VyKj4mIGFsbFNoYXJlZFdvcmtl
cnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgU2hhcmVkV29ya2Vy
Kj4+IGFsbFNoYXJlZFdvcmtlcnM7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtlcnM7Cit9CisK
K1NoYXJlZFdvcmtlciogU2hhcmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbFNoYXJlZFdvcmtl
cnMoKS5nZXQoaWRlbnRpZmllcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbiogbWFpblRocmVhZENvbm5lY3Rpb24oKQogeworICAgIHJldHVybiBTaGFy
ZWRXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQor
eworICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQiIH07CisKICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzU2hh
cmVkV29ya2Vycyhkb2N1bWVudC50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiVGhpcyBpZnJhbWUgZG9lc24ndCBoYXZlIHN0b3JhZ2UgYWNj
ZXNzIl9zIH07CiAKQEAgLTY3LDI2ICs5NCwzMCBAQCBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29y
a2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBKU0M6OlJ1bgog
ICAgIGF1dG8gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQpOwogICAg
IGF1dG8gdHJhbnNmZXJyZWRQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS5kaXNlbnRhbmdsZSgpOwog
Ci0gICAgYXV0byBzaGFyZWRXb3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1
bWVudCwgY2hhbm5lbC0+cG9ydDEoKSwgcnVudGltZUZsYWdzKSk7CisgICAgYXV0byBzaGFyZWRX
b3JrZXIgPSBhZG9wdFJlZigqbmV3IFNoYXJlZFdvcmtlcihkb2N1bWVudCwgY2hhbm5lbC0+cG9y
dDEoKSkpOwogICAgIHNoYXJlZFdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBTaGFy
ZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0KHVybCwgc2hhcmVkV29ya2VyLmdl
dCgpLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydCksIFdURk1vdmUob3B0aW9ucykpOworICAgIENs
aWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9OworICAg
IG1haW5UaHJlYWRDb25uZWN0aW9uKCktPnJlcXVlc3RTaGFyZWRXb3JrZXIoY2xpZW50T3JpZ2lu
LCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKSwgdXJsLCBXVEZNb3ZlKHRyYW5zZmVycmVkUG9y
dCksIG9wdGlvbnMpOwogICAgIHJldHVybiBzaGFyZWRXb3JrZXI7CiB9CiAKLVNoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBv
cnQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncykKK1NoYXJlZFdvcmtlcjo6U2hhcmVk
V29ya2VyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX3BvcnQoV1RGTW92ZShw
b3J0KSkKICAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcigiU2hhcmVkV29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQotICAgICwg
bV9ydW50aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkpCi0gICAgLCBtX3Byb3h5KFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGUo
KnRoaXMpKQogeworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIlNoYXJlZFdvcmtlcjoi
KTsKKyAgICBhbGxTaGFyZWRXb3JrZXJzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiB9CiAK
IFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7Ci0gICAgbV9wcm94eS53b3JrZXJPYmpl
Y3REZXN0cm95ZWQoKTsKKyAgICBBU1NFUlQoYWxsU2hhcmVkV29ya2VycygpLmdldChtX2lkZW50
aWZpZXIpID09IHRoaXMpOworICAgIFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0coIn5TaGFyZWRX
b3JrZXI6Iik7CisgICAgYWxsU2hhcmVkV29ya2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwor
ICAgIEFTU0VSVCghbV9pc0FjdGl2ZSk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNo
YXJlZFdvcmtlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBAIC0xMDQsMTkgKzEz
NSwyNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBTaGFyZWRXb3JrZXI6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gU2hhcmVkV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6c3RvcCgpCit2b2lkIFNoYXJlZFdvcmtl
cjo6ZGlkRmFpbExvYWRpbmcoKQogewotICAgIHRlcm1pbmF0ZSgpOworICAgIFNIQVJFRF9XT1JL
RVJfUkVMRUFTRV9MT0dfRVJST1IoIn5kaWRGYWlsTG9hZGluZzoiKTsKKyAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKIH0KIAog
Ym9vbCBTaGFyZWRXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Byb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1faXNMb2FkaW5nOwor
ICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCi12b2lkIFNoYXJlZFdvcmtlcjo6dGVybWluYXRl
KCkKK3ZvaWQgU2hhcmVkV29ya2VyOjpzdG9wKCkKIHsKLSAgICBtX3Byb3h5LnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCk7CisgICAgU0hBUkVEX1dPUktFUl9SRUxFQVNFX0xPRygic3RvcDoi
KTsKKyAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgbWFpblRocmVhZENvbm5lY3Rpb24oKS0+
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkobV9pZGVudGlmaWVyKTsKIH0KIAorI3VuZGVm
IFNIQVJFRF9XT1JLRVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTSEFSRURfV09SS0VSX1JFTEVBU0Vf
TE9HX0VSUk9SCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmgKaW5kZXggNTMyNmVlNTQyYzg4Li44N2NjNzVlZmJl
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDM5ICsyNywzNSBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3Mu
aD4KKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXNz
YWdlUG9ydDsKLWNsYXNzIFNoYXJlZFdvcmtlclByb3h5OworY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IAogc3RydWN0IFdvcmtlck9wdGlvbnM7CiAKIGNsYXNzIFNoYXJlZFdvcmtlciBmaW5hbCA6IHB1
YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChTaGFyZWRXb3JrZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gY3JlYXRlKERvY3VtZW50JiwgSlNDOjpSdW50aW1l
RmxhZ3MsIFN0cmluZyYmIHNjcmlwdFVSTCwgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBXb3JrZXJPcHRpb25zPj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTaGFy
ZWRXb3JrZXI+PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiBzY3JpcHRVUkwsIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYpOwogICAgIH5TaGFy
ZWRXb3JrZXIoKTsKIAorICAgIHN0YXRpYyBTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIFNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIE1l
c3NhZ2VQb3J0JiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9Ci0gICAgSlND
OjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0K
IAogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllckZvckluc3BlY3RvcjsgfQotICAgIE1vbm90b25pY1RpbWUgY3JlYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KIAotICAgIFNoYXJlZFdv
cmtlclByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KLQotICAgIHZvaWQgc2V0SXNM
b2FkaW5nKGJvb2wgaXNMb2FkaW5nKSB7IG1faXNMb2FkaW5nID0gaXNMb2FkaW5nOyB9CisgICAg
dm9pZCBkaWRGYWlsTG9hZGluZygpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlcihEb2N1bWVudCYsIFJlZjxNZXNzYWdlUG9ydD4m
JiwgSlNDOjpSdW50aW1lRmxhZ3MpOwotCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICBTaGFy
ZWRXb3JrZXIoRG9jdW1lbnQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQuCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKQEAgLTcwLDEyICs2NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAKKyAgICBTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9y
dDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyRm9ySW5zcGVjdG9yOwotICAgIEpTQzo6UnVudGlt
ZUZsYWdzIG1fcnVudGltZUZsYWdzOwotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7
Ci0gICAgU2hhcmVkV29ya2VyUHJveHkmIG1fcHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0
aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIGJvb2wgbV9pc0xvYWRp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFy
ZWRXb3JrZXIuaWRsCmluZGV4IGIxNzFjOWVkZjgxYi4uNGM3NDE1NGQ4MjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5pZGwKQEAgLTI4LDcgKzI4
LDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdwogXQogaW50ZXJmYWNlIFNoYXJlZFdvcmtlciA6IEV2
ZW50VGFyZ2V0IHsKLSAgW0NhbGxXaXRoPURvY3VtZW50JlJ1bnRpbWVGbGFnc10gY29uc3RydWN0
b3IoVVNWU3RyaW5nIHNjcmlwdFVSTCwgb3B0aW9uYWwgKERPTVN0cmluZyBvciBXb3JrZXJPcHRp
b25zKSBvcHRpb25zKTsKKyAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcihVU1ZTdHJp
bmcgc2NyaXB0VVJMLCBvcHRpb25hbCAoRE9NU3RyaW5nIG9yIFdvcmtlck9wdGlvbnMpIG9wdGlv
bnMpOwogCiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCA0MTIxZWI1OGMyMDUuLjNjNTVhNjg3YmY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzMsMTcg
KzM5LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsKIAorI2RlZmluZSBTQ09QRV9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiJXAgLSBbc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OiIgZm10LCB0
aGlzLCB0aGlzLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKwogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQogICAgIDogV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2hhcmVkV29ya2VyLCBwYXJhbXMsIFdURk1v
dmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwg
c29ja2V0UHJvdmlkZXIpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBTQ09QRV9SRUxFQVNF
X0xPRygiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6Iik7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMo
cGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiB9CiAKK1NoYXJl
ZFdvcmtlclRocmVhZCYgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnRocmVhZCgpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVhZCY+KFdvcmtlckdsb2JhbFNjb3Bl
Ojp0aHJlYWQoKSk7Cit9CisKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkK
IHsKKyAgICBTQ09QRV9SRUxFQVNFX0xPRygiY2xvc2U6Iik7CiAgICAgdGhyZWFkKCkuc3RvcChu
dWxscHRyKTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d29ya2Vycy5odG1sI2RvbS1zaGFyZWR3b3JrZXIgc3RlcCAxMS41Cit2b2lkIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KFRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiB0
cmFuc2ZlcnJlZFBvcnQsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBTQ09QRV9SRUxF
QVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAgICBBU1NFUlQoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOworICAgIEFTU0VS
VChwb3J0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07CisgICAgQVNT
RVJUKHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3Zl
KHBvcnRzKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9y
aWdpbiwgeyB9LCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25u
ZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKK30KKworI3VuZGVmIFNDT1BFX1JFTEVBU0VfTE9HCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGYzNzc5Yjg0ZDE1MC4uMTVkZGM1MzhkYjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsMTEgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogY2xh
c3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2Nv
cGUgewpAQCAtMzksNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVHlwZTo6U2hhcmVkV29ya2VyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgU2hhcmVkV29ya2VyVGhyZWFkJiB0
aHJlYWQoKTsKKworICAgIHZvaWQgcG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBjbG9zZSgpOworCiBwcml2
YXRlOgogICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFk
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44N2E5NzIxMDQ4NzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFNo
YXJlZFdvcmtlcklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNoYXJlZFdvcmtlcklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNoYXJlZFdvcmtlcklkZW50aWZpZXJUeXBlPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvU2hhcmVkV29ya2VyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9T
aGFyZWRXb3JrZXJLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjVmOWU2ZGM5MGJhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2hhcmVkL1NoYXJlZFdvcmtlcktleS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNoYXJlZFdvcmtlcktleSB7
CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbjsKKyAgICBVUkwgdXJsOworICAgIFN0
cmluZyBuYW1lOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworfTsKKworaW5saW5lIHVu
c2lnbmVkIFNoYXJlZFdvcmtlcktleTo6aGFzaCgpIGNvbnN0Cit7CisgICAgSGFzaGVyIGhhc2hl
cjsKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4uaGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCB1cmwp
OworICAgIGFkZChoYXNoZXIsIG5hbWUpOworICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFdvcmtlcktleSYgYSwgY29uc3Qg
U2hhcmVkV29ya2VyS2V5JiBiKQoreworICAgIHJldHVybiBhLm9yaWdpbiA9PSBiLm9yaWdpbiAm
JiBhLnVybCA9PSBiLnVybCAmJiBhLm5hbWUgPT0gYi5uYW1lOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBrZXkuaGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYgYSwgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXk+IDog
R2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5PiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QudXJsKSBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnVybC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAxMjZiYzRmZWQ4Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkxvYWRlclN0
cmF0ZWd5LmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm94eS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clRocmVhZC5oIgotI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZFdvcmtlck1h
bmFnZXImIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYXJlZFdvcmtlck1hbmFnZXI+IGluc3RhbmNlOwotICAgIHJldHVybiBp
bnN0YW5jZS5nZXQoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpjb25uZWN0KGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dCYmIG1lc3NhZ2VQb3J0LCBXb3JrZXJPcHRpb25zJiYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VycyBmcm9tIG90
aGVyIHByb2Nlc3Nlcywgd2hpY2ggd2lsbCBwcm9iYWJseSByZXF1aXJlIG1vdmluZyBjb25uZWN0
IHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCBvciBzb21ldGhpbmcuCi0gICAgLy8gTWF5YmUgc29t
ZXRoaW5nIG1vcmUgbGlrZSB3aGF0IFNlcnZpY2VXb3JrZXJzIGRvZXMuCi0KLSAgICAvLyBGSVhN
RTogQ2hlY2sgaWYgd2UgYWxyZWFkeSBtYWRlIGEgdGhyZWFkLgotICAgIC8vIEZJWE1FOiBDaGVj
ayBpZiB0aGVyZSdzIGFscmVhZHkgYSBzaGFyZWQgd29ya2VyIGFuZCB1c2UgdGhhdCBpZiB0aGVy
ZSBpcy4KLQotICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI+KHVybCwgd29ya2VyLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0KSwgV1RGTW92ZShvcHRp
b25zKSk7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7Ci0gICAg
bV9sb2FkZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxvYWRlcikpOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRGYWlsZWQoU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyJiBsb2FkZXIpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQobG9hZGVyLndvcmtlcigpLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICBtX2xvYWRlcnMucmVtb3ZlKGxvYWRlci5p
ZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlck1hbmFnZXI6OnNjcmlwdExvYWRl
ZFN1Y2Nlc3NmdWxseShTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXImIGxvYWRlciwgY29uc3QgU2Ny
aXB0QnVmZmVyJiBzY3JpcHRCdWZmZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byYgd29ya2VyID0gbG9hZGVyLndvcmtlcigpOwotICAgIGF1dG8mIG9w
dGlvbnMgPSBsb2FkZXIub3B0aW9ucygpOwotCi0gICAgYXV0byYgcHJveHkgPSBzaGFyZWRXb3Jr
ZXIucHJveHkoKTsKLQotICAgIHByb3h5LnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoCi0gICAgICAg
IGxvYWRlci51cmwoKSwKLSAgICAgICAgb3B0aW9ucy5uYW1lLAotICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LnVzZXJBZ2VudChsb2FkZXIudXJsKCkpLAotICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwKLSAgICAgICAgc2NyaXB0
QnVmZmVyLAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5yZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSwKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KCksCi0gICAg
ICAgIHdvcmtlci5jcmVhdGlvblRpbWUoKSwKLSAgICAgICAgUmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nLAotICAgICAgICBvcHRpb25zLnR5cGUsCi0gICAgICAgIG9wdGlvbnMuY3JlZGVudGlh
bHMsCi0gICAgICAgIHdvcmtlci5ydW50aW1lRmxhZ3MoKQotICAgICk7Ci0gICAgaWYgKCFwcm94
eS50aHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OwotICAgIGF1dG8gc291cmNlT3JpZ2luID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLQotICAgIHByb3h5LnRo
cmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJh
bnNmZXJyZWRQb3J0KSwgc291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dvcmtlcnMuaHRtbCNkb20tc2hhcmVkd29ya2Vy
IHN0ZXAgMTEuNQotICAgICAgICBhdXRvIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCIiKTsKLSAgICAgICAgQVNTRVJUKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7Ci0gICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB7IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSB9KTsK
LSAgICAgICAgQVNTRVJUKHBvcnRzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgYXV0byBwb3J0ID0g
cG9ydHNbMF07Ci0gICAgICAgIEFTU0VSVChwb3J0KTsKLSAgICAgICAgYXV0byBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwotICAgICAgICBldmVu
dC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0K
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBh
dXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUuZGlz
cGF0Y2hFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0gICAgfSk7Ci0KLSAgICBtX2xvYWRlcnMucmVt
b3ZlKGxvYWRlci5pZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZGJkMzgxNTkyZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlNjcmlwdEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihT
aGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgdWludDY0X3QgbG9hZGVySWRlbnRpZmllclNl
ZWQgPSAwOworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCitTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9u
Ojp+U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KFVSTCYmIHVybCwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvKiB3b3JrZXJPYmplY3Qg
PSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coImZldGNoU2NyaXB0SW5DbGllbnQ6IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwdWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9i
amVjdCk7CisgICAgaWYgKCF3b3JrZXJPYmplY3QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworCisgICAgYXV0byBsb2FkZXJJZGVudGlmaWVyID0gKytsb2FkZXJJZGVu
dGlmaWVyU2VlZDsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWVSZWY8U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyPihXVEZNb3ZlKHVybCksICp3b3JrZXJPYmplY3QsIFdURk1vdmUod29ya2Vy
T3B0aW9ucykpOworICAgIGF1dG8gbG9hZGVyUHRyID0gbG9hZGVyLnB0cigpOworICAgIG1fbG9h
ZGVycy5hZGQobG9hZGVySWRlbnRpZmllciwgV1RGTW92ZShsb2FkZXIpKTsKKworICAgIGxvYWRl
clB0ci0+bG9hZChbdGhpcywgbG9hZGVySWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNo
UmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hT
Y3JpcHRJbkNsaWVudDogZmluaXNoZWQgc2NyaXB0IGxvYWQsIHN1Y2Nlc3M9JWQiLCBmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSk7CisgICAgICAgIGF1dG8gbG9hZGVyID0gbV9sb2FkZXJzLnRh
a2UobG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChsb2FkZXIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmZXRjaFJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvKiB3b3Jr
ZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZEZhaWx1cmU6IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtw
dWJsaWN9cywgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHdvcmtlck9iamVjdCk7CisgICAgaWYgKHdvcmtlck9iamVjdCkK
KyAgICAgICAgd29ya2VyT2JqZWN0LT5kaWRGYWlsTG9hZGluZygpOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSBTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVy
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1IoInBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyT2JqZWN0KTsKKyAgICBpZiAo
d29ya2VyT2JqZWN0KQorICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIEVycm9y
RXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCB7IH0pKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjUxOTExZDRhMTY3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZXNzYWdlUG9ydDsKK2NsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjsKKworc3RydWN0IENs
aWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBXb3JrZXJPcHRp
b25zOworCitjbGFzcyBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24oKTsKKworICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnQmJiwgY29uc3QgV29ya2VyT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmV0Y2hTY3JpcHRJbkNsaWVudChVUkwmJiwgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgV29ya2VyT3B0aW9ucyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVSZWY8
U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPj4gbV9sb2FkZXJzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZWJjZDRhN2FlODdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
b2Nlc3NRdWFsaWZpZWQuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFs
aWZpZWQ8T2JqZWN0SWRlbnRpZmllcjxTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyVHlwZT4+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDhlMTk3ZmEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm92aWRlci5jcHAKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTaGFyZWRXb3JrZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTaGFyZWRXb3JrZXJQcm92aWRlciogc2hhcmVkUHJvdmlkZXI7CisKKy8vIEZvciBXZWJLaXRM
ZWdhY3kuCitjbGFzcyBEdW1teVNoYXJlZFdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFNo
YXJlZFdvcmtlclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRXb3JrZXJPYmplY3RDb25u
ZWN0aW9uKiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQorfTsKKworU2hhcmVkV29ya2VyUHJvdmlkZXImIFNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKQoreworICAgIGlmICghc2hhcmVkUHJvdmlkZXIpCisgICAgICAgIHNoYXJlZFByb3Zp
ZGVyID0gbmV3IER1bW15U2hhcmVkV29ya2VyUHJvdmlkZXI7CisgICAgcmV0dXJuICpzaGFyZWRQ
cm92aWRlcjsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlk
ZXIoU2hhcmVkV29ya2VyUHJvdmlkZXImIG5ld1Byb3ZpZGVyKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKCFzaGFyZWRQcm92aWRlcik7CisgICAgc2hhcmVkUHJvdmlkZXIgPSAmbmV3UHJvdmlkZXI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3ZpZGVyLmgKc2ltaWxhcml0eSBpbmRleCA2NCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyTWFu
YWdlci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJQcm92aWRlci5oCmluZGV4IGFlZjgyNzkwMzU4NC4uY2I1N2NjMWU3YjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyUHJvdmlkZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjYg
KzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnRJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgiCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkV29ya2VyOwotY2xhc3MgU2NyaXB0QnVmZmVyOwot
c3RydWN0IFdvcmtlck9wdGlvbnM7Ci11c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3Rk
OjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyPjsKK2NsYXNzIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiAKLWNs
YXNzIFNoYXJlZFdvcmtlck1hbmFnZXIgeworY2xhc3MgU2hhcmVkV29ya2VyUHJvdmlkZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOwotCi0gICAgdm9pZCBzY3JpcHRMb2FkRmFpbGVk
KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYpOwotICAgIHZvaWQgc2NyaXB0TG9hZGVkU3VjY2Vz
c2Z1bGx5KFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTaGFyZWRXb3JrZXImLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYpOworICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoU2hhcmVkV29y
a2VyUHJvdmlkZXImKTsKIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcklkZW50aWZpZXIsIFVuaXF1ZVJlZjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+PiBt
X2xvYWRlcnM7CisgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyUHJvdmlkZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIHNoYXJlZFdvcmtlckNvbm5lY3Rp
b24oKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNiZTA3NTNmODkxZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb3h5LmgiCi0KLSNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1T
aGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHkoU2hhcmVkV29ya2VyJiBzaGFyZWRX
b3JrZXIpCi0gICAgOiBtX3NoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpCi0gICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoc2hhcmVkV29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAsIG1faWRlbnRpZmllckZvckluc3BlY3RvcihzaGFyZWRXb3JrZXIuaWRlbnRpZmllckZv
ckluc3BlY3RvcigpKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5OjpzdGFydFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTY3JpcHRCdWZmZXIm
IHNjcmlwdEJ1ZmZlciwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmln
aW4sIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFncyBy
dW50aW1lRmxhZ3MpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBwYXJhbWV0ZXJzID0gV29ya2VyUGFyYW1ldGVycyB7Ci0gICAgICAg
IHNjcmlwdFVSTCwKLSAgICAgICAgbmFtZSwKLSAgICAgICAgbV9pZGVudGlmaWVyRm9ySW5zcGVj
dG9yLAotICAgICAgICB1c2VyQWdlbnQsCi0gICAgICAgIGlzT25saW5lLAotICAgICAgICBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsCi0gICAgICAgIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwKLSAgICAgICAgY3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSwKLSAgICAgICAgdGltZU9yaWdpbiwKLSAgICAgICAgcmVmZXJyZXJQb2xpY3ksCi0g
ICAgICAgIHdvcmtlclR5cGUsCi0gICAgICAgIGNyZWRlbnRpYWxzLAotICAgICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkKLSAgICB9OwotCi0gICAgaWYgKCFt
X3dvcmtlclRocmVhZCkgewotICAgICAgICBtX3dvcmtlclRocmVhZCA9IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIHNjcmlwdEJ1ZmZlciwgKnRoaXMsICp0aGlzLCAqdGhp
cywgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+dG9wT3JpZ2luKCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aWRiQ29ubmVjdGlvblBy
b3h5KCksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c29ja2V0UHJvdmlkZXIoKSwgcnVudGlt
ZUZsYWdzKTsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0YXJ0KCk7Ci0gICAgfQotfQotCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpCi17Ci0g
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hc2tl
ZFRvVGVybWluYXRlID0gdHJ1ZTsKLSAgICBpZiAobV93b3JrZXJUaHJlYWQpCi0gICAgICAgIG1f
d29ya2VyVGhyZWFkLT5zdG9wKG51bGxwdHIpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlKQotewotICAgIC8vIEZJWE1FOiBTaGFyZWRXb3JrZXIgZG9lc24ndCBoYXZlIHBv
c3RNZXNzYWdlLCBzbyB0aGlzIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCi0gICAgcG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2Ny
aXB0Q29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIGF1dG8gcG9y
dHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1l
c3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBv
c3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKT4mJiB0YXNrKQotewotICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUo
dGFzaykpOwotfQotCi1ib29sIFNoYXJlZFdvcmtlclByb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAotewotICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eSAmJiAhbV9hc2tlZFRv
VGVybWluYXRlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojp3b3JrZXJPYmplY3REZXN0
cm95ZWQoKQotewotICAgIG1fc2hhcmVkV29ya2VyID0gbnVsbHB0cjsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKLSAgICAgICAgbV9tYXlCZURlc3Ryb3llZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3dvcmtl
clRocmVhZCkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCi17Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3dvcmtlclRocmVhZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwotICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Ci0gICAgICAgIGdsb2JhbFNjb3BlLmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShpc09ubGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpCi17Ci0KLX0KLQotdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgp
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIGlmICghbV9zaGFy
ZWRXb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gV2UgZG9uJ3QgYm90
aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4
Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBp
cyB0ZXJtaW5hdGVkLgotICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50
IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0
ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhl
IFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCi0gICAgICAg
IEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3NoYXJlZFdvcmtl
ciwgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JN
ZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgeyB9KSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkKCkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRJbnRlcm5hbCgpOwotICAgIH0pOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpCi17Ci0K
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KGJvb2wpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnJlcG9ydFBlbmRpbmdB
Y3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBoYXNQZW5kaW5nQWN0aXZpdHldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRp
bmdBY3Rpdml0eTsKLSAgICB9KTsKLX0KLQotUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+
IFNoYXJlZFdvcmtlclByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIHJldHVybiBkb2N1bWVu
dC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpOwotfQotCi1SZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bj4gU2hhcmVkV29ya2VyUHJveHk6OmNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24oKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0g
ICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclBy
b3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
KQotewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNr
KSk7Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmlu
ZyYpCi17Ci0KLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKQotewotCi19Ci0KLXZvaWQgU2hhcmVkV29ya2Vy
UHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQotewotICAgIC8vIFRo
aXMgaXMgYWx3YXlzIHRoZSBsYXN0IHRhc2sgdG8gYmUgcGVyZm9ybWVkLCBzbyB0aGUgcHJveHkg
aXMgbm90IG5lZWRlZCBmb3IgY29tbXVuaWNhdGlvbgotICAgIC8vIGluIGVpdGhlciBzaWRlIGFu
eSBtb3JlLiBIb3dldmVyLCB0aGUgV29ya2VyIG9iamVjdCBtYXkgc3RpbGwgZXhpc3QsIGFuZCBp
dCBhc3N1bWVzIHRoYXQgdGhlIHByb3h5IGV4aXN0cywgdG9vLgotICAgIG1fYXNrZWRUb1Rlcm1p
bmF0ZSA9IHRydWU7Ci0gICAgbV93b3JrZXJUaHJlYWQgPSBudWxscHRyOwotCi0gICAgLy8gVGhp
cyBiYWxhbmNlcyB0aGUgb3JpZ2luYWwgcmVmIGluIGNvbnN0cnVjdGlvbi4KLSAgICBpZiAobV9t
YXlCZURlc3Ryb3llZCkKLSAgICAgICAgZGVyZWYoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMzExZWJkNjA3OGJjLi5lYTJlMDQ4Yzc2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMyArMjksMjYgQEAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyTWFuYWdlci5oIgorI2luY2x1
ZGUgIldvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRXb3JrZXImIHdvcmtlciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBv
cnQsIFdvcmtlck9wdGlvbnMmJiBvcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX29wdGlvbnMo
V1RGTW92ZShvcHRpb25zKSkKK1NoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyKFVSTCYmIHVybCwgU2hhcmVkV29ya2VyJiB3b3JrZXIsIFdvcmtlck9wdGlv
bnMmJiBvcHRpb25zKQorICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBt
X3dvcmtlcih3b3JrZXIpCi0gICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKICAgICAsIG1fbG9h
ZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BlbmRpbmdBY3Rpdml0
eSh3b3JrZXIubWFrZVBlbmRpbmdBY3Rpdml0eSh3b3JrZXIpKQotICAgICwgbV91cmwodXJsKQor
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQogewotICAgIG1fd29ya2VyLT5zZXRJc0xvYWRpbmco
dHJ1ZSk7Ci0gICAgbV9sb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqd29ya2VyLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHdvcmtlci53b3JrZXJGZXRj
aE9wdGlvbnMob3B0aW9ucywgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2Vy
KSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VXb3JrZXJTcmNEaXJl
Y3RpdmUsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIG1f
bG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKm1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFJlc291cmNlUmVxdWVzdChtX3VybCksIG1fd29ya2VyLT53b3JrZXJGZXRjaE9wdGlv
bnMobV9vcHRpb25zLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIpLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVdvcmtlclNyY0RpcmVjdGl2
ZSwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCkBAIC01NSwxNiArNTgsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
IAogdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAg
ICBtX3dvcmtlci0+c2V0SXNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAobV9sb2FkZXItPmZhaWxl
ZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wbGV0aW9uSGFuZGxlcih3b3JrZXJGZXRjaEVycm9y
KG1fbG9hZGVyLT5lcnJvcigpKSk7CiAKLSAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9sb2FkZXIt
PmZhaWxlZCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIG1fd29ya2Vy
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKLSAgICAgICAg
U2hhcmVkV29ya2VyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2NyaXB0TG9hZEZhaWxlZCgqdGhpcyk7
IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9IGVsc2UgeworICAgIGlmIChhdXRvKiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgbV9sb2FkZXItPmlkZW50aWZpZXIoKSwgbV9sb2FkZXItPnNjcmlwdCgpLnRv
U3RyaW5nKCkpOwotICAgICAgICBTaGFyZWRXb3JrZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zY3Jp
cHRMb2FkZWRTdWNjZXNzZnVsbHkoKnRoaXMsIG1fbG9hZGVyLT5zY3JpcHQoKSwgKm1fd29ya2Vy
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ya2VyLmdldCgpLCBzdGQ6OmV4Y2hhbmdl
KG1fcG9ydCwgeyB9KSk7IC8vIGRlbGV0ZXMgdGhpcy4KLSAgICB9CisgICAgbV9jb21wbGV0aW9u
SGFuZGxlcih7IG1fbG9hZGVyLT5zY3JpcHQoKSwgbV9sb2FkZXItPmNlcnRpZmljYXRlSW5mbygp
LCBtX2xvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIG1fbG9hZGVyLT5jcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5KCksIG1fbG9hZGVyLT5yZWZlcnJlclBvbGljeSgpLCB7IH0gfSk7IC8v
IGRlbGV0ZXMgdGhpcy4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIu
aAppbmRleCBiZjFkNGFlZjNhMDkuLmViMGI3MTQ1YmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
NyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM4
LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlcjsK
IGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyOwotdXNpbmcgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPjsKLQotdXNpbmcgVHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CitzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7
CiAKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlciA6IHByaXZhdGUgV29ya2VyU2NyaXB0
TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoY29uc3QgVVJMJiwgU2hhcmVkV29ya2VyJiwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYmLCBXb3JrZXJPcHRpb25zJiYpOworICAgIFNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcihVUkwmJiwgU2hhcmVkV29ya2VyJiwgV29ya2VyT3B0aW9ucyYmKTsKKwor
ICAgIHZvaWQgbG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVz
dWx0Jik+JiYpOwogCi0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFNoYXJlZFdvcmtlciYgd29ya2VyKCkg
eyByZXR1cm4gbV93b3JrZXIuZ2V0KCk7IH0KLSAgICBjb25zdCBXb3JrZXJPcHRpb25zJiBvcHRp
b25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgY29uc3QgV29ya2VyT3B0aW9ucyYgb3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAot
ICAgIGNvbnN0IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIGNvbnN0IFdvcmtlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIGNvbnN0IFJlZjxTaGFy
ZWRXb3JrZXI+IG1fd29ya2VyOwotICAgIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgbV9wb3J0Owog
ICAgIGNvbnN0IFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fbG9hZGVyOwotICAgIGNvbnN0IFJl
ZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTaGFyZWRXb3JrZXI+PiBtX3BlbmRp
bmdBY3Rpdml0eTsKICAgICBjb25zdCBVUkwgbV91cmw7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggOWVkNTU4OGZiZDc5Li5lZmUw
NWUyN2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkV29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRl
YnVnZ2VyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiBvYmplY3RQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCitTaGFy
ZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBX
b3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgb2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxh
Z3MgcnVudGltZUZsYWdzKQogICAgIDogV29ya2VyVGhyZWFkKHBhcmFtZXRlcnMsIHNvdXJjZUNv
ZGUsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBvYmplY3RQcm94eSwgc3RhcnRNb2RlLCB0
b3BPcmlnaW4sIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVGbGFncykK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1lKHBhcmFtZXRlcnMu
bmFtZS5pc29sYXRlZENvcHkoKSkKIHsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIl
cCAtIFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkOiIsIHRoaXMpOwogfQog
CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICIlcCAtIFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGU6IiwgdGhpcyk7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoc3RkOjpleGNoYW5nZShtX25hbWUsIHsgfSksIHBhcmFtZXRl
cnMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclRocmVhZC5oCmluZGV4IDJmMDU2ZjlkNTli
Yi4uOWVhMjQ4NDdkMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtMjUsMjEgKzI1LDI3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlck9iamVjdFBy
b3h5OwogCisvLyBGSVhNRTogTW92ZSB0byB3b3JrZXJzL3NoYXJlZC9jb250ZXh0LgogY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWQ+
IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRXb3Jr
ZXJUaHJlYWQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKworICAgIFNoYXJlZFdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlckRlYnVnZ2VyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIEpTQzo6UnVudGltZUZsYWdzKTsKKyAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQoU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVy
UHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFn
cyk7CiAKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pIGZpbmFsOwogICAgIEFTQ0lJTGl0ZXJhbCB0aHJlYWRO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNoYXJlZFdvcmtlciJfczsgfQog
CisgICAgU2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1f
bmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2E5MGQ5ODA1MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZFBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFyZWRX
b3JrZXJDb250ZXh0TWFuYWdlcj4gc2hhcmVkTWFuYWdlcjsKKyAgICByZXR1cm4gc2hhcmVkTWFu
YWdlcjsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIFNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyOjpzaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlck1hcC5nZXQoc2hhcmVkV29y
a2VySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0
b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyKQoreworICAgIGF1dG8gd29ya2VyID0gbV93b3JrZXJNYXAudGFrZShzaGFyZWRXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJTaGFyZWRXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RvcFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQgIiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
LCB3b3JrZXIuZ2V0KCkpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3b3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggdGhlIHRocmVhZCBiZWluZyB1bnJlc3Bv
bnNpdmUgaGVyZS4KKworICAgIGF1dG8mIHRocmVhZCA9IHdvcmtlci0+dGhyZWFkKCk7CisgICAg
dGhyZWFkLnN0b3AoW3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgLy8gU3BpbiB0aGUgcnVubG9vcCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzaGFyZWQgd29ya2Vy
IHRocmVhZCBwcm94eSwgYXMgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJlCisgICAgICAgIC8vIGEg
cmFjZSB0b3dhcmRzIGl0cyBkZXN0cnVjdGlvbi4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d29ya2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7IH0pOworICAgIH0pOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2hhcmVkV29ya2VycygpCit7CisgICAgd2hp
bGUgKCFtX3dvcmtlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHN0b3BTaGFyZWRXb3JrZXIobV93
b3JrZXJNYXAuYmVnaW4oKS0+a2V5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVjdGlvbi0+aXNDbG9z
ZWQoKSk7CisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKK30KKworYXV0
byBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigpIGNvbnN0IC0+IENvbm5l
Y3Rpb24qCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6cmVnaXN0ZXJTaGFyZWRXb3JrZXJUaHJlYWQoUmVmPFNo
YXJlZFdvcmtlclRocmVhZFByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkOiBzaGFyZWRXb3JrZXJJZGVudGlm
aWVyPSUiIFBSSXU2NCwgcHJveHktPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gbV93b3JrZXJNYXAuYWRkKHByb3h5LT5pZGVudGlmaWVyKCksIHByb3h5LmNv
cHlSZWYoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIHByb3h5LT50aHJlYWQoKS5zdGFydChbXShjb25zdCBTdHJpbmcmIC8qZXhjZXB0aW9u
TWVzc2FnZSovKSB7IH0pOworfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50KFNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVk
V29ya2VySWRlbnRpZmllciwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVkUG9y
dCwgU3RyaW5nJiYgc291cmNlT3JpZ2luKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byogcHJveHkgPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjpw
b3N0Q29ubmVjdEV2ZW50OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBwcm94
eT0lcCIsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSwgcHJveHkpOworICAgIGlm
ICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW3RyYW5zZmVycmVkUG9ydCA9IFdURk1vdmUodHJhbnNmZXJyZWRQb3J0KSwg
c291cmNlT3JpZ2luID0gV1RGTW92ZShzb3VyY2VPcmlnaW4pLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBkb3duY2FzdDxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkucG9zdENvbm5lY3RFdmVudChXVEZNb3ZlKHRyYW5zZmVy
cmVkUG9ydCksIFdURk1vdmUoc291cmNlT3JpZ2luKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29y
a2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc3RvcFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
aGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQ3OTM3YzkxZTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk7
CisKK2NsYXNzIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigp
OworCisgICAgU2hhcmVkV29ya2VyVGhyZWFkUHJveHkqIHNoYXJlZFdvcmtlcihTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHN0b3BTaGFyZWRXb3JrZXIoU2hhcmVkV29y
a2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2hhcmVkV29y
a2VycygpOworCisgICAgY2xhc3MgQ29ubmVjdGlvbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKSA9IDA7CisgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQo
KSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxl
cnMuCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdENvbm5lY3RFdmVudChTaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYsIFN0cmluZyYmIHNvdXJj
ZU9yaWdpbik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlU2hhcmVkV29y
a2VyKFNoYXJlZFdvcmtlcklkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9v
bCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFJlZjxTaGFyZWRXb3JrZXJU
aHJlYWRQcm94eT4mJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyPjsKKworICAgIFNoYXJlZFdvcmtlckNvbnRl
eHRNYW5hZ2VyKCkgPSBkZWZhdWx0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBIYXNoTWFwPFNoYXJlZFdvcmtlcklkZW50aWZpZXIsIFJlZjxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29u
dGV4dC9TaGFyZWRXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NoYXJlZC9jb250ZXh0L1NoYXJlZFdvcmtlclRocmVhZFByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM5ZGY5MDZhNWRlYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2NvbnRleHQvU2hhcmVkV29ya2VyVGhy
ZWFkUHJveHkuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaCIKKworI2lu
Y2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgSGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+JiBh
bGxTaGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxTaGFyZWRXb3JrZXJUaHJlYWRQcm94eSo+PiBzZXQ7CisgICAgcmV0dXJuIHNl
dDsKK30KKworc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgd29ya2VyRmV0
Y2hSZXN1bHQsIFdvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBXb3JrZXJQYXJhbWV0
ZXJzIHsKKyAgICAgICAgc2NyaXB0VVJMLAorICAgICAgICB3b3JrZXJPcHRpb25zLm5hbWUsCisg
ICAgICAgICJzaGFyZWR3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksCisgICAgICAgIHVzZXJBZ2VudCwKKyAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIHdvcmtl
ckZldGNoUmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwKKyAgICAgICAgZmFsc2UsCisgICAg
ICAgIHdvcmtlckZldGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksCisgICAgICAg
IE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICB7IH0sCisgICAgICAgIHdvcmtlck9wdGlv
bnMudHlwZSwKKyAgICAgICAgd29ya2VyT3B0aW9ucy5jcmVkZW50aWFscywKKyAgICAgICAgZG9j
dW1lbnQuc2V0dGluZ3NWYWx1ZXMoKQorICAgIH07Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZFBy
b3h5OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyRmV0Y2hSZXN1
bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCwgV29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdl
UHJvdmlkZXIpCisgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fZG9jdW1lbnQo
Km1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkKFNo
YXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGdlbmVyYXRl
V29ya2VyUGFyYW1ldGVycyhzY3JpcHRVUkwsIHdvcmtlckZldGNoUmVzdWx0LCBXVEZNb3ZlKHdv
cmtlck9wdGlvbnMpLCB1c2VyQWdlbnQsIG1fZG9jdW1lbnQpLCBXVEZNb3ZlKHdvcmtlckZldGNo
UmVzdWx0LnNjcmlwdCksICp0aGlzLCAqdGhpcywgKnRoaXMsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZTo6Tm9ybWFsLCBjbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG1fZG9j
dW1lbnQtPmlkYkNvbm5lY3Rpb25Qcm94eSgpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigp
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKSkKKyAgICAsIG1fY2FjaGVT
dG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFhbGxT
aGFyZWRXb3JrZXJUaHJlYWRQcm94aWVzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbFNoYXJl
ZFdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBhZGRl
ZExpc3RlbmVyOworICAgIGlmICghYWRkZWRMaXN0ZW5lcikgeworICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5l
cigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CisgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwor
ICAgIH0KK30KKworU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6On5TaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eSgpCit7CisgICAgQVNTRVJUKGFsbFNoYXJlZFdvcmtlclRocmVhZFByb3hpZXMoKS5jb250
YWlucyh0aGlzKSk7CisgICAgYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92ZSh0
aGlzKTsKK30KKworU2hhcmVkV29ya2VySWRlbnRpZmllciBTaGFyZWRXb3JrZXJUaHJlYWRQcm94
eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyVGhyZWFkLT5pZGVu
dGlmaWVyKCk7Cit9CisKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTaGFyZWRXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
KyAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRl
ci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKK30KKworUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IFNoYXJlZFdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiBtX3BhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuY3JlYXRlUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBXVEZNb3ZlKHRhc2spLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHRhc2sucGVy
Zm9ybVRhc2socHJvdGVjdGVkVGhpcy0+bV9kb2N1bWVudC5nZXQoKSk7CisgICAgfSk7Cit9CisK
K2Jvb2wgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwordm9pZCBT
aGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYklu
c3BlY3Rvcihib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyVGhyZWFkUHJveHk6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSkK
K3sKKyAgICBmb3IgKGF1dG8qIHByb3h5IDogYWxsU2hhcmVkV29ya2VyVGhyZWFkUHJveGllcygp
KQorICAgICAgICBwcm94eS0+bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKK30K
Kwordm9pZCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
KGJvb2wgaXNPbmxpbmUpCit7CisgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpOworICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7Cisg
ICAgICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IFJlZiB7IGdsb2JhbFNjb3BlIH0sIGlzT25saW5l
XSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxp
bmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworfQor
CisvLyBGSVhNRTogVHJ5IGFuZCBzaGFyZSBjb2RlIHdpdGggU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcC4KK3ZvaWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnNldHVwUGFnZUZvclNoYXJl
ZFdvcmtlcihQYWdlJiBwYWdlLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiB3b3JrZXJGZXRjaFJl
c3VsdCkKK3sKKyAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgIG1h
aW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOworICAgIGF1
dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWlu
RnJhbWUsIHNjcmlwdFVSTCk7CisgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOworCisg
ICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBhdXRv
IG9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBv
cmlnaW4tPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwYWdlLnNldHRpbmdzKCkuc3RvcmFnZUJs
b2NraW5nUG9saWN5KCkpOworCisgICAgYXV0byBvcmlnaW5Bc1VSTCA9IG9yaWdpbi0+dG9VUkwo
KTsKKyAgICBkb2N1bWVudC0+c2V0U2l0ZUZvckNvb2tpZXMob3JpZ2luQXNVUkwpOworICAgIGRv
Y3VtZW50LT5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5Bc1VSTCk7CisgICAgZG9jdW1l
bnQtPnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CisKKyAgICBpZiAoYXV0byBwb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KHdv
cmtlckZldGNoUmVzdWx0LnJlZmVycmVyUG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZTo6SFRU
UEhlYWRlcikpCisgICAgICAgIGRvY3VtZW50LT5zZXRSZWZlcnJlclBvbGljeSgqcG9saWN5KTsK
KworICAgIG1haW5GcmFtZS5zZXREb2N1bWVudChXVEZNb3ZlKGRvY3VtZW50KSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyVGhyZWFkUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3No
YXJlZFdvcmtlcklkZW50aWZpZXIgPSBtX3dvcmtlclRocmVhZC0+aWRlbnRpZmllcigpLCBlcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKKyAgICB9KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFy
ZWQvU2hhcmVkV29ya2VyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL2Nv
bnRleHQvU2hhcmVkV29ya2VyVGhyZWFkUHJveHkuaApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJQcm94eS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9jb250ZXh0L1NoYXJlZFdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggZGI3Yjg1MDlkZjVhLi5mN2IyOTI0ZGJlMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvY29udGV4dC9TaGFyZWRXb3JrZXJU
aHJlYWRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5o
IgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT3B0aW9ucy5oIgpAQCAtMzQsMjkgKzM0LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hh
cmVkV29ya2VyOwogY2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkOwogCi1jbGFzcyBTaGFyZWRXb3Jr
ZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4s
IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHks
IHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewor
c3RydWN0IENsaWVudE9yaWdpbjsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKKworY2xhc3Mg
U2hhcmVkV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkV29ya2VyVGhyZWFkUHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBX
b3JrZXJEZWJ1Z2dlclByb3h5LCBwdWJsaWMgV29ya2VyT2JqZWN0UHJveHkgewogcHVibGljOgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBTaGFyZWRXb3JrZXJQcm94eSYg
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiAqbmV3IFNoYXJlZFdvcmtlclByb3h5KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXR1cFBhZ2VGb3JTaGFyZWRXb3JrZXIoUGFnZSYsIGNvbnN0IFVSTCYsIGNvbnN0IENs
aWVudE9yaWdpbiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik7CiAKLSAgICBTaGFyZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTaGFyZWRXb3JrZXJUaHJlYWRQ
cm94eT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZFdvcmtlclRocmVhZFByb3h5KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAg
flNoYXJlZFdvcmtlclRocmVhZFByb3h5KCk7CisKKyAgICBTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTaGFyZWRXb3JrZXJUaHJlYWQmIHRocmVhZCgpIHsg
cmV0dXJuIG1fd29ya2VyVGhyZWFkLmdldCgpOyB9CisKKyAgICBib29sIGlzVGVybWluYXRpbmdP
clRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQ7
IH0KKyAgICB2b2lkIHNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKSB7IG1faXNUZXJtaW5h
dGluZ09yVGVybWluYXRlZCA9IHRydWU7IH0KIAotICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU2NyaXB0QnVmZmVyJiBzb3VyY2VD
b2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgQ3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeSYsIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBKU0M6OlJ1bnRpbWVGbGFn
cykgZmluYWw7Ci0gICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1
bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKLSAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgd29ya2VyT2JqZWN0
RGVzdHJveWVkKCkgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9v
bCBpc09ubGluZSkgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgp
IGZpbmFsOwotICAgIHZvaWQgcmVzdW1lRm9yQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwotICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOwotICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5h
bDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgZmluYWw7Ci0gICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwotICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKICAgICBSZWZQdHI8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwog
ICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CkBA
IC02NCwxOCArNjIsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKIAorICAgIC8vIFdvcmtlck9iamVjdFByb3h5
CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgZmluYWw7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgp
IGZpbmFsIHsgfQorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sKSBmaW5hbCB7IH0KKwogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShTaGFy
ZWRXb3JrZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRXb3JrZXJUaHJlYWRQcm94eShV
bmlxdWVSZWY8UGFnZT4mJiwgU2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlckZldGNoUmVzdWx0JiYsIFdvcmtlck9w
dGlvbnMmJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJik7
CiAKLSAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICBz
dGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOworICAgIHZvaWQg
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV2Vha1B0cjxT
aGFyZWRXb3JrZXI+IG1fc2hhcmVkV29ya2VyOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOwotICAgIGNvbnN0IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY29uc3QgU3RyaW5nIG1faWRlbnRp
ZmllckZvckluc3BlY3RvcjsKLSAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21h
eUJlRGVzdHJveWVkIHsgZmFsc2UgfTsKKyAgICBVbmlxdWVSZWY8UGFnZT4gbV9wYWdlOworICAg
IFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBSZWY8U2hhcmVkV29ya2VyVGhyZWFkPiBt
X3dvcmtlclRocmVhZDsKKyAgICBDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOworICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDc1NmRhODhiNDVmNy4uMjlmNGM3ODE4MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYg
KzI4LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIKICAgICAiJHtXRUJLSVRfRElSfS9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyIgorICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlciIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL2NhY2hlIgogICAg
ICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UiCkBAIC0yMDIsNiArMjAzLDkg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAgICAgTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAorICAgIE5ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uCisgICAgTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24KKwogICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQKIAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24KQEAgLTMwNSw2ICszMDksOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyCiAKKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCA0YzY2MjIwY2YxMjIuLjcyMjljMWI5ODcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTEsNiArOTEsOCBAQCAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
bWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTIxNyw2ICsyMTksOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWUuLmE4NjMyODE0N2I1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02MDcs
NiArNjA3LDE4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggN2FkNDllMzczNWY0Li4zNTFmZmFlMGE1ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzMyw2ICsxMzMsOCBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2sgXAogCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzayBcCiAJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gXAorCU5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCiAJTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbSBcCiAJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MgXAog
CU5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlciBcCkBAIC0yMjUsNiArMjI3LDgg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKKwlXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkODVlZDg1ZDZmOTYuLmM3YjE3ZmQ3MDc4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY2LDYgKzY2LDExIEBACiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5o
IgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oPgpAQCAtMTMyLDYgKzEzNyw3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
OwogI2VuZGlmCisgICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwog
fQogCiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkKQEAgLTE2Niw2ICsxNzIsNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAgdW5y
ZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQpA
QCAtMjc1LDYgKzI4MiwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgaWYgKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgICAgIG1fc2hh
cmVkV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fc2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJu
IHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwpAQCAtMzk4LDkgKzQxNiw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCisgICAgbV9zaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAvLyBQcm90ZWN0IG91cnNl
bGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5nIHRoaXMgZnVuY3Rp
b24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0b3IoKnRo
aXMpOwpAQCAtNDQxLDYgKzQ1OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwogI2VuZGlmCisgICAg
dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVlfUkVNT1RFX1VJKQogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbnVsbHB0cjsKQEAgLTEx
ODYsNiArMTIwNCw2MSBAQCBzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZp
bmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlJlc291cgogICAgICAgICByZXR1cm4g
aXRlbS5yZXNvdXJjZUlEID09IHJlc291cmNlSUQ7CiAgICAgfSk7CiB9CisKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwg
ImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uOiIpOworICAgIGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzd1NlcnZlciA9IHNlc3Np
b24gPyBzZXNzaW9uLT5zaGFyZWRXb3JrZXJTZXJ2ZXIoKSA6IG51bGxwdHIpCisgICAgICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9t
YWluKSwgKnN3U2VydmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoi
KTsKKworICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3VyZVNoYXJlZFdvcmtlclNlcnZl
cigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0
KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0
aW9uID0gKmNvbm5lY3Rpb247CisgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3Nl
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiY2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjoi
KTsKKyAgICBtX3NoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAidW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb246Iik7CisgICAgaWYgKG1fc2hhcmVk
V29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3JrZXJDb25uZWN0aW9uLT5zZXJ2
ZXIoKS5yZW1vdmVDb25uZWN0aW9uKG1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbi0+d2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkK
K3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOworICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgbV9zaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZl
ckNvbm5lY3Rpb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAg
ICAgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigpOworICAgIHJldHVybiBt
X3NoYXJlZFdvcmtlckNvbm5lY3Rpb24uZ2V0KCk7Cit9CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
clNXQ29ubmVjdGlvbigpCkBAIC0xMjIzLDEwICsxMjk2LDEwIEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgbV9zd0Nv
bnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewotICAgIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZDogV2ViUHJvY2VzcyBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29y
a2VycyIpOwotICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OldvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVz
ZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24g
PSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDNhMWUxNDA0MzM4Zi4u
ZDBhYTRlZjc0NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4IEBA
IGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW07CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjsKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIG5hbWVzcGFj
ZSBOZXR3b3JrQ2FjaGUgewogc3RydWN0IERhdGFLZXk7CkBAIC0xODEsMTAgKzE4MywxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
KiBzd0Nvbm5lY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNo
VGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCisgICAgdm9pZCBzaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworCisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlvbigpOwogCiAgICAg
TmV0d29ya1NjaGVtZVJlZ2lzdHJ5JiBzY2hlbWVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc2NoZW1l
UmVnaXN0cnkuZ2V0KCk7IH0KIApAQCAtMjUzLDYgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZv
aWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJik7CiAKKyAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24oKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAt
MjYwLDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9u
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsb3NlU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKwogICAgIHZvaWQgY3JlYXRlUlRDUHJvdmlkZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lk
IGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBo
YW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pPiYmKTsK
QEAgLTQwNCw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKKyAgICBX
ZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24+IG1fc2hhcmVkV29ya2VyQ29u
bmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbj4gbV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKIAogI2lmIEVO
QUJMRShXRUJfUlRDKQogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRUb1JUQ0RhdGFDaGFubmVsUHJv
eHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMjQyODM1MDUwYjI0Li5iOTdjYTM0NzliNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODgsNiArODgsOSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xvc2VTV0Nv
bnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCisgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAg
Q2xvc2VTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisKICAgICBDcmVhdGVSVENQcm92
aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgQ29ubmVjdFRvUlRD
RGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
aGFuZGxlcikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA5YTMyZWEx
ODY1NGMuLmQ3NjE2Mjg1MGNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
IldlYlNXT3JpZ2luU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNjI5LDcgKzYzMCw3
IEBAIFNXU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU1dTZXJ2ZXIoKQogICAgICAgICAg
ICAgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KHRoaXMsIFdURk1vdmUoam9i
RGF0YSksIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9LCBbdGhpc10oYXV0byYgcmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAgICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6RXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKICAgICAgICAg
fSwgV1RGTW92ZShhcHBCb3VuZERvbWFpbnNDYWxsYmFjaykpOwogICAgIH0KICAgICByZXR1cm4g
Km1fc3dTZXJ2ZXI7CkBAIC02NTMsNiArNjU0LDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhh
c1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjpl
bnN1cmVTaGFyZWRXb3JrZXJTZXJ2ZXIoKQoreworICAgIGlmICghbV9zaGFyZWRXb3JrZXJTZXJ2
ZXIpCisgICAgICAgIG1fc2hhcmVkV29ya2VyU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOwor
fQorCiBXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQog
ewogICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxOTMwN2NmNDBiZTMuLjNmOWQ2Yzk1NTBhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAt
NzksNiArNzksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViSURC
U2VydmVyOwogY2xhc3MgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOwogY2xh
c3MgV2ViU29ja2V0VGFzazsKIGNsYXNzIFdlYlNXT3JpZ2luU3RvcmU7CiBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb247CkBAIC0yMTAsNiArMjExLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
U2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQs
IFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIqIHNoYXJlZFdvcmtlclNlcnZlcigpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyU2VydmVyLmdl
dCgpOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3JrZXJTZXJ2
ZXIoKTsKKwogICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJ
REJTZXJ2ZXIuZ2V0KCk7IH0KICAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigp
OwogICAgIHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTMxOCw2ICszMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySW5mbz4gbV9zZXJ2aWNlV29ya2VySW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1dTZXJ2ZXI+IG1fc3dTZXJ2ZXI7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NoYXJlZFdvcmtlclNlcnZlcjsKIAogICAgIFN0cmlu
ZyBtX2lkYkRhdGFiYXNlUGF0aDsKICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNl
cnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKaW5kZXggNWE4NzAzZWZkNmQ1Li4yN2Y2ZThkYTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYy
LDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisgICAgbV9j
b25uZWN0aW9uLnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRo
cm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2M2
MzY0YWE1NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtMCwwICsxLDI5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OldlYlNoYXJlZFdvcmtlclNlcnZlcihOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworfQorCitX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6On5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIoKSA9IGRlZmF1bHQ7
CisKK1BBTDo6U2Vzc2lvbklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKK3sK
KyAgICByZXR1cm4gbV9zZXNzaW9uLnNlc3Npb25JRCgpOworfQorCit2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCit7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IGtleSB7IG9yaWdpbiwgdXJsLCB3b3JrZXJPcHRp
b25zLm5hbWUgfTsKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5z
dXJlKGtleSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhcmVkV29ya2VyPihv
cmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucyk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVz
dFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9cywg
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisKKyAgICBpZiAoc2hhcmVkV29ya2VyLT53b3JrZXJPcHRpb25zLnR5cGUg
IT0gd29ya2VyT3B0aW9ucy50eXBlIHx8IHNoYXJlZFdvcmtlci0+d29ya2VyT3B0aW9ucy5jcmVk
ZW50aWFscyAhPSB3b3JrZXJPcHRpb25zLmNyZWRlbnRpYWxzKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNo
YXJlZFdvcmtlcjogQSB3b3JrZXIgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIG5hbWUgYnV0IGhh
cyBkaWZmZXJlbnQgdHlwZSAvIGNyZWRlbnRpYWxzIik7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2
ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24t
Pm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGFyZWRXb3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOwor
CisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkgPiAxKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxy
ZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNo
YXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkpOworICAgICAgICBpZiAoc2hh
cmVkV29ya2VyLT5pc1J1bm5pbmcpIHsKKyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0
aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVE
b21haW4oKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAg
ICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQorICAgICAgICAgICAgICAgIHBvc3RDb25uZWN0
RXZlbnQoKmNvbnRleHRDb25uZWN0aW9uLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIsIHBvcnQs
IG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlQoIXNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKTsKKworICAg
IGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChzZXJ2ZXJD
b25uZWN0aW9uKTsKKworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogRmV0Y2hpbmcgc2hhcmVkIHdvcmtlciBz
Y3JpcHQgaW4gY2xpZW50Iik7CisgICAgc2VydmVyQ29ubmVjdGlvbi0+ZmV0Y2hTY3JpcHRJbkNs
aWVudCh1cmwsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHdvcmtlck9wdGlvbnMsIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzaGFyZWRXb3JrZXIgPSBXZWFrUHRyIHsgKnNo
YXJlZFdvcmtlciB9XShXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0KSB7
CisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzaGFyZWRXb3JrZXIpCisgICAgICAgICAgICB3ZWFr
VGhpcy0+ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoKnNoYXJlZFdvcmtlciwg
V1RGTW92ZShmZXRjaFJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtl
clNlcnZlcjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uLCBTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtl
cikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OmxhdW5jaFNoYXJlZFdvcmtlcjogY29udGV4dENvbm5lY3Rpb249JXAsIHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIHNoYXJlZFdvcmtlci5p
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJl
ZFdvcmtlcihzaGFyZWRXb3JrZXIub3JpZ2luLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgc2hh
cmVkV29ya2VyLnVybCwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMsIHNoYXJlZFdvcmtlci5m
ZXRjaFJlc3VsdCk7CisgICAgc2hhcmVkV29ya2VyLmlzUnVubmluZyA9IHRydWU7CisgICAgYXV0
byBzb3VyY2VPcmlnaW4gPSBzaGFyZWRXb3JrZXIub3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmlu
ZygpOworICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmpl
Y3RzLnZhbHVlcygpKQorICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KGNvbnRleHRDb25uZWN0aW9u
LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllciwgcG9ydCwgc291cmNlT3JpZ2luKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RDb25uZWN0RXZlbnQoV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgc291cmNlUG9ydCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pCit7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpwb3N0Q29ubmVjdEV2ZW50OiBjb250ZXh0Q29ubmVjdGlvbj0lcCwgc2hhcmVk
V29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgc2hhcmVkV29y
a2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi5wb3N0Q29u
bmVjdEV2ZW50KHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIHNvdXJjZVBvcnQsIHNvdXJjZU9yaWdp
bik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1No
YXJlZFdvcmtlclNjcmlwdChTaGFyZWRXb3JrZXImIHdvcmtlciwgV2ViQ29yZTo6V29ya2VyRmV0
Y2hSZXN1bHQmJiBmZXRjaFJlc3VsdCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2Ny
aXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0lcCwgc3VjY2Vz
cz0lZCIsIHdvcmtlci5pZGVudGlmaWVyLnRvVUludDY0KCksICZ3b3JrZXIsIGZldGNoUmVzdWx0
LmVycm9yLmlzTnVsbCgpKTsKKyAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7
CisgICAgICAgIC8vIEZldGNoIGZhaWxlZCwgbm90aWZ5IHRoZSBTaGFyZWRXb3JrZXIgb2JqZWN0
cy4KKyAgICAgICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiB3b3Jr
ZXIuc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJDb25u
ZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgICAgICB9CisgICAgICAgIG1fc2hhcmVkV29ya2Vycy5yZW1vdmUo
d29ya2VyLmtleSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtlci5mZXRj
aFJlc3VsdCA9IFdURk1vdmUoZmV0Y2hSZXN1bHQpOworCisgICAgYXV0byByZWdpc3RyYWJsZURv
bWFpbiA9IHdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBsYXVuY2hTaGFyZWRXb3JrZXIoKmNvbnRleHRDb25uZWN0aW9uLCB3b3JrZXIp
OworfQorCitib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6
IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVnaXN0cmFibGVEb21h
aW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlv
bnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKKyAgICBpZiAobV9wZW5kaW5nQ29udGV4
dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24i
KTsKKworICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFi
bGVEb21haW4pOworICAgIG1fc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSB9LCBbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uIHNob3VsZCBub3cgaGF2ZSBjcmVhdGVkIGEgY29ubmVjdGlvbiIpOworCisgICAg
ICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21h
aW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisKKyAgICAgICAgaWYgKG1fY29udGV4dENv
bm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OmFkZENvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6YWRkQ29udGV4dENvbm5lY3Rp
b24oJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9u
LCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
CisgICAgQVNTRVJUKCFtX2NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhjb250ZXh0Q29ubmVj
dGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5h
ZGQoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbnRleHRDb25uZWN0
aW9uKTsKKworICAgIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChjb250ZXh0Q29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlv
bihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVj
dGlvbikKK3sKKyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0l
IiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4g
PSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOworCisgICAgQVNTRVJUKG1f
Y29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbikgPT0gJmNvbnRleHRDb25u
ZWN0aW9uKTsKKworICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURv
bWFpbik7CisKKyAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24o
cmVnaXN0cmFibGVEb21haW4pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCVwKSB3
ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVjdGlvbiwgY29udGV4
dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWlu
KCk7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsK
KyAgICAgICAgaWYgKHdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSAmJiByZWdpc3RyYWJsZURv
bWFpbi5tYXRjaGVzKHdvcmtlci0+dXJsKSkKKyAgICAgICAgICAgIGxhdW5jaFNoYXJlZFdvcmtl
cihjb250ZXh0Q29ubmVjdGlvbiwgKndvcmtlcik7CisgICAgfQorfQorCithdXRvIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2VySWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgor
eworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmICh3b3JrZXItPmlkZW50aWZpZXIgPT0gc2hhcmVkV29ya2VySWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiB3b3JrZXIuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOworfQorCithdXRvIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyQnlPYmpl
Y3RJZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikgLT4gU2hhcmVkV29ya2VyKgoreworICAgIGZvciAoYXV0
byYgd29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh3b3Jr
ZXItPnNoYXJlZFdvcmtlck9iamVjdHMuY29udGFpbnMoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllcikpCisgICAgICAgICAgICByZXR1cm4gd29ya2VyLmdldCgpOworICAgIH0KKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBzaGFy
ZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7
CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cj0le3B1YmxpY31zLCB3b3JrZXI9JXAiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgd29ya2VyKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgd29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzLnJlbW92ZShzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNodXREb3duU2hhcmVk
V29ya2VyKHdvcmtlci0+a2V5KCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiBrZXkp
Cit7CisgICAgYXV0byB3b3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMudGFrZShrZXkpOworICAgIFJF
TEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25T
aGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHdvcmtlcj0l
cCIsIHdvcmtlciA/IHdvcmtlci0+aWRlbnRpZmllci50b1VJbnQ2NCgpIDogMCwgd29ya2VyLmdl
dCgpKTsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dENvbm5lY3Rpb24tPnRlcm1pbmF0ZVNoYXJl
ZFdvcmtlcih3b3JrZXItPmlkZW50aWZpZXIpOworCisgICAgaWYgKCFuZWVkc0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkK
KyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjphZGRDb25uZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCit7
CisgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPndlYlByb2Nlc3NJZGVu
dGlmaWVyKCk7CisgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjphZGRDb25uZWN0aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBj
b25uZWN0aW9uLmdldCgpLCBwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NF
UlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMocHJvY2Vzc0lkZW50aWZpZXIpKTsKKyAgICBtX2Nv
bm5lY3Rpb25zLmFkZChwcm9jZXNzSWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSk7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGF1dG8gY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMudGFrZShwcm9jZXNzSWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0
aW9uKCVwKTogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCBjb25uZWN0aW9uLmdldCgpLCBw
cm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisK
KyAgICBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4gc2hhcmVk
V29ya2VyT2JqZWN0c0dvaW5nQXdheTsKKyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgOiB3b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKSB7CisgICAg
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9i
amVjdHNHb2luZ0F3YXkuYXBwZW5kKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAg
ICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
IDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKKyAgICAgICAgc2hhcmVkV29ya2VyT2Jq
ZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKK1dlYlNo
YXJlZFdvcmtlclNlcnZlcjo6U2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogaWRlbnRpZmllcihXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgb3JpZ2luKG9yaWdpbikK
KyAgICAsIHVybCh1cmwpCisgICAgLCB3b3JrZXJPcHRpb25zKHdvcmtlck9wdGlvbnMpCit7Cit9
CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGF1dG8qIHdvcmtlciA9IHNo
YXJlZFdvcmtlckJ5SWRlbnRpZmllcihzaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBSRUxF
QVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdDogc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQg
Iiwgd29ya2VyPSVwIiwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpLCB3b3JrZXIp
OworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cy5r
ZXlzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rp
b25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkp
KQorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgzMWUwYTQyYWI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyS2V5Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Xb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyT3B0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBDbGllbnRPcmlnaW47Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3Jr
U2Vzc2lvbjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb247CitjbGFzcyBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2Vy
dmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViU2hhcmVkV29ya2VyU2VydmVyKE5ldHdvcmtTZXNzaW9uJik7CisgICAgfldlYlNoYXJl
ZFdvcmtlclNlcnZlcigpOworCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisKKyAg
ICB2b2lkIHJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0JiYsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJik7CisgICAgdm9pZCBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dENv
bm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCisg
ICAgdm9pZCBhZGRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOworCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiogY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0
aW9ucy5nZXQoZG9tYWluKTsgfQorCisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworCisgICAgYm9vbCBuZWVkc0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3QgU2hh
cmVkV29ya2VyIDogQ2FuTWFrZVdlYWtQdHI8U2hhcmVkV29ya2VyPiB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBTaGFyZWRXb3JrZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYpOworCisgICAgICAgIGJvb2wgZGlkRmluaXNoRmV0Y2hpbmcoKSBjb25zdCB7IHJl
dHVybiAhIWZldGNoUmVzdWx0LnNjcmlwdDsgfQorICAgICAgICBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJLZXkga2V5KCkgY29uc3QgeyByZXR1cm4geyBvcmlnaW4sIHVybCwgd29ya2VyT3B0aW9ucy5u
YW1lIH07IH0KKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9
OyB9CisKKyAgICAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
OworICAgICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luOworICAgICAgICBVUkwgdXJs
OworICAgICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIHdvcmtlck9wdGlvbnM7CisgICAgICAg
IEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4gc2hhcmVkV29ya2VyT2JqZWN0czsKKyAgICAgICAgV2Vi
Q29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgZmV0Y2hSZXN1bHQ7CisgICAgICAgIGJvb2wgaXNSdW5u
aW5nIHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXJC
eUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CisgICAgU2hhcmVk
V29ya2VyKiBzaGFyZWRXb3JrZXJCeU9iamVjdElkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdv
cmtlclNjcmlwdChTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsK
KyAgICB2b2lkIGxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiwgU2hhcmVkV29ya2VyJik7CisgICAgdm9pZCBwb3N0Q29ubmVjdEV2ZW50
KFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgc2h1dERvd25TaGFyZWRX
b3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5Jik7CisKKyAgICBOZXR3b3JrU2Vz
c2lvbiYgbV9zZXNzaW9uOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uPj4gbV9jb25u
ZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9jb250ZXh0Q29ubmVjdGlvbnM7
CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29udGV4
dENvbm5lY3Rpb25Eb21haW5zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
LCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkV29ya2VyPj4gbV9zaGFyZWRXb3JrZXJzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uM2NmNjEwYjZiYjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5j
cHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVz
dWx0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
OjoiIGZtdCwgdGhpcywgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19FUlJPUihTaGFyZWRXb3JrZXIsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmll
cj0lIiBQUkl1NjQgIl0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRo
aXMsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKwor
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYlNoYXJlZFdvcmtlclNl
cnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9jb250ZW50Q29ubmVj
dGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykK
KyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2Vi
UHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24oKQoreworICAgIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0coIn5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOiIp
OworfQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
Q29ubmVjdGlvbi5wdHIoKTsKK30KKworUEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2Vy
dmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lv
bklEKCk7Cit9CisKK05ldHdvcmtTZXNzaW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKCkpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb246OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYm
IHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQoreworICAgIEFT
U0VSVChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcik7IC8vIEZJWE1FOiBTaG91bGQgYmUgYSBNRVNTQUdFX0NI
RUNLKCkuCisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicmVxdWVzdFNoYXJlZFdvcmtlcjog
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRX
b3JrZXJTZXJ2ZXIoKS5yZXF1ZXN0U2hhcmVkV29ya2VyKFdURk1vdmUob3JpZ2luKSwgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHBvcnQpLCBXVEZN
b3ZlKHdvcmtlck9wdGlvbnMpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25u
ZWN0aW9uOjpmZXRjaFNjcmlwdEluQ2xpZW50KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiZmV0Y2hTY3JpcHRJbkNsaWVudDog
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6RmV0Y2hT
Y3JpcHRJbkNsaWVudCB7IHVybCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgd29ya2Vy
T3B0aW9ucyB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVy
ZShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigibm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0l
e3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb246Ok5vdGlmeVdvcmtlck9iamVjdE9mTG9hZEZhaWx1cmUgeyBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rp
b246OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCit7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUigicG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0OiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7
cHVibGljfXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbjo6UG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uOjpzaGFyZWRX
b3JrZXJPYmplY3RJc0dvaW5nQXdheShXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKTsgLy8gRklYTUU6IFNob3VsZCBiZSBhIE1FU1NBR0VfQ0hFQ0soKS4KKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheTogc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31zIiwgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gdGhpcy0+c2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKS5zaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKyN1bmRl
ZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzY4NDlhYjAyZWFhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBX
b3JrZXJPcHRpb25zOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1By
b2Nlc3M7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJDb25uZWN0aW9uIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViU2hh
cmVkV29ya2VyU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIH5XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uKCk7CisKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CisgICAg
Y29uc3QgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlcjsgfQorCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCk7CisgICAgTmV0d29ya1Nl
c3Npb24qIHNlc3Npb24oKTsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICB2b2lkIGZldGNoU2NyaXB0SW5DbGllbnQoY29uc3QgVVJMJiwg
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6V29y
a2VyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V29ya2VyRmV0Y2hS
ZXN1bHQmJik+JiYpOworICAgIHZvaWQgbm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkRmFpbHVyZShX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6
Ok1lc3NhZ2VTZW5kZXIuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCisgICAgLy8gSVBDIG1lc3NhZ2VzLgor
ICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OlRyYW5z
ZmVycmVkTWVzc2FnZVBvcnQmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmKTsKKyAgICB2b2lk
IHNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVj
dGlvbjsKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZlcjsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmZhZTRhMDgwMzc3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgeworICAgIFJlcXVlc3RTaGFyZWRXb3JrZXIoc3RydWN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgVVJMIHVybCwgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCBwb3J0LCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRp
b25zKQorICAgIFNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40
OWMxMTI0MTUyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0co
Zm10LCAuLi4pIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIiVwIC0gW3dlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4sIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgc2VydmVyKQorICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAg
LCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjoiKTsKKyAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQor
CitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJ+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjoi
KTsKKyAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykKKyAgICAgICAgbV9z
ZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KKworV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30KKworSVBDOjpDb25uZWN0
aW9uKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICZpcGNDb25uZWN0aW9uKCk7Cit9
CisKK3VpbnQ2NF90IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9u
SXNOb0xvbmdlck5lZWRlZCgpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9H
KCJjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKK30KKwor
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIENP
TlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygicG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
OiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5wb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VySWRlbnRpZmllciwgZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2Vy
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zLCBjb25zdCBXZWJDb3JlOjpX
b3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpCit7CisgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNo
U2hhcmVkV29ya2VyIHsgb3JpZ2luLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHdvcmtl
ck9wdGlvbnMsIGZldGNoUmVzdWx0IH0pOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sK
KyAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coInBvc3RDb25uZWN0RXZlbnQ6IHNo
YXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6UG9zdENvbm5lY3RFdmVudCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IHBvcnQsIHNvdXJjZU9yaWdpbiB9KTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQoreworICAgIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRygidGVybWluYXRlU2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIgfSk7
Cit9CisKKyN1bmRlZiBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5mMDdmZjAzYTMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK2NsYXNz
IFNjcmlwdEJ1ZmZlcjsKK3N0cnVjdCBDbGllbnRPcmlnaW47CitzdHJ1Y3QgV29ya2VyRmV0Y2hS
ZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgV2ViU2hhcmVkV29y
a2VyU2VydmVyOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXImKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpOworCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9
CisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lk
IGxhdW5jaFNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lk
IHBvc3RDb25uZWN0RXZlbnQoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQg
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOworCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVj
dGlvbjsKKyAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CisgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTQ3YzEyMmNiYWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVz
c2FnZXMgLT4gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZD
b3VudGVkIHsKKyAgICBQb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNDRlMGE3YWNiN2I1Li43YjdjYzliYWM0
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC05Nyw2ICs5Nyw3IEBAIGV4dGVybiAi
QyIgewogICAgIE0oU2VydmljZVdvcmtlcikgXAogICAgIE0oU2Vzc2lvblN0YXRlKSBcCiAgICAg
TShTaGFyZWREaXNwbGF5TGlzdHMpIFwKKyAgICBNKFNoYXJlZFdvcmtlcikgXAogICAgIE0oU3Rv
cmFnZSkgXAogICAgIE0oU3RvcmFnZUFQSSkgXAogICAgIE0oVGV4dElucHV0KSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3ZWJmYTUxNmI1MDMuLjFhMjYx
ZTBiMTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0z
MDMsMTAgKzMwMywxMyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoJywKKyAgICAgICAgJ1dlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAorICAgICAgICAnV2ViQ29yZTo6VHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCcsCiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAgLTg1MSw2ICs4NTQsNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGUnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGEnOiBbJzxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUnOiBbJzxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPiddLAorICAgICAgICAnV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCc6IFsnPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OlVzZWRMZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWRlb1ByZXNldERhdGEnOiBbJzxXZWJD
b3JlL1ZpZGVvUHJlc2V0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMnOiBbJzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBk
ZjQ3Yzc4NmM4ZGUuLmU0YzA3ODc1MmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDEsNiArMTQxLDEw
IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5v
LXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAorCiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuY3BwCkBA
IC03ODIsNiArNzg2LDkgQEAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCitXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCitXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAogCkBAIC04ODQsMyArODkx
LDcgQEAgUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdv
cmtlckRvd25sb2FkVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFdlYkxvY2tSZWdpc3RyeVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAKK1dlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZDFiNDM3MTc2MzVmLi4zMzAyMGJkNWMzY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZp
ZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIHByb2Nl
c3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVk
Q1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MTUsMTYgKzE0MTUsMjEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2Vi
VXNlckNvbnRlbnQKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9u
SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3Rk
OjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBz
ZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQot
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICAgICAgcHJvY2Vz
cy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpCkBAIC0xNDYwLDYgKzE0NjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0kK
IH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKK30KKwog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVv
dGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggOGNiZDdkMDliNjZmLi42ODQxYTM0ZmUwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0z
MjcsMTMgKzMyNywxNSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQg
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNz
SWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKTsKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Npbmco
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KTsKICNlbmRpZgorICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTk5NzZiMjJl
NzNmLi4xNTc1N2VkOWEyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTUz
LDEzICs1MywxNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAg
ICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCisgICAgRXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiAg
ICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggZTQ5OTM1YzMyNWY2Li4xYWNiMzQ0NGFmYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5MSwxMSArMzY5MSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgbV91c2VyQWdlbnQgPSBXVEZNb3ZlKHVzZXJBZ2VudCk7CiAKLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0
aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVh
bCB3ZWIgcGFnZXMuCiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEg
YmV0dGVyIFVzZXItQWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0jZW5kaWYKKyAgICBwcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjZkNDlmYWMzZWE2Li40
YjE5YjBkMWQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblBy
b2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgewogICAgICAgICAv
LyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFnZSBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2VzcyBmb3Ig
dGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC0+
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOworICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICAgICAgICAgIGlmIChz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blBy
b2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNDIgKzU2NCw5MiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoTmV0d29ya1BybwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHByb2Nlc3NQ
b29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7
CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogCiAgICAgICAgICAg
ICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAg
ICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nl
c3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1
dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwg
ImVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5n
IGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMo
U2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0l
cCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAg
ICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNl
cnZpY2VXb3JrZXJzKCpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFi
bGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6
OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21h
aW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwogCi0gICAg
ICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEg
bmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOworICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2Vy
dmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2Vz
PSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICAgICAgcHJvY2Vzc1Bvb2wt
PmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9y
ZSk7CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQ
cm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwotICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHdv
cmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChw
cm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQ
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
IGlmICghcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2Vu
dChwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9v
bC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2Vz
LnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dv
cmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9
CisjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0g
ICAgQVNTRVJUKHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKKyAgICBBU1NFUlQo
d29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2VzcykpOworICAgIHdvcmtlclByb2Nlc3Nl
cygpLnJlbW92ZShwcm9jZXNzKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOworICAgIGlmICghd2Vic2l0ZURhdGFTdG9y
ZSkKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS5wdHIoKTsKKyAgICBpZiAoIXByb2Nlc3NQb29scygpLnNpemUoKSkKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdvcmtl
clByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisKKyAgICAvLyBBcmJpdHJhcmlseSBjaG9vc2Ug
dGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mu
CisgICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbHMoKVswXTsKKyAgICBBU1NFUlQo
cHJvY2Vzc1Bvb2wpOworCisgICAgV2ViUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkgeyBudWxscHRyIH07CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9v
bC0+bV9wcm9jZXNzZXMpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bv
b2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1By
b3h5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOworICAgICAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yV29ya2VycygpKTsKKworICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5p
c0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNz
Q2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nl
c3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CisgICAgICAgICAgICBBU1NFUlQo
IXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3Jr
ZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIs
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVn
aXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CisKKyAgICAgICAgV0VCUFJP
Q0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVy
KCkpOworCisgICAgICAgIHByb2Nlc3NQb29sLT5pbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQ
cm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBwcm9jZXNzUG9vbC0+bV9w
cm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAg
d29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHBy
b2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJl
ZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwo
KSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQo
cHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKQEAgLTEw
MDMsMTAgKzEwNTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92
ZUVudHJpZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgIHJl
bW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwotI2VuZGlmCisgICAgaWYg
KHByb2Nlc3MuaXNSdW5uaW5nV29ya2VycygpKQorICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJv
Y2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQq
PihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENs
b3NlKCZwcm9jZXNzKTsKIApAQCAtMTA2NywxMiArMTExNSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVE
YXRhU3RvcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkKK1VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3Jr
ZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
cikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CiAK
LSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyLT5pZGVu
dGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+
aWRlbnRpZmllcigpOwogfQogI2VuZGlmCiAKQEAgLTExMTksMTUgKzExNjcsMTMgQEAgUmVmPFdl
YlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCi0jaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsK
LSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0
b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy51cGRh
dGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXMpOworICAgIGlmICghbV93b3JrZXJQcmVmZXJlbmNlcykgeworICAgICAgICBtX3dvcmtlclBy
ZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOworICAgICAgICBmb3IgKGF1dG8m
IHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclBy
b2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7
CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsK
LSNlbmRpZgorICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2Vy
Q29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1Np
dGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRl
TmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE1MCwx
NiArMTE5NiwxNCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwog
fQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKIHsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkK
KyAgICBpZiAobV93b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47
Ci0gICAgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0
byYgc2VydmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkpCi0gICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2
aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICBtX3dvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsK
KyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKKyAgICAg
ICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2VyQWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOwog
fQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURh
dGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKQogewpAQCAtMTUzOCw4ICsxNTgyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIHdoaWxlIChzZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCkuY29tcHV0ZVNpemUoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nl
c3NlcygpLmJlZ2luKCktPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIFZlY3RvcjxSZWY8
V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICB3b3JrZXJQcm9j
ZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgICAgIGlmIChwcm9jZXNz
LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VX
b3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcykKKyAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAtMTc2NywxMyArMTgxNiwxMSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUs
IHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6c2Vydmlj
ZVdvcmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9j
ZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwogICAgIHJldHVybiBwcm9j
ZXNzZXM7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fz
c2VydGlvbnMoKQogewpAQCAtMTc4NSwyMCArMTgzMiwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBH
UFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3JlYXRlZCgpKQogICAgICAgICBncHVQcm9jZXNz
LT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisKICAgICAvLyBDaGVjayBvbiBuZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJv
Y2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW10gewotICAgICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNz
IDogc2VydmljZVdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3MudXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSAgICB9KTsKKyAg
ICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nl
c3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9j
ZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgorICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nl
c3MuaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQorICAgICAgICAgICAgICAgIHdvcmtlclByb2Nl
c3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcik7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiBib29sIFdlYlBy
b2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJldHVybiBXVEY6OmFueU9mKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6
OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAg
ICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAg
ICB9KTsKICNlbmRpZgpAQCAtMjEyNCwxNiArMjE3NiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2
aWNlVwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc2l6ZV90IFdlYlByb2Nlc3NQ
b29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBj
b3VudCA9IDA7CisgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2Vz
cykgeworICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAg
ICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKIGJvb2wg
V2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQ
cm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5o
YXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0pOwog
fQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yoc2VydmljZVdv
cmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55
T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJu
IHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IDQzMmM2NWVlOTk0OS4uZTcwYjZmNDI5ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKQEAgLTM3NCwxNyArMzc0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5l
dHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29sIGlzU2VydmljZVdvcmtl
clBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZy
b21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgc2l6ZV90IHNlcnZpY2VX
b3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KCkuY29tcHV0ZVNpemUoKTsgfQotICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMo
KTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgc2l6ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdDsK
KyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdy
b3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQg
c2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCisgICAgdm9p
ZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIHN0
YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJv
b2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCkBAIC02MTgsMTMg
KzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0
cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0
IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+JiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwotICAgIFN0cmluZyBtX3Nl
cnZpY2VXb3JrZXJVc2VyQWdlbnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0
b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yU2VydmljZVdvcmtl
cjsKLSNlbmRpZgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3b3Jr
ZXJQcm9jZXNzZXMoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4g
bV93b3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKKyAgICBTdHJpbmcgbV93
b3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPEdQ
VVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2JiZTAzYTdkYWUyLi4xOGFmMzQ2ZmRiMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTksNiArNTks
NyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbi5oIgpAQCAtMTgyLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKIH0K
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0
YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWlu
LCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGF1dG8gcHJveHkg
PSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRh
U3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIENhcHRpdmVQ
b3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0g
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPmVuYWJsZVNlcnZpY2VXb3Jr
ZXJzKHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNl
V29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNz
UG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICBw
cm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5NSwxMCArOTk2LDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAgIGNhbGxi
YWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNz
IGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZSB3b3JrZXJzLCBraWxs
IGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQu
Ci0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHko
KSkgewotICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFu
Y2VMb2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyBzZXJ2aWNlIHdv
cmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0gICAg
ICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBi
ZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtlcnMs
IGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBk
byBpdC4KKyAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNl
TG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9ubHkg
d2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKKyAgICAgICAgZGlzYWJs
ZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIgfSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2OTQsOCArMTY5
NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1h
aW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURv
bWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7
CisgICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2Vu
ZGlmCisKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRoaXMg
cHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAgICBt
X3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwogICAg
ICAgICByZXR1cm47CkBAIC0xODYxLDYzICsxODYzLDg1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0OiBTdGFydGVkIik7Ci0gICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNl
ZCgpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2wo
KS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlh
bGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBGaW5pc2hlZCIp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0sIDApOwotfQotCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2Vy
QWdlbnQgfSwgMCk7CisjZW5kaWYKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3Jr
ZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewot
ICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUg
eyBzdG9yZSB9LCAwKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDAp
OworI2VuZGlmCisgICAgaWYgKG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBk
YXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKQorLy8gRklYTUU6IENs
aWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbi4KK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbjoiKTsKLSAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwotICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRp
b24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBBU1NFUlQo
d29ya2VySW5mb3JtYXRpb24pOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAg
IHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6
YW55T2YobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1
dG8mIHByb2Nlc3MpIHsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJ1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVi
bGljfXMiLCB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQi
IDogInNlcnZpY2UiKTsKKworICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9
IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8m
IHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNz
Lm1fZm9yZWdyb3VuZFRva2VuOwogICAgIH0pOwogICAgIGlmIChzaG91bGRUYWtlRm9yZWdyb3Vu
ZEFjdGl2aXR5KSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVn
cm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3Vu
ZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICB3b3Jr
ZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHko
IldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGJvb2wgc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yo
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHBy
b2Nlc3MpIHsKKyAgICBib29sIHNob3VsZFRha2VCYWNrZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFu
eU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2JhY2tn
cm91bmRUb2tlbjsKICAgICB9KTsKICAgICBpZiAoc2hvdWxkVGFrZUJhY2tncm91bmRBY3Rpdml0
eSkgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0
aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAgICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7
CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0
eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAgICAgd29ya2VySW5mb3Jt
YXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJXb3JrZXIg
Zm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAo
d29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5k
IHByb2Nlc3NpbmciKTsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFj
a2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0g
ICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHBy
b2Nlc3NpbmciX3MpOworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAg
IHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBudWxscHRyOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxw
dHI7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIG1h
cmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91
cElEKCksIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VQcm94eUlELCBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURv
bWFpbiwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9LCAwKTsKK30KKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFy
dGVkIik7CisgICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VH
cm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQ
YWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPndvcmtlclBhZ2VJRCwgc3Rv
cmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgfSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCkBAIC0xOTI3LDcg
KzE5NTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGll
bnRQcm9jZXNzZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbigpOworICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKQEAgLTE5Mzcs
NyArMTk2MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94CiAKICAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94
eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
Y2xpZW50UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKKyAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2Vy
dmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdApAQCAtMTk1Nyw3
ICsxOTgxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7
CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAg
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CisgICAgdXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBA
IC0xOTY3LDIzICsxOTkxLDM5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxz
ZTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOworICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29y
a2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKLSAgICBpZiAoIW1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkp
OworCisgICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsKKyAgICBpZiAod29ya2VyVHlwZS5jb250
YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICAg
ICAgZGlkQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMo
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7
CisgICAgICAgIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgICAgIGRpZENo
YW5nZSA9IHRydWU7CisgICAgfQorICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2Fi
bGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3Jr
ZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9
JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3Jr
ZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKwogICAgIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKKyAgICBpZiAoIWlzUnVubmluZ1dv
cmtlcnMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2Vz
KCp0aGlzKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBwcm9jZXNzUG9vbCgp
LnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyAgICBp
ZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsg
fSwgMCk7CiAjZW5kaWYKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3du
KCk7CiB9CkBAIC0yMDA0LDExICsyMDQ0LDEzIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJU
eXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJlbmFibGVTZXJ2aWNlV29ya2VyczoiKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBl
PSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwor
ICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOworCisgICAgd29ya2VySW5mb3JtYXRpb24g
PSBXb3JrZXJJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6Omdl
bmVyYXRlKCksCiAgICAgICAgIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLAogICAgICAgICBT
ZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIHsKQEAgLTIwMjEsOSArMjA2Myw4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyCiAgICAgICAgIHsgfQogICAgIH07CiAgICAgdXBkYXRlQmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgorCisg
ICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZjUxNGI5OTE2YWQ0
Li4xOTJkNWQyYjZmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC0xMzYsOSArMTM2LDEzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hvdWxk
TGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0aXZl
UG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAgIGVudW0gY2xhc3Mg
V29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwK
KyAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCisgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3Jl
KiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1v
ZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJvY2Vz
cyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9jZXNz
UHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nlc3NQ
b29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwog
CiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCkBAIC0xNjEsOCArMTY1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxsU2h1
dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAgIHZvaWQgZW5hYmxlU2VydmljZVdvcmtlcnMoY29u
c3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisgICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVXb3Jr
ZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJz
aXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJu
ICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpOwpAQCAtMTk0LDYgKzE5OCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VDb3Vu
dCgpOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4g
ISFtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVTaGFy
ZWRXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2hhcmVkV29ya2Vycygp
ICYmICFwYWdlQ291bnQoKTsgfQorICAgIGJvb2wgaXNSdW5uaW5nV29ya2VycygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gfHwgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb247IH0KIAogICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0OwogCkBAIC0z
NTksMTIgKzM2NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFz
c2VydGlvbnMoKTsKIAorICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CisgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7
Ci0gICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFn
ZVByb3h5SUQ7IH0KLSAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7CisgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYm
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT53b3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJv
eHlJRDsgfQogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CkBAIC02NDgsMTQgKzY1NiwxNSBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAKLSAgICBzdHJ1Y3Qg
U2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKLSAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7Ci0gICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQYWdlSUQ7CisgICAgc3RydWN0IFdvcmtlckluZm9ybWF0aW9uIHsK
KyAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3b3JrZXJQYWdlUHJveHlJRDsKKyAgICAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd29ya2VyUGFnZUlEOwogICAgICAgICBTZXJ2aWNl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YTsKICAgICAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2aXR5OwogICAgICAgICBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAgICB9OwotICAgIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlckluZm9ybWF0aW9uPiBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uOwogICAgIGJvb2wgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTbGVlcERp
c2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+
PiBtX3NsZWVwRGlzYWJsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmI5YmUyYzBmZjE1Li43ZTI2ZDg3NTIxZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODgxLDYg
Kzg4MSw3IEBACiAJCTQ2MTRGMTMyMjVERUQ4NzUwMDcwMDZFNyAvKiBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QUM1MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMuaCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8qIFVJUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmggKi87IH07CiAJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYzMjM2ODMyMzE0ODFFRjAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87
IH07CisJCTQ2MUUxQkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJD
IC8qIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
LmggKi87IH07CiAJCTQ2NTlGMjVGMjc1RkY2QjIwMEJCQjM2OSAvKiBDYXB0aXZlUG9ydGFsTW9k
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjU5RjI1RTI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5o
ICovOyB9OwpAQCAtODkwLDYgKzg5MSw4IEBACiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAv
KiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAv
KiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87
IH07CisJCTQ2OTQzREQwMjc2M0Y4M0EwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5NDNE
Q0YyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmggKi87IH07CisJ
CTQ2OTQzREQxMjc2M0Y4M0YwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0
M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5o
ICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMw
MDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIu
aCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5
QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTg5NywxMCArOTAwLDEzIEBA
CiAJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQy
MkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2
QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUx
MjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsg
fTsKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4
MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CisJCTQ2
QzkxNkFBMjc5OUQwQTIwMDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzkxNkE5Mjc5OUQwOUQw
MDFBNEU3QyAvKiBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDZDRTNCMTEyM0Q4
Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZB
IC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovOyB9OworCQk0NkQ0OEZDRTI3OTlEN0Ux
MDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZENDhGQ0QyNzk5
RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oICovOyB9OwogCQk0NkVFMjg0OTI2OUUwNEFDMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmggKi87IH07CiAJCTQ2RUUyODREMjY5RTA1MjUwMERENDhBQiAvKiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkVFMjg0QzI2OUUwNTE3MDBERDQ4QUIgLyogTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5oICovOyB9OworCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2Vi
U2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDZGMzhFOEMyNDE2RTY3MzAwNTkz
NzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmlu
Z0JvYXJkU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8q
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5oICovOyB9OwogCQk0OTMxMDJCRDI2ODNGM0QwMDAyQkI4ODUgLyogQXBw
UHJpdmFjeVJlcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLzsg
fTsKQEAgLTEyNzQsNiArMTI4MCw3IEBACiAJCTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBj
b3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21v
ZGVsICovOyB9OwogCQk2QkU5NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkJFOTY5QzkxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCAqLzsgfTsKIAkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3
NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLzsgfTsKKwkJNkNBRUNCNjYy
NzQ2NUFFNDAwQUI3OEQwIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNBRUNCNUUyNzQ2NUFFMzAwQUI3OEQwIC8q
IFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OwogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEg
LyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQ
cml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLzsgfTsKIAkJNzEzNEEzREEyNjAzQjkyNTAwNjI0
QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0QTNEOTI2MDNCODBFMDA2MjRC
RDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKQEAgLTEz
NTEsNiArMTM1OCw3IEBACiAJCTdDOUQxNTM3MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0RUIxODI5OTNDRTAwRkM4QTQxIC8qIFdL
QnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dz
aW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NBMzc5M0UxQUMzNzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EzNzkzRDFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3Q0FFQ0I2NjI3NDY1QUU0MDBBQjc4RDAgLyogVW5pZmll
ZFNvdXJjZTExNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmllZFNvdXJjZTExNy5jcHAgKi87
IH07CiAJCTdDQjEwMEYxMUZBMzg1OEEwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTAwRUUx
RkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi87IH07CiAJCTdDQjEw
MEYyMUZBMzg1OEUwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0RFNzNBMzFGOURBQjY1
MDAzOTAzMTIgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oICovOyB9OwogCQk3Q0IxMDBG
MzFGQTM4NThFMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRjFGQTJENzRCMDAxNzI5RUUg
LyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi87IH07CkBAIC00MjE4LDYgKzQyMjYsOSBAQAogCQk0
NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5
OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBGNDg4RTFGOTk2
RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk0NjFFMUJFQzI3OUEwMTBFMDA2QUY1M0IgLyogV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkVGMjc5QTAxMEYwMDZBRjUzQiAvKiBXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAv
KiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIxMDdENzFG
MzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjMyMzY4MzIzMTQ4MUVGMDBBNDhGQTcgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzMjM2ODQyMzE0ODI1QzAwQTQ4RkE3IC8qIFdlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNDUsOCArNDI1NiwxNSBAQAogCQk0
NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9u
YWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9u
YWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4
MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2Vy
U2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgzODY2
ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8q
IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVn
aXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Njk0M0RDQzI3NjNGODM1MDA0
QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0Njk0M0RDRDI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTQzRENFMjc2M0Y4MzUwMDRCNjEwRSAv
KiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nl
c3NMYXVuY2hlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNr
Z3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQyNjIsNyArNDI4MCwxMSBAQAogCQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4Njcg
LyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkJFQjZFMjIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM5MjI4MjMxNkVDNEQwMDhF
RUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDOTE2QTgy
Nzk5RDA5RDAwMUE0RTdDIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkNFM0IxMDIzRDhDODNEMDAxNkE5NkEgLyogV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkQ0OEZD
QzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZENDhGQ0Qy
Nzk5RDdERTAwN0QyMDE0IC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYzOTFGMzkwNUU1MDAx
OTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDI3Miw2ICs0Mjk0LDcgQEAKIAkJNDZFRTI4NEEyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRTI4NEIyNjlFMDUxNzAwREQ0OEFCIC8qIE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUUyODRDMjY5RTA1MTcwMERENDhBQiAvKiBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGMzhF
OEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFwcFByaXZhY3lSZXBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ5OTAsNiArNTAxMyw3IEBACiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5NjlDOTFFNTRENENGMDA4Qjc0ODMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUNDMUU1NEUwNTQwMDhCNzQ4
MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5p
ZmllZFNvdXJjZTExNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE2LmNw
cDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2UxMTYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNkQ4
QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBwYXRoID0gV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3RvclByaXZhdGVN
YWMuaDsgcGF0aCA9IG1hYy9XS0luc3BlY3RvclByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTU0LDYgKzUxNzgsNyBAQAogCQk3QzlEMTUzNjE4
NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhB
NDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQTM3OTNEMUFDMzc4QjMwMDc5REMzNyAvKiBfV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Q0FFQ0I1RTI3NDY1QUUzMDBBQjc4RDAgLyogVW5pZmll
ZFNvdXJjZTExNy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE3LmNwcDsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2UxMTcuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJN0NCMTAw
RUUxRkEyRDc0QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0tleXMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1dlYlByZWZlcmVuY2VzS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tleXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViUHJlZmVyZW5jZXNLZXlzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTdDQjEwMEYwMUZBMkQ3ODQwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNl
c1N0b3JlRGVmYXVsdHNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNT
dG9yZURlZmF1bHRzTWFwLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJQcmVm
ZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwpAQCAtOTI3Nyw2ICs5MzAyLDIwIEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0NjgzODY2NTI3NjNGQTFCMDBDRjkxODIgLyog
U2hhcmVkV29ya2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk0NkQ0OEZDQzI3OTlEN0REMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDZENDhGQ0QyNzk5RDdERTAwN0QyMDE0IC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCAqLywKKwkJCQk0NkM5
MTZBODI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCAqLywKKwkJ
CQk0NkM5MTZBOTI3OTlEMDlEMDAxQTRFN0MgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyLmggKi8s
CisJCQkJNDZFRTNFOEEyNzYzRkQyQTAwNjBDNzBGIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNDY4Mzg2NjcyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0NjgzODY2ODI3NjNG
QUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkpOworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTQ2OURFODAxMjczRUNDNUQwMDkzMDI3NiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzI4LDYgKzkzNjcsNyBAQAogCQk1
MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ2ODM4NjY1Mjc2M0ZBMUIwMENGOTE4
MiAvKiBTaGFyZWRXb3JrZXIgKi8sCiAJCQkJRTQ4OUQyODIxQTBBMkJFODAwNzhDMDZBIC8qIGNh
Y2hlICovLAogCQkJCTdBODQzQTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lmaWVyICovLAog
CQkJCTdFQzRGMEY4MThFNEE5MjIwMDgwNTZBRiAvKiBjb2NvYSAqLywKQEAgLTk0MzYsNiArOTQ3
NiwxNCBAQAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDYxRTFCRUMyNzlBMDEwRTAw
NkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi8s
CisJCQkJNDYxRTFCRUYyNzlBMDEwRjAwNkFGNTNCIC8qIFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ2MUUxQkYwMjc5QTAxMEYwMDZBRjUzQiAvKiBX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJ
CQkJNDY5NDNEQ0UyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uY3BwICovLAorCQkJCTQ2OTQzRENEMjc2M0Y4MzUwMDRCNjEwRSAvKiBXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLmggKi8sCisJCQkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBF
IC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NDY5NDNEQ0MyNzYzRjgzNTAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcCAq
LywKKwkJCQk0Njk0M0RDRjI3NjNGODM1MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyUHJvdmlk
ZXIuaCAqLywKIAkJCQk0MTMxRjNFMDFGOTg3MTJDMDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8q
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1
QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKQEAgLTEyNzYx
LDYgKzEyODA5LDcgQEAKIAkJCQk0OUZCRjAwMDIzOUIxRjc1MDBCRDAzMkYgLyogX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDA5
MjM5RjA4RTAwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYzMTFGRDFBM0ZCNUY3MDA1QTJFNTEgLyog
X1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MUUx
QkYyMjc5QTAxMTYwMDZBRjUzQiAvKiBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjMxMUZFMUEzRkI2MDAwMDVBMkU1MSAvKiBf
V0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTI5MjUsNiArMTI5NzQsNyBAQAogCQkJCUUxNzA4
NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDZDOTE2QUEyNzk5RDBBMjAwMUE0RTdDIC8qIFdlYlNoYXJl
ZFdvcmtlclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcx
Mjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RUQ4MUY0MTVEOEEw
MDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFC
RDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzM5MCw2ICsxMzQ0MCw3IEBACiAJCQkJMUFDMTMzNjgxODU2NUI1NzAwRjNF
QzA1IC8qIFVzZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDQ5MUIwODFFNzBEMDVGMDAw
MDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVFM0U4QjI3NjNGRDJGMDA2MEM3MEYgLyogV2ViU2hh
cmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0OTFCMTMx
RTczNDgyMTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JC
RUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMzQ3Niw2ICsxMzUyNyw3IEBACiAJCQkJMzMwOTM0NEExMzE1QjkyMjAwOTdBN0JD
IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzFERDdCMjExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5NDNERDAyNzYzRjgzQTAwNEI2MTBFIC8qIFdlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4M0Y2RDFBNUI2M0ZGMDAw
MjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyQ0Y1
NTIyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTU2OEI5MUYyMEEzQUIyRjAwRTNDODU2IC8qIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUxMCw2ICsxMzU2Miw3IEBA
CiAJCQkJQkMwMzJEN0YxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY2QTAxMTIzQTg0QjAw
QTEzN0UwIC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDY5NDNERDEyNzYzRjgzRjAwNEI2MTBFIC8qIFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOUIzOEExMTBGNTM4QkUwMDQ0M0ExNSAvKiBX
ZWJGcmFtZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFBQjFENTU1QUEwMDBERDdD
NjggLyogV2ViR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxNzkxRDUzRkU4RjAw
REQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzYzNiw2
ICsxMzY4OSw3IEBACiAJCQkJMUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0
ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTNDMkFBMUEzMjU3MzAwMDRFOEM3
MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkQ0OEZDRTI3OTlE
N0UxMDA3RDIwMTQgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjdENDExRUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTE3MjVBOTIyOEQ1NjQz
MDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAvKiBXZWJzaXRlTWVk
aWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggOGQzYjU3YmQxOGRjLi5iYjM1NDdmNDZhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtNTcsNiArNTcsMTAgQEAKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFu
bmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0U3RyZWFtLmgiCkBAIC0xNzMsNiArMTc3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXJD
b25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBBU1NFUlQoU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGlmIChhdXRvKiBj
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gPSBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bikuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0zMDcsNiArMzIxLDEzIEBAIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbigpCiB9CiAjZW5kaWYKIAorV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
biYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAoIW1fc2hhcmVkV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zaGFyZWRXb3Jr
ZXJDb25uZWN0aW9uID0gV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6Y3JlYXRlKCk7
CisgICAgcmV0dXJuICptX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247Cit9CisKIHZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdlUG9ydElkZW50aWZpZXIpCiB7CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KG1lc3NhZ2VQ
b3J0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGQ2MmRmZTRkZjVhYS4u
NWYwNTA0MDlhYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDgsNiArNDgsNyBAQCBl
bnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb247CiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247CiAK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKQEAgLTcwLDYg
KzcxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV0Ns
aWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAjZW5kaWYKKyAgICBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uJiBzaGFyZWRXb3JrZXJDb25uZWN0aW9uKCk7
CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NBdWRp
dFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25ldHdv
cmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KQEAgLTEyMyw2ICsxMjUsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWZQdHI8V2ViU1dDbGll
bnRDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsKICNlbmRpZgorICAgIFJlZlB0cjxXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uPiBtX3NoYXJlZFdvcmtlckNvbm5lY3Rpb247CiAgICAg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBtX2Nvb2tpZUFjY2VwdFBvbGljeTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmZlMGJiNjg2NTc2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDExOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlDbGllbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyVGhyZWFkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlckZldGNoUmVzdWx0
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQYWdlR3JvdXBJZGVudGlmaWVy
IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHBy
ZWZlcmVuY2VzU3RvcmUsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFs
aXphdGlvbkRhdGEpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUo
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3Vw
SUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQorICAgICwgbV9wYWdl
SUQocGFnZUlEKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwgbV91c2VyQWdlbnQoc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSkpCisjZWxzZQorICAgICwgbV91c2Vy
QWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKKyNlbmRpZgorICAgICwgbV91c2VyQ29udGVudENv
bnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShpbml0aWFsaXph
dGlvbkRhdGEudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikpCit7CisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29u
dGVudFJ1bGVMaXN0cyhXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YS5jb250ZW50UnVsZUxpc3Rz
KSk7CisjZW5kaWYKKworICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUocHJlZmVyZW5jZXNTdG9y
ZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7Cit9
CisKK1dlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OlBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCB7IHNoYXJlZFdvcmtlcklkZW50aWZpZXIs
IGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwgfSwgMCk7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRh
dGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorewor
ICAgIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkKHN0b3JlKTsKKyAgICBtX3By
ZWZlcmVuY2VzU3RvcmUgPSBzdG9yZTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBvcmlnaW4sIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgc2hhcmVkV29ya2Vy
SWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0
aW9ucywgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJiB3b3JrZXJGZXRjaFJlc3VsdCkKK3sK
KyAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CisKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUo
bV9wYWdlR3JvdXBJRCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBX
ZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLndl
YkxvY2tSZWdpc3RyeSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvY2tSZWdpc3RyeSgp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi5saWJXZWJSVENQcm92aWRlciA9IG1ha2VVbmlxdWVSZWY8U2VydmljZVdvcmtlckxpYldlYlJU
Q1Byb3ZpZGVyPigpOworI2VuZGlmCisKKyAgICAvLyBGSVhNRTogU2VydmljZVdvcmtlckZyYW1l
TG9hZGVyQ2xpZW50IHNob3VsZCBiZSByZW5hbWVkIGlmIHVzZWQgYnkgU2hhcmVkV29ya2Vycy4K
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5p
cXVlUmVmPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwg
bV9wYWdlSUQsIEZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgbV91c2VyQWdlbnQpOworCisg
ICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CisgICAgaWYgKG1fcHJlZmVyZW5jZXNTdG9yZSkgeworICAgICAgICBXZWJQYWdlOjp1
cGRhdGVTZXR0aW5nc0dlbmVyYXRlZCgqbV9wcmVmZXJlbmNlc1N0b3JlLCBwYWdlLT5zZXR0aW5n
cygpKTsKKyAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
c3RhdGljX2Nhc3Q8U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdl
dFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xp
Y3lLZXkoKSkpKTsKKyAgICB9CisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkUHJveHk6
OnNldHVwUGFnZUZvclNoYXJlZFdvcmtlcihwYWdlLmdldCgpLCB1cmwsIG9yaWdpbiwgd29ya2Vy
RmV0Y2hSZXN1bHQpOworICAgIGF1dG8gc2hhcmVkV29ya2VyVGhyZWFkUHJveHkgPSBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIHNoYXJlZFdv
cmtlcklkZW50aWZpZXIsIG9yaWdpbiwgdXJsLCBXVEZNb3ZlKHdvcmtlckZldGNoUmVzdWx0KSwg
V1RGTW92ZSh3b3JrZXJPcHRpb25zKSwgbV91c2VyQWdlbnQsIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2hhcmVkV29ya2VyVGhyZWFkKFdU
Rk1vdmUoc2hhcmVkV29ya2VyVGhyZWFkUHJveHkpKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNs
b3NlOiBTaGFyZWQgd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3AgYWxsIHNoYXJl
ZCB3b3JrZXJzIik7CisgICAgc2V0QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDbG9zZVNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7CisgICAgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BBbGxTaGFyZWRX
b3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVybWluYXRpb24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZWQ5MWY5N2MxYjE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CitzdHJ1Y3QgV29ya2Vy
RmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgV29ya2VyT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhOworCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJs
aWM6CisgICAgV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBhZ2VHcm91cElk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmKTsKKyAgICB+V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7
CisKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBm
aW5hbDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDIE1lc3NhZ2VzLgorICAg
IHZvaWQgbGF1bmNoU2hhcmVkV29ya2VyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYm
LCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0VXNlckFn
ZW50KFN0cmluZyYmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50
KTsgfQorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
bV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBQYWdlR3JvdXBJZGVudGlmaWVyIG1fcGFnZUdyb3Vw
SUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOworICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFN0cmluZyBtX3VzZXJBZ2VudDsK
KyAgICBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxl
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcHJlZmVyZW5jZXNT
dG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDgyYTRhZGE1M2ZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIExh
dW5jaFNoYXJlZFdvcmtlcihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBVUkwg
dXJsLCBzdHJ1Y3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyB3b3JrZXJPcHRpb25zLCBzdHJ1Y3Qg
V2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQgd29ya2VyRmV0Y2hSZXN1bHQpCisgICAgUG9zdENv
bm5lY3RFdmVudChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKKyAgICBUZXJtaW5hdGVTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciBzaGFyZWRXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBT
ZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBDbG9zZSgpCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZDdkOTk0ZGUxZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dvcmtlck9wdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNk
ZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIFdlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb246OiIgZm10LCB0aGlzLCBXZWJDb3JlOjpQcm9jZXNzOjpp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKworV2ViU2hhcmVkV29ya2Vy
T2JqZWN0Q29ubmVjdGlvbjo6V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbigpCit7Cisg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRygiV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlv
bjoiKTsKK30KKworV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbjo6fldlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24oKQoreworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coIn5X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOiIpOworfQorCitJUEM6OkNvbm5lY3Rpb24q
IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordm9pZCBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uOjpyZXF1ZXN0U2hhcmVkV29ya2VyKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYgd29ya2VyT3B0aW9ucykKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJy
ZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPSV7cHVibGlj
fXMiLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbjo6
UmVxdWVzdFNoYXJlZFdvcmtlciB7IG9yaWdpbiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciwgdXJsLCBXVEZNb3ZlKHBvcnQpLCB3b3JrZXJPcHRpb25zIH0pOworfQorCit2b2lkIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb246OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5
KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcikKK3sKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJzaGFyZWRXb3JrZXJP
YmplY3RJc0dvaW5nQXdheTogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3B1YmxpY31z
Iiwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb246OlNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5IHsgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciB9KTsKK30KKworI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lY2JmNDJmNjc2MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw1NCBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbik7IH0KKyAgICB+V2ViU2hhcmVk
V29ya2VyT2JqZWN0Q29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLgorICAgIHZvaWQgcmVxdWVzdFNoYXJlZFdvcmtlcihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYs
IGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHNoYXJlZFdv
cmtlck9iamVjdElzR29pbmdBd2F5KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpIGZpbmFsOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTaGFyZWRX
b3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFjZWExOTMyZTlmNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJl
ZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTaGFy
ZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uIHsKKyAgICBGZXRjaFNjcmlwdEluQ2xpZW50KFVSTCB1
cmwsIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMgd29ya2VyT3B0aW9u
cykgLT4gKHN0cnVjdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCBmZXRjaFJlc3VsdCkgQXN5
bmMKKyAgICBOb3RpZnlXb3JrZXJPYmplY3RPZkxvYWRGYWlsdXJlKFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKKyAgICBQ
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBTdHJpbmcgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RyaW5nIHNvdXJjZVVSTCkKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdv
cmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNo
YXJlZFdvcmtlclByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ0OTVhNDIyNWU2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNoYXJl
ZFdvcmtlclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2hhcmVkV29ya2Vy
UHJvdmlkZXImIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJTaGFyZWRXb3JrZXJQcm92aWRlcj4gcHJvdmlkZXI7Cisg
ICAgcmV0dXJuIHByb3ZpZGVyOworfQorCitXZWJTaGFyZWRXb3JrZXJQcm92aWRlcjo6V2ViU2hh
cmVkV29ya2VyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlclByb3ZpZGVyOjpzaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTaGFyZWRXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2hhcmVkV29ya2VyUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2ZTNkMmZlNzBhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNoYXJlZFdvcmtlclByb3ZpZGVy
LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJQcm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRXb3JrZXJPYmpl
Y3RDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2hhcmVk
V29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2hhcmVkV29ya2VyUHJvdmlk
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXJQcm92aWRlciYgc2luZ2xl
dG9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYlNoYXJlZFdv
cmtlclByb3ZpZGVyPjsKKyAgICBXZWJTaGFyZWRXb3JrZXJQcm92aWRlcigpOworCisgICAgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbiogc2hhcmVkV29ya2VyQ29ubmVjdGlv
bigpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTI1ZDhmM2U2OTE2Li44Yzc0YzdjYmNhNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg0LDYgKzg0LDkgQEAK
ICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgpAQCAtMTMzLDYgKzEz
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8cGFs
L0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgpAQCAtNTY5LDYgKzU3Myw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKKyAgICBTaGFyZWRXb3JrZXJQcm92
aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoV2ViU2hhcmVkV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRv
bigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBKU0M6Oldhc206OmVuYWJsZUZh
c3RNZW1vcnkoKTsKQEAgLTkwMiw3ICs5MDcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQog
ICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAvLyBGSVhNRTogUmVtb3Zl
PwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAg
ICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsK
ICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKQEAgLTkxMSw2ICs5MTUsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGUKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJU
KFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwor
ICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQg
d2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAl
ZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIApA
QCAtMTkxNyw4ICsxOTI4LDE4IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldl
YlJUQ05ldHdvcmsoKQogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCit2b2lk
IFdlYlByb2Nlc3M6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25E
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgLy8gV2UgYXJlIGluIHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhl
IGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJv
Y2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWlu
ZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
IGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCisgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9
IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5p
cXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlv
biwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJ
RCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgU2hh
cmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJs
aXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3Jv
dXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQg
dGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsg
UHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6
Q29ubmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IGI4MDMyZmJlOGUyMC4uNjVmNzczMjAxYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTQ2OSw4ICs0NjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERp
c2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlm
aWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9u
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MmQ3NWEzOTRhOWMuLmU1NTI5NmI5
MDRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTEwMCw4ICsxMDAsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVk
IGluZGV4KQogI2VuZGlmCiAKKyAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2Vi
S2l0OjpTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkg
LT4gKCkgQXN5bmMKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJ
ZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3lu
YworICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlh
bGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRIYXNTdXNwZW5kZWRQ
YWdlUHJveHkoYm9vbCBoYXNTdXNwZW5kZWRQYWdlUHJveHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450719</attachid>
            <date>2022-02-02 17:13:21 -0800</date>
            <delta_ts>2022-02-02 17:47:23 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-235978.patch</filename>
            <type>text/plain</type>
            <size>10513</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTAxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAyLTAyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGbGFreSBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpIGFzc2VydGlvbiBpbiB+SlNFeGVjU3RhdGUgd2hlbiBydW5uaW5nIHdvcmtlcnMg
V1BUIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCZWNhdXNlIFdlYiB3b3JrZXJzIGNhbiBiZSB0ZXJtaW5hdGVkIGF0IGFueSBwb2ludCwgaXQg
aXMgcG9zc2libGUgZm9yIEpTRXhlY1N0YXRlOjpsb2FkTW9kdWxlKCkKKyAgICAgICAgdG8gZ2V0
IGEgdGVybWluYXRpb24gZXhjZXB0aW9uLCB3aGljaCB3b3VsZCBpbmNvcnJlY3RseSBjYXVzZSBp
dCB0byBhc3NlcnQgYW5kIGNyYXNoIGluIGRlYnVnLgorICAgICAgICBUaGlzIHBhdGNoIHVwZGF0
ZXMgdGhlIGNvZGUgc28gdGhhdCB0ZXJtaW5hdGlvbiBleGNlcHRpb25zIGFyZSBwcm9wZXJseSBk
ZWFsdCB3aXRoIGluc3RlYWQgb2YKKyAgICAgICAgY3Jhc2hpbmcuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBjb3ZlcmVkIGJ5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cyB0aGF0IGZsYWtpbHkgY3Jhc2ggaW4KKyAgICAgICAgZGVidWcuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
cG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXhlY1N0YXRlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6cHJv
ZmlsZWRDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6On5KU0V4ZWNTdGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseSk6
CisKIDIwMjItMDItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBQZXJjZW50YWdlIHdvcmQgc3BhY2luZyBkb2Vzbid0IGluY29ycG9yYXRlIHN5
bnRoZXRpYyBib2xkIGV4cGFuc2lvbgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAJKHJldmlzaW9uIDI4ODkxMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSwxMiArOTEsMTUgQEAgU3RyaW5nIHJldHJpZXZlRXJyb3JN
ZXNzYWdlKEpTR2xvYmFsT2JqZQogdm9pZCByZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNj
cmlwdCogY2FjaGVkU2NyaXB0LCBib29sIGZyb21Nb2R1bGUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4
Y2VwdGlvbkRldGFpbHMpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KICAgICBSRUxF
QVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAo
dm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQogICAgICAgICByZXR1cm47CiAK
KyAgICAvLyBXZSBjYW4gZGVjbGFyZSBhIENhdGNoU2NvcGUgaGVyZSBiZWNhdXNlIHdlIHdpbGwg
Y2xlYXIgdGhlIGV4Y2VwdGlvbiBiZWxvdyBpZiBpdCdzCisgICAgLy8gbm90IGEgVGVybWluYXRp
b25FeGNlcHRpb24uIElmIGl0J3MgYSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiwgaXQnbGwgcmVtYWlu
IHN0aWNreSBpbgorICAgIC8vIHRoZSBWTSwgYnV0IHdlIGhhdmUgdGhlIGNoZWNrIGFib3ZlIHRv
IGVuc3VyZSB0aGF0IHdlIGRvIG5vdCByZS1lbnRlciB0aGlzIHNjb3BlLgorICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBl
cnJvclNjb3BlKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgYXV0byBjYWxsU3Rh
Y2sgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFja0Zyb21FeGNlcHRpb24obGV4aWNh
bEdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaAkocmV2aXNpb24gMjg4OTEyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDI4IEBA
IHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwg
Y29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1
cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworICAgICAgICBKU0M6OkpTVmFsdWUgcmV0dXJuVmFsdWU7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1
bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgICAgIH0KKyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJt
aW5hdGlvbigpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAg
ICB7Ci0gICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUobGV4aWNhbEdsb2JhbE9iamVjdCwgc291
cmNlLCB0aGlzVmFsdWUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgSlNDOjpWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXR1cm5WYWx1
ZTsKKyAgICAgICAgeworICAgICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRl
KGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1ZhbHVlLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgICAgIH0KKyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJt
aW5hdGlvbigpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSA9IEpTQzo6SlNWYWx1ZSgpKQpAQCAtNjksMTQgKzgzLDI4IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlND
OjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgSlNFeGVj
U3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4g
SlNDOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVhc29uLCBmdW5jdGlvbk9i
amVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOworICAg
ICAgICBKU0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICAgICAgSlNDOjpK
U1ZhbHVlIHJldHVyblZhbHVlOworICAgICAgICB7CisgICAgICAgICAgICBKU0V4ZWNTdGF0ZSBj
dXJyZW50U3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IEpTQzo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHJlYXNvbiwgZnVuY3Rp
b25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICAgICAgfQorICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0
aW9uKCk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7Ci0gICAgICAgIEpTRXhlY1N0YXRl
IGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIEpTQzo6
cHJvZmlsZWRFdmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCByZWFzb24sIHNvdXJjZSwgdGhp
c1ZhbHVlLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOworICAgICAgICBKU0M6OkpTVmFsdWUgcmV0dXJuVmFsdWU7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gSlNDOjpwcm9maWxlZEV2YWx1YXRl
KGxleGljYWxHbG9iYWxPYmplY3QsIHJlYXNvbiwgc291cmNlLCB0aGlzVmFsdWUsIHJldHVybmVk
RXhjZXB0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4
Y2VwdFRlcm1pbmF0aW9uKCk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpT
Qzo6SlNWYWx1ZSgpKQpAQCAtMTA3LDE0ICsxMzUsMTggQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIAotICAgICAgICBK
U0V4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBh
dXRvIHJldHVyblZhbHVlID0gSlNDOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoJmxleGljYWxHbG9i
YWxPYmplY3QsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7Ci0gICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0g
c2NvcGUuZXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICAgICAgSlNDOjpKU1Zh
bHVlIHJldHVyblZhbHVlOworICAgICAgICB7CisgICAgICAgICAgICBKU0V4ZWNTdGF0ZSBjdXJy
ZW50U3RhdGUoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgbW9kdWxl
S2V5LCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNl
cHRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IHNjb3BlLmV4
Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGlmICghdm0uaGFzUGVuZGluZ1Rlcm1pbmF0aW9u
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1p
bmF0aW9uKCk7CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKQEAgLTEzMSw4
ICsxNjMsOCBAQCBwcml2YXRlOgogICAgIH5KU0V4ZWNTdGF0ZSgpCiAgICAgewogICAgICAgICBK
U0M6OlZNJiB2bSA9IGN1cnJlbnRTdGF0ZSgpLT52bSgpOwotICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAg
ICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwogCiAgICAgICAg
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBjdXJyZW50U3RhdGUo
KTsKICAgICAgICAgYm9vbCBkaWRFeGl0SmF2YVNjcmlwdCA9IGxleGljYWxHbG9iYWxPYmplY3Qg
JiYgIW1fcHJldmlvdXNTdGF0ZTsKQEAgLTE0Miw3ICsxNzQsOCBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAoZGlkRXhpdEphdmFTY3JpcHQpIHsKICAgICAgICAgICAgIGRpZExlYXZlU2NyaXB0Q29u
dGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xl
YXIgYW55IGV4Y2VwdGlvbnMgZnJvbSBtaWNyb3Rhc2sgZHJhaW4uCi0gICAgICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKCF2bS5oYXNQZW5kaW5nVGVybWlu
YXRpb25FeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjg4OTEyKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw3ICsxMjAsMTUgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SQogCiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOworICAgIGF1dG8mIHZtID0g
d29ybGQudm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBpZiAodm0uaGFz
UGVuZGluZ1Rlcm1pbmF0aW9uRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWls
cyBkZXRhaWxzOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZGV0YWlscyk7CisgICAg
fQorCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgY29u
c3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsK
ICAgICBjb25zdCBVUkwmIHNvdXJjZVVSTCA9IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT5zb3Vy
Y2VPcmlnaW4oKS51cmwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjg4
OTEyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDEwICsyODAsMTMgQEAgYm9vbCBXb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsbwogICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9
ICptX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qu
dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgUmVmIHByb3RlY3RvciB7IHNjcmlwdEZldGNo
ZXIgfTsKICAgICB7CiAgICAgICAgIGF1dG8mIHByb21pc2UgPSBKU0V4ZWNTdGF0ZTo6bG9hZE1v
ZHVsZShnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3Jp
cHRGZXRjaGVyOjpjcmVhdGUodm0sIHsgJnNjcmlwdEZldGNoZXIgfSkpOworICAgICAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBhdXRvJiBmdWxmaWxsSGFuZGxl
ciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIDEsIFN0
cmluZygpLCBbcHJvdGVjdG9yXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkgLT4gSlNDOjpFbmNvZGVkSlNWYWx1ZSB7CiAgICAgICAgICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cg==
</data>
<flag name="commit-queue"
          id="477208"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450723</attachid>
            <date>2022-02-02 17:47:23 -0800</date>
            <delta_ts>2022-02-03 08:39:53 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-235978.patch</filename>
            <type>text/plain</type>
            <size>10468</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTAxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAyLTAyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGbGFreSBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpIGFzc2VydGlvbiBpbiB+SlNFeGVjU3RhdGUgd2hlbiBydW5uaW5nIHdvcmtlcnMg
V1BUIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCZWNhdXNlIFdlYiB3b3JrZXJzIGNhbiBiZSB0ZXJtaW5hdGVkIGF0IGFueSBwb2ludCwgaXQg
aXMgcG9zc2libGUgZm9yIEpTRXhlY1N0YXRlOjpsb2FkTW9kdWxlKCkKKyAgICAgICAgdG8gZ2V0
IGEgdGVybWluYXRpb24gZXhjZXB0aW9uLCB3aGljaCB3b3VsZCBpbmNvcnJlY3RseSBjYXVzZSBp
dCB0byBhc3NlcnQgYW5kIGNyYXNoIGluIGRlYnVnLgorICAgICAgICBUaGlzIHBhdGNoIHVwZGF0
ZXMgdGhlIGNvZGUgc28gdGhhdCB0ZXJtaW5hdGlvbiBleGNlcHRpb25zIGFyZSBwcm9wZXJseSBk
ZWFsdCB3aXRoIGluc3RlYWQgb2YKKyAgICAgICAgY3Jhc2hpbmcuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBjb3ZlcmVkIGJ5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vy
cyB0aGF0IGZsYWtpbHkgY3Jhc2ggaW4KKyAgICAgICAgZGVidWcuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
cG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXhlY1N0YXRlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6cHJv
ZmlsZWRDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6On5KU0V4ZWNTdGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseSk6
CisKIDIwMjItMDItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBQZXJjZW50YWdlIHdvcmQgc3BhY2luZyBkb2Vzbid0IGluY29ycG9yYXRlIHN5
bnRoZXRpYyBib2xkIGV4cGFuc2lvbgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAJKHJldmlzaW9uIDI4ODkxMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSwxMiArOTEsMTUgQEAgU3RyaW5nIHJldHJpZXZlRXJyb3JN
ZXNzYWdlKEpTR2xvYmFsT2JqZQogdm9pZCByZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNj
cmlwdCogY2FjaGVkU2NyaXB0LCBib29sIGZyb21Nb2R1bGUsIEV4Y2VwdGlvbkRldGFpbHMqIGV4
Y2VwdGlvbkRldGFpbHMpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0KICAgICBSRUxF
QVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAo
dm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQogICAgICAgICByZXR1cm47CiAK
KyAgICAvLyBXZSBjYW4gZGVjbGFyZSBhIENhdGNoU2NvcGUgaGVyZSBiZWNhdXNlIHdlIHdpbGwg
Y2xlYXIgdGhlIGV4Y2VwdGlvbiBiZWxvdyBpZiBpdCdzCisgICAgLy8gbm90IGEgVGVybWluYXRp
b25FeGNlcHRpb24uIElmIGl0J3MgYSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiwgaXQnbGwgcmVtYWlu
IHN0aWNreSBpbgorICAgIC8vIHRoZSBWTSwgYnV0IHdlIGhhdmUgdGhlIGNoZWNrIGFib3ZlIHRv
IGVuc3VyZSB0aGF0IHdlIGRvIG5vdCByZS1lbnRlciB0aGlzIHNjb3BlLgorICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBl
cnJvclNjb3BlKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgYXV0byBjYWxsU3Rh
Y2sgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFja0Zyb21FeGNlcHRpb24obGV4aWNh
bEdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaAkocmV2aXNpb24gMjg4OTEyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDI4IEBA
IHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwg
Y29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1
cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworICAgICAgICBKU0M6OkpTVmFsdWUgcmV0dXJuVmFsdWU7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1
bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgICAgIH0KKyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJt
aW5hdGlvbigpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAg
ICB7Ci0gICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUobGV4aWNhbEdsb2JhbE9iamVjdCwgc291
cmNlLCB0aGlzVmFsdWUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgSlNDOjpWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXR1cm5WYWx1
ZTsKKyAgICAgICAgeworICAgICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRl
KGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1ZhbHVlLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgICAgIH0KKyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJt
aW5hdGlvbigpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSA9IEpTQzo6SlNWYWx1ZSgpKQpAQCAtNjksMTQgKzgzLDI4IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlND
OjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgSlNFeGVj
U3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4g
SlNDOjpwcm9maWxlZENhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVhc29uLCBmdW5jdGlvbk9i
amVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOworICAg
ICAgICBKU0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICAgICAgSlNDOjpK
U1ZhbHVlIHJldHVyblZhbHVlOworICAgICAgICB7CisgICAgICAgICAgICBKU0V4ZWNTdGF0ZSBj
dXJyZW50U3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IEpTQzo6cHJvZmlsZWRDYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHJlYXNvbiwgZnVuY3Rp
b25PYmplY3QsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICAgICAgfQorICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0
aW9uKCk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7Ci0gICAgICAgIEpTRXhlY1N0YXRl
IGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIEpTQzo6
cHJvZmlsZWRFdmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCByZWFzb24sIHNvdXJjZSwgdGhp
c1ZhbHVlLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOworICAgICAgICBKU0M6OkpTVmFsdWUgcmV0dXJuVmFsdWU7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gSlNDOjpwcm9maWxlZEV2YWx1YXRl
KGxleGljYWxHbG9iYWxPYmplY3QsIHJlYXNvbiwgc291cmNlLCB0aGlzVmFsdWUsIHJldHVybmVk
RXhjZXB0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4
Y2VwdFRlcm1pbmF0aW9uKCk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpT
Qzo6SlNWYWx1ZSgpKQpAQCAtMTA3LDE0ICsxMzUsMTggQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIAotICAgICAgICBK
U0V4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBh
dXRvIHJldHVyblZhbHVlID0gSlNDOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoJmxleGljYWxHbG9i
YWxPYmplY3QsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7Ci0gICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0g
c2NvcGUuZXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICAgICAgSlNDOjpKU1Zh
bHVlIHJldHVyblZhbHVlOworICAgICAgICB7CisgICAgICAgICAgICBKU0V4ZWNTdGF0ZSBjdXJy
ZW50U3RhdGUoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgbW9kdWxl
S2V5LCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNl
cHRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IHNjb3BlLmV4
Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGlmICghdm0uaGFzUGVuZGluZ1Rlcm1pbmF0aW9u
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1p
bmF0aW9uKCk7CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKQEAgLTEzMSw4
ICsxNjMsOCBAQCBwcml2YXRlOgogICAgIH5KU0V4ZWNTdGF0ZSgpCiAgICAgewogICAgICAgICBK
U0M6OlZNJiB2bSA9IGN1cnJlbnRTdGF0ZSgpLT52bSgpOwotICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAg
ICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwogCiAgICAgICAg
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBjdXJyZW50U3RhdGUo
KTsKICAgICAgICAgYm9vbCBkaWRFeGl0SmF2YVNjcmlwdCA9IGxleGljYWxHbG9iYWxPYmplY3Qg
JiYgIW1fcHJldmlvdXNTdGF0ZTsKQEAgLTE0Miw3ICsxNzQsOCBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAoZGlkRXhpdEphdmFTY3JpcHQpIHsKICAgICAgICAgICAgIGRpZExlYXZlU2NyaXB0Q29u
dGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xl
YXIgYW55IGV4Y2VwdGlvbnMgZnJvbSBtaWNyb3Rhc2sgZHJhaW4uCi0gICAgICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKCF2bS5oYXNQZW5kaW5nVGVybWlu
YXRpb25FeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjg4OTEyKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw3ICsxMjAsMTMgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SQogCiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOworICAgIGF1dG8mIHZtID0g
d29ybGQudm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBpZiAodm0uaGFz
UGVuZGluZ1Rlcm1pbmF0aW9uRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgRXhjZXB0aW9uRGV0YWls
cyBkZXRhaWxzOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZGV0YWlscyk7CisgICAg
fQogCiAgICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1Nv
dXJjZUNvZGUoKTsKICAgICBjb25zdCBVUkwmIHNvdXJjZVVSTCA9IGpzU291cmNlQ29kZS5wcm92
aWRlcigpLT5zb3VyY2VPcmlnaW4oKS51cmwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjg4OTEyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDEwICsyODAsMTMg
QEAgYm9vbCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsbwogICAgIGF1dG8mIGds
b2JhbE9iamVjdCA9ICptX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3Qudm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtIH07CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgUmVmIHByb3RlY3RvciB7
IHNjcmlwdEZldGNoZXIgfTsKICAgICB7CiAgICAgICAgIGF1dG8mIHByb21pc2UgPSBKU0V4ZWNT
dGF0ZTo6bG9hZE1vZHVsZShnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCks
IEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUodm0sIHsgJnNjcmlwdEZldGNoZXIgfSkpOwor
ICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBhdXRvJiBm
dWxmaWxsSGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sICZnbG9iYWxP
YmplY3QsIDEsIFN0cmluZygpLCBbcHJvdGVjdG9yXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgLT4gSlNDOjpFbmNvZGVkSlNWYWx1ZSB7CiAgICAg
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>