<?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>55100</bug_id>
          
          <creation_ts>2011-02-23 16:28:06 -0800</creation_ts>
          <short_desc>Make WeakGCMap use new handle infrastructure</short_desc>
          <delta_ts>2011-03-15 09:43:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56383</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>356533</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-23 16:28:06 -0800</bug_when>
    <thetext>Make WeakGCMap use new handle infrastructure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356546</commentid>
    <comment_count>1</comment_count>
      <attachid>83576</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-23 16:42:54 -0800</bug_when>
    <thetext>Created attachment 83576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356547</commentid>
    <comment_count>2</comment_count>
      <attachid>83576</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-23 16:43:31 -0800</bug_when>
    <thetext>Comment on attachment 83576
Patch

I&apos;ve realised that i can separate out a few bits of this patch completely</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357280</commentid>
    <comment_count>3</comment_count>
      <attachid>83702</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-24 12:37:03 -0800</bug_when>
    <thetext>Created attachment 83702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357300</commentid>
    <comment_count>4</comment_count>
      <attachid>83702</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-24 12:51:00 -0800</bug_when>
    <thetext>Comment on attachment 83702
Patch

r=me

I think you should verify performance using the Droameo and DOM Mandlebrot tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357364</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-24 14:00:34 -0800</bug_when>
    <thetext>Committed r79616: &lt;http://trac.webkit.org/changeset/79616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357738</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-25 00:06:06 -0800</bug_when>
    <thetext>Worker tests are crashing since around this time:

Thread 8 Crashed:  WebCore: Worker
0   com.apple.JavaScriptCore      	0x00000001002b3907 JSC::MarkedBlock::destroy(JSC::MarkedBlock*) + 39 (MarkedBlock.cpp:44)
1   com.apple.JavaScriptCore      	0x000000010022ce48 JSC::MarkedSpace::freeBlocks(WTF::DoublyLinkedList&lt;JSC::MarkedBlock&gt;&amp;) + 392 (MarkedSpace.cpp:66)
2   com.apple.JavaScriptCore      	0x000000010022d593 JSC::MarkedSpace::shrink() + 163 (MarkedSpace.cpp:103)
3   com.apple.JavaScriptCore      	0x0000000100167ced JSC::Heap::destroy() + 109 (Heap.cpp:84)
4   com.apple.WebCore             	0x00000001013c43fc WebCore::WorkerScriptController::~WorkerScriptController() + 76 (WorkerScriptController.cpp:65)
5   com.apple.WebCore             	0x00000001013c7802 WebCore::WorkerThreadShutdownFinishTask::performTask(WebCore::ScriptExecutionContext*) + 50 (WorkerScriptController.h:48)
6   com.apple.WebCore             	0x00000001013c3841 WebCore::WorkerRunLoop::runInMode(WebCore::WorkerContext*, WebCore::ModePredicate const&amp;) + 385 (WorkerRunLoop.cpp:163)
7   com.apple.WebCore             	0x00000001013c3a1e WebCore::WorkerRunLoop::run(WebCore::WorkerContext*) + 238 (WorkerRunLoop.cpp:133)
8   com.apple.WebCore             	0x00000001013c71c0 WebCore::WorkerThread::workerThread() + 992 (WorkerThread.cpp:143)
9   libSystem.B.dylib             	0x00007fff859e3456 _pthread_start + 331
10  libSystem.B.dylib             	0x00007fff859e3309 thread_start + 13

Either this, or bug 55159 is to blame.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83576</attachid>
            <date>2011-02-23 16:42:54 -0800</date>
            <delta_ts>2011-02-24 12:37:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55100-20110223164253.patch</filename>
            <type>text/plain</type>
            <size>70855</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk1MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCmluZGV4IGVhYzJlMmNlODMw
MzU2NzM0NGEyNThjN2MzNGFmYjY2N2UxMDdjZDcuLmJjNWUzODMwMTRkNGE2MmIwZWFiMjRhOTI1
N2ViNDY5ZDRkZTZjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
ZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpT
V2Vha09iamVjdE1hcFNldChKU0NvbnRleHRSZWYgY3R4LCBKU1dlYWtPYmplY3RNYXBSZWYgbWFw
LCB2b2lkKiBrZXksIEpTTwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CiAgICAgQVNT
RVJUKG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2lu
Zm8pIHx8IG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0Pjo6c19pbmZvKSk7Ci0gICAgbWFwLT5tYXAoKS5zZXQoa2V5LCBvYmopOworICAgIG1h
cC0+bWFwKCkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBvYmopOwogfQogCiBKU09iamVj
dFJlZiBKU1dlYWtPYmplY3RNYXBHZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNXZWFrT2JqZWN0TWFw
UmVmIG1hcCwgdm9pZCoga2V5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTV2Vha09iamVjdE1h
cENsZWFyKEpTQ29udGV4dFJlZiBjdHgsIEpTV2Vha09iamVjdE1hcFJlZiBtYXAsIHZvaWQqIGtl
eSwgSgogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmogPSB0b0pTKG9iamVjdCk7Ci0gICAg
aWYgKG1hcC0+bWFwKCkudW5jaGVja2VkUmVtb3ZlKGtleSwgb2JqKSkKKyAgICBpZiAobWFwLT5t
YXAoKS5kZXByZWNhdGVkUmVtb3ZlKGtleSwgb2JqKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaAppbmRleCBkMzYxMTFjNWM0OTZiMGE4NmYwNDg4
ZDI1NGEwYzMyYzVmOWNmNjUyLi5iYjNmZTk2MzhkZDI1ZTNkNGQ3MzY2ZDEzMDBkMjc3YjYzMWQ5
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1h
cFJlZlByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVj
dE1hcFJlZlByaXZhdGUuaApAQCAtNTIsOCArNTIsNyBAQCB0eXBlZGVmIHZvaWQgKCpKU1dlYWtN
YXBEZXN0cm95ZWRDYWxsYmFjaykoSlNXZWFrT2JqZWN0TWFwUmVmIG1hcCwgdm9pZCogZGF0YSk7
CiAgQHBhcmFtIGRlc3RydWN0b3IgQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHdlYWsgbWFw
IGlzIGRlc3Ryb3llZC4KICBAcmVzdWx0IEEgSlNXZWFrT2JqZWN0TWFwUmVmIGJvdW5kIHRvIHRo
ZSBnaXZlbiBjb250ZXh0LCBkYXRhIGFuZCBkZXN0cnVjdG9yLgogIEBkaXNjdXNzaW9uIFRoZSBK
U1dlYWtPYmplY3RNYXBSZWYgY2FuIGJlIHVzZWQgYXMgYSBzdG9yYWdlIG1lY2hhbmlzbSB0byBo
b2xkIGN1c3RvbSBKUyBvYmplY3RzIHdpdGhvdXQgZm9yY2luZyB0aG9zZSBvYmplY3RzIHRvCi0g
cmVtYWluIGxpdmUgYXMgSlNWYWx1ZVByb3RlY3Qgd291bGQuICBBbnkgb2JqZWN0cyB0aGF0IGFy
ZSBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gYSB3ZWFrIG1hcCBtdXN0IGJlIHVzZXIgZGVmaW5l
ZCBvYmplY3RzIHRoYXQKLSByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIHRoZSBtYXAgaW4gdGhlaXIg
ZmluYWxpemVyLgorIHJlbWFpbiBsaXZlIGFzIEpTVmFsdWVQcm90ZWN0IHdvdWxkLgogICovCiBK
U19FWFBPUlQgSlNXZWFrT2JqZWN0TWFwUmVmIEpTV2Vha09iamVjdE1hcENyZWF0ZShKU0NvbnRl
eHRSZWYgY3R4LCB2b2lkKiBkYXRhLCBKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjayBkZXN0cnVj
dG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmZhNzI4MDNjMGFlOTVlNjU5N2M3
ZDIzMzBlZDU2NGY3Yzk2MGVlNi4uY2MxMzIzNTk3NWRiYWMwZWI5NzgzYjdjZWFhYmY1ZDdiZWM5
MDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIgQEAKIDIwMTEtMDIt
MjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYWtHQ01hcCB1c2UgbmV3IGhhbmRs
ZSBpbmZyYXN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUxMDAKKworICAgICAgICBSZW1vdmUgb2xkIFdlYWtHQ01hcCBpbXBsZW1lbnRh
dGlvbiBhbmQgbW92ZSBvdmVyIHRvIG5ldyBoYW5kbGUKKyAgICAgICAgYmFzZWQgbG9naWMuCisK
KyAgICAgICAgVGhpcyBoYXMgYSBudW1iZXIgb2YgYmVuZWZpdHMsIG1vc3Qgbm90YWJseSBpdCBt
YWtlcyBhIFdlYWtHQ01hcAorICAgICAgICBhbHdheXMgcmVmbGVjdCB0aGUgdHJ1ZSBzdGF0ZSBv
ZiB0aGUgd29ybGQgYnkgYXMgYWxsIGVudHJpZXMgYXJlCisgICAgICAgIHJlbW92ZWQgYXQgdGhl
IGZpcnN0IGdjIGN5Y2xlIHRoYXQgbWFrZXMgdGhlbSBkZWFkLiAgVGhpcyBhbGxvd3MKKyAgICAg
ICAgdXMgdG8gZ2V0IHJpZCBvZiBjb2RlIGluIGEgd2lkZSB2YXJpZXR5IG9mIG9iamVjdHMgd2hl
cmUgdGhlIG9ubHkKKyAgICAgICAgcHVycG9zZSB3YXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMgZnJv
bSBtYXBzLgorCisgICAgICAgIEl0IGFsc28gbWVhbnMgdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0
byBoYXZlIHNwZWNpYWwgInVuY2hlY2tlZCIKKyAgICAgICAgdmVyc2lvbnMgb2YgYW55IGZ1bmN0
aW9ucyBvbiBXZWFrR0NNYXAuICBBbGFzIGluIG9yZGVyIHRvIG1haW50YWluCisgICAgICAgIGNv
bXBhdGliaWxpdHkgd2l0aCB0aGUgSlNXZWFrT2JqZWN0TWFwQ2xlYXIgQVBJIGl0IGlzIHN0aWxs
CisgICAgICAgIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFwaSB0aGF0IHJlc2VtYmxlcyB1bmNoZWNr
ZWRSZW1vdmUsIHRoaXMgaXMKKyAgICAgICAgbm93IGRlcHJlY2F0ZWRSZW1vdmUgYW5kIHdpbGwg
YmUgZGVhbHQgd2l0aCBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIEluIG9yZGVyIHRvIGdl
dCBjb3JyZWN0IHNlbWFudGljcyBpbiBXZWFrR0NNYXAgd2UgbmVlZCBtb3JlCisgICAgICAgIGNv
bnRleHR1YWwgaW5mb3JtYXRpb24gaW4gdGhlIGZpbmFsaXplciwgc28gd2UndmUgYWRkZWQgYW4K
KyAgICAgICAgYWJzdHJhY3QgY2xhc3MgYmFzZWQgZmluYWxpc2VyIGFuZCBhIGNvbnRleHQgcGFy
YW1ldGVyIHRvIHRoZQorICAgICAgICBjYWxscy4KKworICAgICAgICBUaGUgbmV3IGFuIGltcHJv
dmVkIFdlYWtHQ01hcCBhbHNvIHJlc3VsdHMgaW4gc2lnaWZpY2FudGx5IG1vcmUKKyAgICAgICAg
Y2h1cm4gaW4gdGhlIHdlYWsgaGFuZGxlIGxpc3RzIHNvIGV4cG9zZWQgc29tZSBwb3RlbnRpYWwg
cHJvYmxlbXMKKyAgICAgICAgZHVyaW5nIHRoZSBwb3N0IG1hcmsgcGhhc2Ugd2hpY2ggaGF2ZSBi
ZWVuIHJlY3RpZmllZCBhcyB3ZWxsLgorCisgICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJl
ZlByaXZhdGUuY3BwOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmg6
CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhhbmRsZUhlYXA6OkhhbmRsZUhlYXApOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjp1
cGRhdGVBZnRlck1hcmspOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpjbGVhcldlYWtQb2lu
dGVycyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6OndyaXRlQmFycmllcik6CisgICAgICAg
IChKU0M6OkhhbmRsZUhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KToKKyAgICAgICAg
KiBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXhG
aW5hbGl6ZXI6On5Db21wbGV4RmluYWxpemVyKToKKyAgICAgICAgKEpTQzo6SGFuZGxlSGVhcDo6
ZGVhbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Om1ha2VXZWFrKToKKyAgICAg
ICAgKEpTQzo6SGFuZGxlSGVhcDo6bWFrZVNlbGZEZXN0cm95aW5nKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlSGVhcDo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6
OnNldEZpbmFsaXplcik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OmZpbmFsaXpl
cik6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Ok5vZGU6OmNvbXBsZXhGaW5hbGl6ZXIpOgor
ICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpOb2RlOjpmaW5hbGl6ZXJDb250ZXh0KToKKyAgICAg
ICAgKEpTQzo6SGFuZGxlSGVhcDo6Tm9kZTo6c2V0UHJldik6CisgICAgICAgIChKU0M6OkhhbmRs
ZUhlYXA6Ok5vZGU6OnByZXYpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5j
cHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyRmlsZTo6Z2xvYmFsT2JqZWN0Q29sbGVjdGVkKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKiBydW50aW1l
L0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpnbG9iYWxPYmplY3RDb3VudCk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNH
bG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6fkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgIChKU0M6OldlYWtHQ01h
cDo6aXRlcmF0b3I6Oml0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjppdGVyYXRv
cjo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjppdGVyYXRvcjo6Z2V0U2xvdCk6Cisg
ICAgICAgIChKU0M6OldlYWtHQ01hcDo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAo
SlNDOjpXZWFrR0NNYXA6Oml0ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6V2Vh
a0dDTWFwOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6
V2Vha0dDTWFwKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjppc0VtcHR5KToKKyAgICAgICAg
KEpTQzo6V2Vha0dDTWFwOjpjbGVhcik6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6Z2V0KToK
KyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpnZXRTbG90KToKKyAgICAgICAgKEpTQzo6V2Vha0dD
TWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnRha2UpOgorICAgICAgICAoSlND
OjpXZWFrR0NNYXA6OnNpemUpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmRlcHJlY2F0ZWRS
ZW1vdmUpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjplbmQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6On5XZWFrR0NNYXApOgor
ICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1dl
YWtHQ1B0ci5oOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OldlYWtHQ1B0cik6CisgICAgICAg
IChKU0M6OldlYWtHQ1B0cjo6c2V0KToKKworMjAxMS0wMi0yMyAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFJvbGwgb3V0IHI2NDE1NiBhcyBpdCBpbnRyb2R1Y2Vz
IGluY29ycmVjdCBiZWhhdmlvdXIuCiAKICAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFu
ZGxlSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFu
ZGxlSGVhcC5jcHAKaW5kZXggY2NmZTljZDI5M2VjMjljMzcyZWM1YmZhNDU2OWUyN2Q2YzU2NWFk
ZC4uZjU5ODZmZDM5NzJkYmMyODk3YTM5M2YwM2YwOGNmZDE4ZmIzNDU3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmNw
cApAQCAtMjcsMTIgKzI3LDE2IEBACiAKICNpbmNsdWRlICJIYW5kbGVIZWFwLmgiCiAKLSNpbmNs
dWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogSGFuZGxlSGVhcDo6SGFuZGxlSGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAg
OiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICAsIG1fbmV4dFRvRmluYWxpemUoMCkKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2hhbmRsaW5nRmluYWxpemVycyhmYWxzZSkKKyNl
bmRpZgogewogICAgIGdyb3coKTsKIH0KQEAgLTU2LDQ0ICs2MCw2MCBAQCB2b2lkIEhhbmRsZUhl
YXA6Om1hcmtTdHJvbmdIYW5kbGVzKE1hcmtTdGFjayYgbWFya1N0YWNrKQogCiB2b2lkIEhhbmRs
ZUhlYXA6OnVwZGF0ZUFmdGVyTWFyaygpCiB7CisgICAgY2xlYXJXZWFrUG9pbnRlcnMoTm9ybWFs
VmlzaXQpOworfQorCit2b2lkIEhhbmRsZUhlYXA6OmNsZWFyV2Vha1BvaW50ZXJzKFdlYWtQb2lu
dGVyVmlzaXRSdWxlIHZpc2l0UnVsZSkKK3sKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgbV9o
YW5kbGluZ0ZpbmFsaXplcnMgPSB0cnVlOworI2VuZGlmCiAgICAgTm9kZSogZW5kID0gbV93ZWFr
TGlzdC5lbmQoKTsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3dlYWtMaXN0LmJlZ2luKCk7IG5v
ZGUgIT0gZW5kOyBub2RlID0gbm9kZS0+bmV4dCgpKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUg
PSAqbm9kZS0+c2xvdCgpOworICAgIGZvciAoTm9kZSogbm9kZSA9IG1fd2Vha0xpc3QuYmVnaW4o
KTsgbm9kZSAhPSBlbmQ7KSB7CisgICAgICAgIE5vZGUqIGN1cnJlbnQgPSBub2RlOworICAgICAg
ICBub2RlID0gY3VycmVudC0+bmV4dCgpOworICAgICAgICAKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9ICpjdXJyZW50LT5zbG90KCk7CiAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2Vs
bCgpKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAogICAgICAgICBKU0NlbGwqIGNl
bGwgPSB2YWx1ZS5hc0NlbGwoKTsKICAgICAgICAgQVNTRVJUKCFjZWxsIHx8IGNlbGwtPnN0cnVj
dHVyZSgpKTsKLQotICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY2VsbCkpCisgICAgICAgIAor
ICAgICAgICBpZiAoKHZpc2l0UnVsZSA9PSBOb3JtYWxWaXNpdCkgJiYgSGVhcDo6aXNNYXJrZWQo
Y2VsbCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoRmluYWxpemVyIGZp
bmFsaXplciA9IG5vZGUtPmZpbmFsaXplcigpKQotICAgICAgICAgICAgZmluYWxpemVyKCptX2ds
b2JhbERhdGEsIEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3Qobm9kZS0+c2xvdCgpKSk7Ci0KLSAg
ICAgICAgaWYgKG5vZGUtPmlzU2VsZkRlc3Ryb3lpbmcoKSkKLSAgICAgICAgICAgIGRlYWxsb2Nh
dGUodG9IYW5kbGUobm9kZSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqbm9kZS0+c2xv
dCgpID0gSlNWYWx1ZSgpOwotICAgIH0KLX0KLSAgICAKLXZvaWQgSGFuZGxlSGVhcDo6Y2xlYXJX
ZWFrUG9pbnRlcnMoKQotewotICAgIE5vZGUqIGVuZCA9IG1fd2Vha0xpc3QuZW5kKCk7Ci0gICAg
Zm9yIChOb2RlKiBub2RlID0gbV93ZWFrTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9
IG5vZGUtPm5leHQoKSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsK
LSAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7Ci0KLSAg
ICAgICAgaWYgKEZpbmFsaXplciBmaW5hbGl6ZXIgPSBub2RlLT5maW5hbGl6ZXIoKSkKLSAgICAg
ICAgICAgIGZpbmFsaXplcigqbV9nbG9iYWxEYXRhLCBIYW5kbGU8VW5rbm93bj46OndyYXBTbG90
KG5vZGUtPnNsb3QoKSkpOwotICAgICAgICAqbm9kZS0+c2xvdCgpID0gSlNWYWx1ZSgpOworICAg
ICAgICAKKyAgICAgICAgaWYgKEZpbmFsaXplciBmaW5hbGl6ZXIgPSBjdXJyZW50LT5maW5hbGl6
ZXIoKSkgeworICAgICAgICAgICAgbV9uZXh0VG9GaW5hbGl6ZSA9ICZub2RlOworICAgICAgICAg
ICAgZmluYWxpemVyKCptX2dsb2JhbERhdGEsIEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoY3Vy
cmVudC0+c2xvdCgpKSwgY3VycmVudC0+ZmluYWxpemVyQ29udGV4dCgpKTsKKyAgICAgICAgICAg
IG5vZGUgPSAqbV9uZXh0VG9GaW5hbGl6ZTsKKyAgICAgICAgICAgIG1fbmV4dFRvRmluYWxpemUg
PSAwOworICAgICAgICB9IGVsc2UgaWYgKENvbXBsZXhGaW5hbGl6ZXIqIGZpbmFsaXplciA9IGN1
cnJlbnQtPmNvbXBsZXhGaW5hbGl6ZXIoKSkgeworICAgICAgICAgICAgbV9uZXh0VG9GaW5hbGl6
ZSA9ICZub2RlOworICAgICAgICAgICAgZmluYWxpemVyLT5maW5hbGl6ZShIYW5kbGU8VW5rbm93
bj46OndyYXBTbG90KGN1cnJlbnQtPnNsb3QoKSksIGN1cnJlbnQtPmZpbmFsaXplckNvbnRleHQo
KSk7CisgICAgICAgICAgICBub2RlID0gKm1fbmV4dFRvRmluYWxpemU7CisgICAgICAgICAgICBt
X25leHRUb0ZpbmFsaXplID0gMDsKKyAgICAgICAgfSAKKyAgICAgICAgCisgICAgICAgIGlmIChj
dXJyZW50LT5pc1NlbGZEZXN0cm95aW5nKCkpIHsKKyAgICAgICAgICAgIG1fbmV4dFRvRmluYWxp
emUgPSAmbm9kZTsKKyAgICAgICAgICAgIGRlYWxsb2NhdGUodG9IYW5kbGUoY3VycmVudCkpOwor
ICAgICAgICAgICAgbm9kZSA9ICptX25leHRUb0ZpbmFsaXplOworICAgICAgICAgICAgbV9uZXh0
VG9GaW5hbGl6ZSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC0+bmV4dCgpID09IG5v
ZGUpIHsgLy8gaWYgY3VycmVudC0+bmV4dCgpICE9IG5vZGUsIHRoZW4gY3VycmVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZAorICAgICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjpyZW1v
dmUoY3VycmVudCk7CisgICAgICAgICAgICAqY3VycmVudC0+c2xvdCgpID0gSlNWYWx1ZSgpOwor
ICAgICAgICAgICAgbV9pbW1lZGlhdGVMaXN0LnB1c2goY3VycmVudCk7CisgICAgICAgIH0KICAg
ICB9CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG1faGFuZGxpbmdGaW5hbGl6ZXJzID0gZmFs
c2U7CisjZW5kaWYKIH0KIAogdm9pZCBIYW5kbGVIZWFwOjp3cml0ZUJhcnJpZXIoSGFuZGxlU2xv
dCBzbG90LCBjb25zdCBKU1ZhbHVlJiB2YWx1ZSkKIHsKKyAgICBBU1NFUlQoIW1faGFuZGxpbmdG
aW5hbGl6ZXJzKTsKICAgICBpZiAoc2xvdC0+aXNDZWxsKCkgPT0gdmFsdWUuaXNDZWxsKCkgJiYg
IXZhbHVlID09ICEqc2xvdCkKICAgICAgICAgcmV0dXJuOwogICAgIE5vZGUqIG5vZGUgPSB0b05v
ZGUoc2xvdCk7CkBAIC0xMDgsNCArMTI4LDE2IEBAIHZvaWQgSGFuZGxlSGVhcDo6d3JpdGVCYXJy
aWVyKEhhbmRsZVNsb3Qgc2xvdCwgY29uc3QgSlNWYWx1ZSYgdmFsdWUpCiAgICAgICAgIG1fc3Ry
b25nTGlzdC5wdXNoKG5vZGUpOwogfQogCit1bnNpZ25lZCBIYW5kbGVIZWFwOjpwcm90ZWN0ZWRH
bG9iYWxPYmplY3RDb3VudCgpCit7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIE5vZGUq
IGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3N0cm9u
Z0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkpIHsKKyAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9ICpub2RlLT5zbG90KCk7CisgICAgICAgIGlmICh2YWx1ZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKS0+aXNHbG9iYWxPYmplY3QoKSkKKyAg
ICAgICAgICAgIGNvdW50Kys7CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhl
YXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFw
LmgKaW5kZXggMjNiYjllYzc3Nzk4MjNlMjg1YThlMmIxZjI0MTFmYTcxYjU5MjY5Ny4uMzk4MDZi
NDQzMjc2ZjhlNmViZDZkNzc2OWIyNDJkYzAwZjFhZTMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCkBAIC0zOCwxMCAr
MzgsMTggQEAgY2xhc3MgSlNHbG9iYWxEYXRhOwogY2xhc3MgSlNWYWx1ZTsKIGNsYXNzIE1hcmtT
dGFjazsKIAotdHlwZWRlZiB2b2lkICgqRmluYWxpemVyKShKU0dsb2JhbERhdGEmLCBIYW5kbGU8
VW5rbm93bj4pOwordHlwZWRlZiB2b2lkICgqRmluYWxpemVyKShKU0dsb2JhbERhdGEmLCBIYW5k
bGU8VW5rbm93bj4sIHZvaWQqKTsKKworY2xhc3MgQ29tcGxleEZpbmFsaXplciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCopID0gMDsK
KyAgICB2aXJ0dWFsIH5Db21wbGV4RmluYWxpemVyKCkge30KK307CiAKIGNsYXNzIEhhbmRsZUhl
YXAgewogcHJpdmF0ZToKKyAgICBlbnVtIFdlYWtQb2ludGVyVmlzaXRSdWxlIHsgTm9ybWFsVmlz
aXQsIElnbm9yZUxpdmVuZXNzIH07CisKIHB1YmxpYzoKICAgICBzdGF0aWMgSGFuZGxlSGVhcCog
aGVhcEZvcihIYW5kbGVTbG90KTsKIApAQCAtNTAsMTQgKzU4LDE1IEBAIHB1YmxpYzoKICAgICBI
YW5kbGVTbG90IGFsbG9jYXRlKCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlKEhhbmRsZVNsb3QpOwog
ICAgIAotICAgIHZvaWQgbWFrZVdlYWsoSGFuZGxlU2xvdCwgRmluYWxpemVyKTsKLSAgICB2b2lk
IG1ha2VTZWxmRGVzdHJveWluZyhIYW5kbGVTbG90LCBGaW5hbGl6ZXIpOworICAgIHZvaWQgbWFr
ZVdlYWsoSGFuZGxlU2xvdCwgRmluYWxpemVyLCB2b2lkKiBjb250ZXh0KTsKKyAgICB2b2lkIG1h
a2VTZWxmRGVzdHJveWluZyhIYW5kbGVTbG90LCBGaW5hbGl6ZXIsIHZvaWQqIGNvbnRleHQpOwor
ICAgIHZvaWQgbWFrZVdlYWsoSGFuZGxlU2xvdCwgQ29tcGxleEZpbmFsaXplciosIHZvaWQqIGNv
bnRleHQpOwogCiAgICAgdm9pZCBtYXJrU3Ryb25nSGFuZGxlcyhNYXJrU3RhY2smKTsKICAgICB2
b2lkIHVwZGF0ZUFmdGVyTWFyaygpOwogICAgIAogICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBkdXJpbmcgdGVhcmRvd24uCi0gICAgdm9pZCBjbGVhcldlYWtQb2ludGVycygpOworICAgIHZv
aWQgY2xlYXJXZWFrUG9pbnRlcnMoV2Vha1BvaW50ZXJWaXNpdFJ1bGUgPSBJZ25vcmVMaXZlbmVz
cyk7CiAKICAgICB2b2lkIHdyaXRlQmFycmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7
CiAKQEAgLTY4LDYgKzc3LDggQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisgICAgdW5zaWdu
ZWQgcHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiB1aW50cHRyX3QgSGFuZGxlSGVhcFdpdGhGbGFnczsKICAgICBlbnVtIHsgRmxhZ3NNYXNr
ID0gMywgV2Vha0ZsYWcgPSAxLCBTZWxmRGVzdHJveWluZ0ZsYWcgPSAyIH07CkBAIC03OSw4ICs5
MCwxMSBAQCBwcml2YXRlOgogICAgICAgICBIYW5kbGVTbG90IHNsb3QoKTsKICAgICAgICAgSGFu
ZGxlSGVhcCogaGFuZGxlSGVhcCgpOwogCi0gICAgICAgIHZvaWQgc2V0RmluYWxpemVyKEZpbmFs
aXplcik7CisgICAgICAgIHZvaWQgc2V0RmluYWxpemVyKEZpbmFsaXplciwgdm9pZCogY29udGV4
dCk7CisgICAgICAgIHZvaWQgc2V0RmluYWxpemVyKENvbXBsZXhGaW5hbGl6ZXIqLCB2b2lkKiBj
b250ZXh0KTsKICAgICAgICAgRmluYWxpemVyIGZpbmFsaXplcigpOworICAgICAgICBDb21wbGV4
RmluYWxpemVyKiBjb21wbGV4RmluYWxpemVyKCk7CisgICAgICAgIHZvaWQqIGZpbmFsaXplckNv
bnRleHQoKTsKIAogICAgICAgICB2b2lkIHNldFByZXYoTm9kZSopOwogICAgICAgICBOb2RlKiBw
cmV2KCk7CkBAIC05Nyw4ICsxMTEsMTIgQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAg
ICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgICAgIEhhbmRsZUhlYXBXaXRoRmxhZ3MgbV9oYW5kbGVI
ZWFwV2l0aEZsYWdzOwotICAgICAgICBGaW5hbGl6ZXIgbV9maW5hbGl6ZXI7Ci0gICAgICAgIE5v
ZGUqIG1fcHJldjsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgRmluYWxpemVyIG1fZmlu
YWxpemVyOworICAgICAgICAgICAgQ29tcGxleEZpbmFsaXplciogbV9jb21wbGV4RmluYWxpemVy
OworICAgICAgICB9OworICAgICAgICB2b2lkKiBtX2ZpbmFsaXplckNvbnRleHQ7CisgICAgICAg
IHVpbnRwdHJfdCBtX3ByZXZBbmRIYXNDb21wbGV4RmluYWxpemVyOwogICAgICAgICBOb2RlKiBt
X25leHQ7CiAgICAgfTsKIApAQCAtMTE0LDYgKzEzMiwxMSBAQCBwcml2YXRlOgogICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxOb2RlPiBtX3dlYWtMaXN0OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxO
b2RlPiBtX2ltbWVkaWF0ZUxpc3Q7CiAgICAgU2luZ2x5TGlua2VkTGlzdDxOb2RlPiBtX2ZyZWVM
aXN0OworICAgIE5vZGUqKiBtX25leHRUb0ZpbmFsaXplOworCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgIGJvb2wgbV9oYW5kbGluZ0ZpbmFsaXplcnM7CisjZW5kaWYKIH07CiAKIGlubGluZSBI
YW5kbGVIZWFwKiBIYW5kbGVIZWFwOjpoZWFwRm9yKEhhbmRsZVNsb3QgaGFuZGxlKQpAQCAtMTQ1
LDE1ICsxNjgsMTkgQEAgaW5saW5lIEhhbmRsZVNsb3QgSGFuZGxlSGVhcDo6YWxsb2NhdGUoKQog
aW5saW5lIHZvaWQgSGFuZGxlSGVhcDo6ZGVhbGxvY2F0ZShIYW5kbGVTbG90IGhhbmRsZSkKIHsK
ICAgICBOb2RlKiBub2RlID0gdG9Ob2RlKGhhbmRsZSk7CisgICAgaWYgKG1fbmV4dFRvRmluYWxp
emUgJiYgKm1fbmV4dFRvRmluYWxpemUgPT0gbm9kZSkgeworICAgICAgICAqbV9uZXh0VG9GaW5h
bGl6ZSA9IG5vZGUtPm5leHQoKTsKKyAgICAgICAgQVNTRVJUKG1fbmV4dFRvRmluYWxpemVbMF0t
Pm5leHQoKSk7CisgICAgfQogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKG5v
ZGUpOwogICAgIG1fZnJlZUxpc3QucHVzaChub2RlKTsKIH0KIAotaW5saW5lIHZvaWQgSGFuZGxl
SGVhcDo6bWFrZVdlYWsoSGFuZGxlU2xvdCBoYW5kbGUsIEZpbmFsaXplciBmaW5hbGl6ZXIpCitp
bmxpbmUgdm9pZCBIYW5kbGVIZWFwOjptYWtlV2VhayhIYW5kbGVTbG90IGhhbmRsZSwgRmluYWxp
emVyIGZpbmFsaXplciwgdm9pZCogY29udGV4dCkKIHsKICAgICBOb2RlKiBub2RlID0gdG9Ob2Rl
KGhhbmRsZSk7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PE5vZGU+OjpyZW1vdmUobm9kZSk7Ci0g
ICAgbm9kZS0+c2V0RmluYWxpemVyKGZpbmFsaXplcik7CisgICAgbm9kZS0+c2V0RmluYWxpemVy
KGZpbmFsaXplciwgY29udGV4dCk7CiAgICAgbm9kZS0+bWFrZVdlYWsoKTsKICAgICBpZiAoaGFu
ZGxlLT5pc0NlbGwoKSAmJiAqaGFuZGxlKQogICAgICAgICBtX3dlYWtMaXN0LnB1c2gobm9kZSk7
CkBAIC0xNjEsMjMgKzE4OCwzOCBAQCBpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjptYWtlV2VhayhI
YW5kbGVTbG90IGhhbmRsZSwgRmluYWxpemVyIGZpbmFsaXplcikKICAgICAgICAgbV9pbW1lZGlh
dGVMaXN0LnB1c2gobm9kZSk7CiB9CiAKLWlubGluZSB2b2lkIEhhbmRsZUhlYXA6Om1ha2VTZWxm
RGVzdHJveWluZyhIYW5kbGVTbG90IGhhbmRsZSwgRmluYWxpemVyIGZpbmFsaXplcikKK2lubGlu
ZSB2b2lkIEhhbmRsZUhlYXA6Om1ha2VXZWFrKEhhbmRsZVNsb3QgaGFuZGxlLCBDb21wbGV4Rmlu
YWxpemVyKiBmaW5hbGl6ZXIsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgbWFrZVdlYWsoaGFuZGxl
LCBmaW5hbGl6ZXIpOwogICAgIE5vZGUqIG5vZGUgPSB0b05vZGUoaGFuZGxlKTsKICAgICBTZW50
aW5lbExpbmtlZExpc3Q8Tm9kZT46OnJlbW92ZShub2RlKTsKKyAgICBub2RlLT5zZXRGaW5hbGl6
ZXIoZmluYWxpemVyLCBjb250ZXh0KTsKKyAgICBub2RlLT5tYWtlV2VhaygpOworICAgIGlmICho
YW5kbGUtPmlzQ2VsbCgpICYmICpoYW5kbGUpCisgICAgICAgIG1fd2Vha0xpc3QucHVzaChub2Rl
KTsKKyAgICBlbHNlCisgICAgICAgIG1faW1tZWRpYXRlTGlzdC5wdXNoKG5vZGUpOworfQorCitp
bmxpbmUgdm9pZCBIYW5kbGVIZWFwOjptYWtlU2VsZkRlc3Ryb3lpbmcoSGFuZGxlU2xvdCBoYW5k
bGUsIEZpbmFsaXplciBmaW5hbGl6ZXIsIHZvaWQqIGNvbnRleHQpCit7CisgICAgbWFrZVdlYWso
aGFuZGxlLCBmaW5hbGl6ZXIsIGNvbnRleHQpOworICAgIE5vZGUqIG5vZGUgPSB0b05vZGUoaGFu
ZGxlKTsKICAgICBub2RlLT5tYWtlU2VsZkRlc3Ryb3lpbmcoKTsKIH0KIAogaW5saW5lIEhhbmRs
ZUhlYXA6Ok5vZGU6Ok5vZGUoSGFuZGxlSGVhcCogaGFuZGxlSGVhcCkKICAgICA6IG1faGFuZGxl
SGVhcFdpdGhGbGFncyhyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGFuZGxlSGVhcCkpCiAg
ICAgLCBtX2ZpbmFsaXplcigwKQorICAgICwgbV9maW5hbGl6ZXJDb250ZXh0KDApCisgICAgLCBt
X3ByZXZBbmRIYXNDb21wbGV4RmluYWxpemVyKDApCiB7CiB9CiAKIGlubGluZSBIYW5kbGVIZWFw
OjpOb2RlOjpOb2RlKFdURjo6U2VudGluZWxUYWcpCiAgICAgOiBtX2hhbmRsZUhlYXBXaXRoRmxh
Z3MoMCkKICAgICAsIG1fZmluYWxpemVyKDApCisgICAgLCBtX2ZpbmFsaXplckNvbnRleHQoMCkK
KyAgICAsIG1fcHJldkFuZEhhc0NvbXBsZXhGaW5hbGl6ZXIoMCkKIHsKIH0KIApAQCAtMTkxLDkg
KzIzMywxNyBAQCBpbmxpbmUgSGFuZGxlSGVhcCogSGFuZGxlSGVhcDo6Tm9kZTo6aGFuZGxlSGVh
cCgpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlSGVhcCo+KG1faGFuZGxlSGVh
cFdpdGhGbGFncyAmIH5GbGFnc01hc2spOwogfQogCi1pbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpO
b2RlOjpzZXRGaW5hbGl6ZXIoRmluYWxpemVyIGZpbmFsaXplcikKK2lubGluZSB2b2lkIEhhbmRs
ZUhlYXA6Ok5vZGU6OnNldEZpbmFsaXplcihGaW5hbGl6ZXIgZmluYWxpemVyLCB2b2lkKiBjb250
ZXh0KQogewogICAgIG1fZmluYWxpemVyID0gZmluYWxpemVyOworICAgIG1fZmluYWxpemVyQ29u
dGV4dCA9IGNvbnRleHQ7Cit9CisKK2lubGluZSB2b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNldEZp
bmFsaXplcihDb21wbGV4RmluYWxpemVyKiBmaW5hbGl6ZXIsIHZvaWQqIGNvbnRleHQpCit7Cisg
ICAgbV9jb21wbGV4RmluYWxpemVyID0gZmluYWxpemVyOworICAgIG1fZmluYWxpemVyQ29udGV4
dCA9IGNvbnRleHQ7CisgICAgbV9wcmV2QW5kSGFzQ29tcGxleEZpbmFsaXplciB8PSAxOwogfQog
CiBpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpOb2RlOjptYWtlV2VhaygpCkBAIC0yMjEsMTcgKzI3
MSwzMiBAQCBpbmxpbmUgYm9vbCBIYW5kbGVIZWFwOjpOb2RlOjppc1NlbGZEZXN0cm95aW5nKCkK
IAogaW5saW5lIEZpbmFsaXplciBIYW5kbGVIZWFwOjpOb2RlOjpmaW5hbGl6ZXIoKQogeworICAg
IGlmIChtX3ByZXZBbmRIYXNDb21wbGV4RmluYWxpemVyICYgMSkKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIG1fZmluYWxpemVyOwogfQogCitpbmxpbmUgQ29tcGxleEZpbmFsaXplciog
SGFuZGxlSGVhcDo6Tm9kZTo6Y29tcGxleEZpbmFsaXplcigpCit7CisgICAgaWYgKG1fcHJldkFu
ZEhhc0NvbXBsZXhGaW5hbGl6ZXIgJiAxKQorICAgICAgICByZXR1cm4gbV9jb21wbGV4RmluYWxp
emVyOworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9pZCogSGFuZGxlSGVhcDo6Tm9kZTo6
ZmluYWxpemVyQ29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fZmluYWxpemVyKTsKKyAgICByZXR1
cm4gbV9maW5hbGl6ZXJDb250ZXh0OworfQorCiBpbmxpbmUgdm9pZCBIYW5kbGVIZWFwOjpOb2Rl
OjpzZXRQcmV2KE5vZGUqIHByZXYpCiB7Ci0gICAgbV9wcmV2ID0gcHJldjsKKyAgICBtX3ByZXZB
bmRIYXNDb21wbGV4RmluYWxpemVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHByZXYp
IHwgKG1fcHJldkFuZEhhc0NvbXBsZXhGaW5hbGl6ZXIgJiAxKTsKIH0KIAogaW5saW5lIEhhbmRs
ZUhlYXA6Ok5vZGUqIEhhbmRsZUhlYXA6Ok5vZGU6OnByZXYoKQogewotICAgIHJldHVybiBtX3By
ZXY7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZSo+KG1fcHJldkFuZEhhc0NvbXBs
ZXhGaW5hbGl6ZXIgJiB+MSk7CiB9CiAKIGlubGluZSB2b2lkIEhhbmRsZUhlYXA6Ok5vZGU6OnNl
dE5leHQoTm9kZSogbmV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHAKaW5kZXggNDVmM2U0YmZiZjdhZmFmM2RkMmNhYTMxYjNlM2E3
ODg2YmFjNmJlNS4uOWI3OTg2ODhmMDc4Mzg5MmQ2YWIwM2YwMDkzMDQwNzIyNDQ4ZGUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBSZWdpc3RlckZpbGU6OnNldEdsb2JhbE9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIG1fZ2xvYmFsT2JqZWN0LnNldChnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3RDb2xsZWN0
ZWQpOwogfQogCi12b2lkIFJlZ2lzdGVyRmlsZTo6Z2xvYmFsT2JqZWN0Q29sbGVjdGVkKEpTR2xv
YmFsRGF0YSYsIEhhbmRsZTxVbmtub3duPiB2YWx1ZSkKK3ZvaWQgUmVnaXN0ZXJGaWxlOjpnbG9i
YWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25vd24+IHZhbHVlLCB2
b2lkKikKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNHbG9iYWxPYmpl
Y3QodmFsdWUuZ2V0KCkpOwogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKS5zZXROdW1HbG9iYWxzKDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCmluZGV4IGViZmQ0NmRlYWI5Yzk3
ZmIwNDNjNjQ5MTk1ODlmN2I1NTM3MjdmZWIuLmMzYTlmYzZmY2VhZTJhY2NjOGJlM2M2NWE1N2Zl
NGIyYjI0ZDI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VuZCAtIG1fc3RhcnQ7IH0KIAogICAg
ICAgICB2b2lkIHNldEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCopOwotICAgICAgICBzdGF0
aWMgdm9pZCBnbG9iYWxPYmplY3RDb2xsZWN0ZWQoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFVua25v
d24+KTsKKyAgICAgICAgc3RhdGljIHZvaWQgZ2xvYmFsT2JqZWN0Q29sbGVjdGVkKEpTR2xvYmFs
RGF0YSYsIEhhbmRsZTxVbmtub3duPiwgdm9pZCopOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgYm9vbCBncm93KFJlZ2lzdGVyKiBuZXdFbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAppbmRleCBlYjIwNjhlZDJhZjg0ZDhm
M2YwNWRkZThjYWNlNWU5N2Q4ZjNkMjZiLi5lNzIzYzM0MDY5ZDM5MDFmOTE1NGNlOTY5MDI2YjNi
ODU0ZDUxNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcApAQCAtNCw3
ICs0LDcgQEAKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSAgRm91bmRhdGlvbjsgZWl0aGVyCiAgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKQEAgLTI3MiwxOCArMjcyLDE3IEBAIHNpemVfdCBIZWFwOjpjYXBhY2l0eSgp
IGNvbnN0CiAKIHNpemVfdCBIZWFwOjpnbG9iYWxPYmplY3RDb3VudCgpCiB7Ci0gICAgcmV0dXJu
IG1fZ2xvYmFsRGF0YS0+Z2xvYmFsT2JqZWN0cy51bmNoZWNrZWRTaXplKCk7CisgICAgcmV0dXJu
IG1fZ2xvYmFsRGF0YS0+Z2xvYmFsT2JqZWN0Q291bnQ7CiB9CiAKIHNpemVfdCBIZWFwOjpwcm90
ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpCiB7Ci0gICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICBz
aXplX3QgY291bnQgPSBtX2hhbmRsZUhlYXAucHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKTsK
IAotICAgIEdsb2JhbE9iamVjdE1hcCYgbWFwID0gbV9nbG9iYWxEYXRhLT5nbG9iYWxPYmplY3Rz
OwotICAgIEdsb2JhbE9iamVjdE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLnVuY2hlY2tlZEVuZCgp
OwotICAgIGZvciAoR2xvYmFsT2JqZWN0TWFwOjppdGVyYXRvciBpdCA9IG1hcC51bmNoZWNrZWRC
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKG1hcC5pc1ZhbGlkKGl0KSAm
JiBtX3Byb3RlY3RlZFZhbHVlcy5jb250YWlucyhpdC0+c2Vjb25kLmdldCgpKSkKLSAgICAgICAg
ICAgICsrY291bnQ7CisgICAgUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBlbmQgPSBtX3Byb3Rl
Y3RlZFZhbHVlcy5lbmQoKTsKKyAgICBmb3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgaXQg
PSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aWYgKGl0LT5maXJzdC0+aXNPYmplY3QoKSAmJiBhc09iamVjdChpdC0+Zmlyc3QpLT5pc0dsb2Jh
bE9iamVjdCgpKQorICAgICAgICAgICAgY291bnQrKzsKICAgICB9CiAKICAgICByZXR1cm4gY291
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApp
bmRleCAxNDUyNGM4Y2Y3NDkwNjMyY2IzMmQ2MmY2MjYxZTM3YmQxMTRmNTBlLi41ZTUzZjI3OGYz
M2E4ZDMwY2ZiYjQ0ZjlhYzAxMGJhN2RmYTMxMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTE0MCw2ICsxNDAsNyBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFk
U3RhY2tUeXBlIHRocmVhZAogICAgICwgcGFyc2VyKG5ldyBQYXJzZXIpCiAgICAgLCBpbnRlcnBy
ZXRlcigwKQogICAgICwgaGVhcCh0aGlzKQorICAgICwgZ2xvYmFsT2JqZWN0Q291bnQoMCkKICAg
ICAsIGR5bmFtaWNHbG9iYWxPYmplY3QoMCkKICAgICAsIGZpcnN0U3RyaW5naWZpZXJUb01hcmso
MCkKICAgICAsIGNhY2hlZFVUQ09mZnNldChOYU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IGQ4MjMzODExM2UwZGNlNDU3OGFkY2YzMmUxYzNi
MjNlNjZmMmYyNmMuLjRmN2NmZGMzZDFlM2JmZmY2NTgwY2FhNjE0ZmNjZDkxM2FjYjQyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0zOSw3
ICszOSw2IEBACiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiVGVybWluYXRv
ci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCi0jaW5jbHVkZSAiV2Vha0dDTWFwLmgi
CiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9j
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC03Niw4ICs3NSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgc3RydWN0IEluc3RydWN0aW9u
OwogCi0gICAgdHlwZWRlZiBXZWFrR0NNYXA8SlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVj
dD4gR2xvYmFsT2JqZWN0TWFwOyAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byB1c2UgYSBXZWFr
R0NTZXQgaGVyZS4KLQogICAgIHN0cnVjdCBEU1RPZmZzZXRDYWNoZSB7CiAgICAgICAgIERTVE9m
ZnNldENhY2hlKCkKICAgICAgICAgewpAQCAtMjE1LDcgKzIxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIEhhc2hNYXA8T3BhcXVlSlNDbGFzcyosIE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YSo+IG9wYXF1ZUpTQ2xhc3NEYXRhOwogCi0gICAgICAgIEdsb2JhbE9iamVjdE1hcCBnbG9i
YWxPYmplY3RzOworICAgICAgICB1bnNpZ25lZCBnbG9iYWxPYmplY3RDb3VudDsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3Q7CiAKICAgICAgICAgSGFzaFNldDxK
U09iamVjdCo+IHN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggN2ZmMjlh
ODM2ZmYxOTc2NjBkMGQ4ZjQxYzgwNmQ5Yzk0OGU5ZDYyOC4uNDY0ZDA1ZTlhNzI0NDBiMDBjZjQ4
OWJiYTNmZDRlMGRjYTg2Y2FhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTAyLDggKzEwMiw2IEBAIEpTR2xvYmFsT2JqZWN0
Ojp+SlNHbG9iYWxPYmplY3QoKQogICAgICAgICAoKnByb2ZpbGVyKS0+c3RvcFByb2ZpbGluZyhn
bG9iYWxFeGVjKCksIFVTdHJpbmcoKSk7CiAgICAgfQogCi0gICAgZCgpLT5nbG9iYWxEYXRhLT5n
bG9iYWxPYmplY3RzLnRha2UodGhpcyk7Ci0KICAgICBkKCktPmRlc3RydWN0b3IoZCgpKTsKIH0K
IApAQCAtMTE0LDcgKzExMiw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoSlNPYmplY3Qq
IHRoaXNWYWx1ZSkKICAgICBzdHJ1Y3R1cmUoKS0+ZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFj
a2luZygpOwogCiAgICAgZCgpLT5nbG9iYWxEYXRhID0gSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFs
RGF0YSgpOwotICAgIGQoKS0+Z2xvYmFsRGF0YS0+Z2xvYmFsT2JqZWN0cy5zZXQodGhpcywgdGhp
cyk7CiAgICAgZCgpLT5nbG9iYWxTY29wZUNoYWluID0gU2NvcGVDaGFpbih0aGlzLCBkKCktPmds
b2JhbERhdGEuZ2V0KCksIHRoaXMsIHRoaXNWYWx1ZSk7CiAKICAgICBKU0dsb2JhbE9iamVjdDo6
Z2xvYmFsRXhlYygpLT5pbml0KDAsIDAsIGQoKS0+Z2xvYmFsU2NvcGVDaGFpbi5ub2RlKCksIENh
bGxGcmFtZTo6bm9DYWxsZXIoKSwgMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtHQ01hcC5oCmluZGV4IDdiZjQ1MDMwYmRlNjczMzIxNzc4OGRmZWRkNDNiZjZiNDJkNzc1
ZjIuLjE1NzMxNWViOTdiOGI2YTQyOTY4ZDdiYjAzZmJjZmJjOWNiZjgwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC0yNiwxMTAgKzI2LDEyOCBAQAog
I2lmbmRlZiBXZWFrR0NNYXBfaAogI2RlZmluZSBXZWFrR0NNYXBfaAogCi0jaW5jbHVkZSAiSGVh
cC5oIgorI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBKU0NlbGw7
Ci0KLS8vIEEgSGFzaE1hcCB3aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIGVtcHR5VmFsdWUo
KSBmb3IgY2VsbHMgYXdhaXRpbmcgZGVzdHJ1Y3Rpb24uCisvLyBBIEhhc2hNYXAgZm9yIEdDJ2Qg
dmFsdWVzIHRoYXQgcmVtb3ZlcyBlbnRyaWVzIHdoZW4gdGhlIGFzc29jaWF0ZWQgdmFsdWUKKy8v
IGRpZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPgot
Y2xhc3MgV2Vha0dDTWFwIHsKKyAgICBjbGFzcyBXZWFrR0NNYXAgOiBwcml2YXRlIENvbXBsZXhG
aW5hbGl6ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIC8qCi0gICAgSW52
YXJpYW50czoKLSAgICAgICAgKiBBIHZhbHVlIGVudGVycyB0aGUgV2Vha0dDTWFwIG1hcmtlZC4g
KEd1YXJhbnRlZWQgYnkgc2V0KCkuKQotICAgICAgICAqIEEgdmFsdWUgdGhhdCBiZWNvbWVzIHVu
bWFya2VkIGxlYXZlcyB0aGUgV2Vha0dDTWFwIGJlZm9yZSBiZWluZyByZWN5Y2xlZC4gKEd1YXJh
bnRlZWQgYnkgdGhlIHZhbHVlJ3MgZGVzdHJ1Y3RvciByZW1vdmluZyBpdCBmcm9tIHRoZSBXZWFr
R0NNYXAuKQotICAgICAgICAqIEEgdmFsdWUgdGhhdCBiZWNvbWVzIHVubWFya2VkIGxlYXZlcyB0
aGUgV2Vha0dDTWFwIGJlZm9yZSBiZWNvbWluZyBtYXJrZWQgYWdhaW4uIChHdWFyYW50ZWVkIGJ5
IGFsbCBkZXN0cnVjdG9ycyBydW5uaW5nIGJlZm9yZSB0aGUgbWFyayBwaGFzZSBiZWdpbnMuKQot
ICAgICAgICAqIER1cmluZyB0aGUgbWFyayBwaGFzZSwgYWxsIHZhbHVlcyBpbiB0aGUgV2Vha0dD
TWFwIGFyZSB2YWxpZC4gKEd1YXJhbnRlZWQgYnkgYWxsIGRlc3RydWN0b3JzIHJ1bm5pbmcgYmVm
b3JlIHRoZSBtYXJrIHBoYXNlIGJlZ2lucy4pCi0gICAgKi8KLQotcHVibGljOgotICAgIHR5cGVk
ZWYgdHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlLCBEZXByZWNhdGVkUHRyPE1hcHBlZFR5cGU+ID46
Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBl
LCBEZXByZWNhdGVkUHRyPE1hcHBlZFR5cGU+ID46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJh
dG9yOwotICAgIAotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fbWFwLmlzRW1wdHkoKTsg
fQotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWFrR0NNYXApOwogCi0gICAgTWFwcGVkVHlwZSogZ2V0KGNvbnN0IEtleVR5cGUm
KSBjb25zdDsKLSAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1h
cHBlZFR5cGUqKTsgCi0gICAgTWFwcGVkVHlwZSogdGFrZShjb25zdCBLZXlUeXBlJik7CisgICAg
dHlwZWRlZiBIYXNoTWFwPEtleVR5cGUsIEhhbmRsZVNsb3Q+IE1hcFR5cGU7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFs
VHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yIG1hcF9pdGVyYXRv
cjsKIAotICAgIC8vIFRoZXNlIHVuY2hlY2tlZCBmdW5jdGlvbnMgcHJvdmlkZSBhY2Nlc3MgdG8g
YSB2YWx1ZSBldmVuIGlmIHRoZSB2YWx1ZSdzCi0gICAgLy8gbWFyayBiaXQgaXMgbm90IHNldC4g
VGhpcyBpcyB1c2VkLCBhbW9uZyBvdGhlciB0aGluZ3MsIHRvIHJldHJpZXZlIHZhbHVlcwotICAg
IC8vIGR1cmluZyB0aGUgR0MgbWFyayBwaGFzZSwgd2hpY2ggYmVnaW5zIGJ5IGNsZWFyaW5nIGFs
bCBtYXJrIGJpdHMuCi0gICAgCi0gICAgc2l6ZV90IHVuY2hlY2tlZFNpemUoKSB7IHJldHVybiBt
X21hcC5zaXplKCk7IH0KK3B1YmxpYzoKIAotICAgIE1hcHBlZFR5cGUqIHVuY2hlY2tlZEdldChj
b25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpLmdldCgpOyB9
Ci0gICAgRGVwcmVjYXRlZFB0cjxNYXBwZWRUeXBlPiogdW5jaGVja2VkR2V0U2xvdChjb25zdCBL
ZXlUeXBlJiBrZXkpCisgICAgc3RydWN0IGl0ZXJhdG9yIHsKKyAgICAgICAgaXRlcmF0b3IobWFw
X2l0ZXJhdG9yIGl0ZXIpCisgICAgICAgICAgICA6IG1faXRlcmF0b3IoaXRlcikKKyAgICAgICAg
eworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGQ6OnBhaXI8S2V5VHlwZSwgRXh0ZXJu
YWxUeXBlPiBnZXQoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1ha2VfcGFpcihtX2l0ZXJhdG9yLT5m
aXJzdCwgSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OmdldEZyb21TbG90KG1faXRlcmF0b3ItPnNl
Y29uZCkpOyB9CisgICAgICAgIHN0ZDo6cGFpcjxLZXlUeXBlLCBIYW5kbGVTbG90PiBnZXRTbG90
KCkgY29uc3QgeyByZXR1cm4gKm1faXRlcmF0b3I7IH0KKyAgICAgICAgCisgICAgICAgIGl0ZXJh
dG9yJiBvcGVyYXRvcisrKCkgeyArK21faXRlcmF0b3I7IHJldHVybiAqdGhpczsgfQorICAgICAg
ICAKKyAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKKyAgICAgICAg
CisgICAgICAgIC8vIENvbXBhcmlzb24uCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgPT0gb3RoZXIubV9pdGVy
YXRvcjsgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0KKyAgICAgICAg
CisgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJhdG9yOworICAg
IH07CisKKyAgICBXZWFrR0NNYXAoKQogICAgIHsKLSAgICAgICAgaXRlcmF0b3IgaXRlciA9IG1f
bWFwLmZpbmQoa2V5KTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICZpdGVyLT5zZWNvbmQ7CiAgICAgfQotICAg
IGJvb2wgdW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRUeXBlKik7CiAKLSAg
ICBpdGVyYXRvciB1bmNoZWNrZWRCZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KLSAg
ICBpdGVyYXRvciB1bmNoZWNrZWRFbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQorICAgIGJv
b2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fbWFwLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgbWFwX2l0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOworICAgICAg
ICBmb3IgKG1hcF9pdGVyYXRvciBwdHIgPSBtX21hcC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0
cikKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IocHRyLT5zZWNvbmQpLT5kZWFsbG9j
YXRlKHB0ci0+c2Vjb25kKTsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAgICB9CiAKLSAgICBj
b25zdF9pdGVyYXRvciB1bmNoZWNrZWRCZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2lu
KCk7IH0KLSAgICBjb25zdF9pdGVyYXRvciB1bmNoZWNrZWRFbmQoKSBjb25zdCB7IHJldHVybiBt
X21hcC5lbmQoKTsgfQorICAgIEV4dGVybmFsVHlwZSBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpnZXRG
cm9tU2xvdChtX21hcC5nZXQoa2V5KSk7CisgICAgfQogCi0gICAgYm9vbCBpc1ZhbGlkKGl0ZXJh
dG9yIGl0KSBjb25zdCB7IHJldHVybiBIZWFwOjppc01hcmtlZChpdC0+c2Vjb25kLmdldCgpKTsg
fQotICAgIGJvb2wgaXNWYWxpZChjb25zdF9pdGVyYXRvciBpdCkgY29uc3QgeyByZXR1cm4gSGVh
cDo6aXNNYXJrZWQoaXQtPnNlY29uZC5nZXQoKSk7IH0KKyAgICBIYW5kbGVTbG90IGdldFNsb3Qo
Y29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmdl
dChrZXkpOworICAgIH0KIAotcHJpdmF0ZToKLSAgICBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0
ZWRQdHI8TWFwcGVkVHlwZT4gPiBtX21hcDsKLX07CisgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIg
PSBtX21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gaXRlci5maXJz
dC0+c2Vjb25kOworICAgICAgICBpZiAoaXRlci5zZWNvbmQpIHsKKyAgICAgICAgICAgIHNsb3Qg
PSBnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7CisgICAgICAgICAgICBpdGVyLmZp
cnN0LT5zZWNvbmQgPSBzbG90OworICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90
KS0+bWFrZVdlYWsoc2xvdCwgdGhpcywga2V5KTsKKyAgICAgICAgfQorICAgICAgICBIYW5kbGVI
ZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwgdmFsdWUpOworICAgICAgICAq
c2xvdCA9IHZhbHVlOworICAgIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5h
bWUgTWFwcGVkVHlwZT4KLWlubGluZSBNYXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFw
cGVkVHlwZT46OmdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Ci17Ci0gICAgTWFwcGVkVHlw
ZSogcmVzdWx0ID0gbV9tYXAuZ2V0KGtleSkuZ2V0KCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBIYXNo
VHJhaXRzPE1hcHBlZFR5cGUqPjo6ZW1wdHlWYWx1ZSgpKQorICAgIEV4dGVybmFsVHlwZSB0YWtl
KGNvbnN0IEtleVR5cGUmIGtleSkKKyAgICB7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IG1f
bWFwLnRha2Uoa2V5KTsKKyAgICAgICAgaWYgKCFzbG90KQorICAgICAgICAgICAgcmV0dXJuIEhh
c2hUcmFpdHM8RXh0ZXJuYWxUeXBlPjo6ZW1wdHlWYWx1ZSgpOworICAgICAgICBFeHRlcm5hbFR5
cGUgcmVzdWx0ID0gSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OmdldEZyb21TbG90KHNsb3QpOwor
ICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIGlmICghSGVhcDo6aXNNYXJrZWQocmVzdWx0KSkKLSAg
ICAgICAgcmV0dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KKyAgICB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIE1hcHBlZFR5cGU+Ci1NYXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVk
VHlwZT46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIE1hcHBlZFR5cGUqIHJlc3Vs
dCA9IG1fbWFwLnRha2Uoa2V5KS5nZXQoKTsKLSAgICBpZiAocmVzdWx0ID09IEhhc2hUcmFpdHM8
TWFwcGVkVHlwZSo+OjplbXB0eVZhbHVlKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
aWYgKCFIZWFwOjppc01hcmtlZChyZXN1bHQpKQotICAgICAgICByZXR1cm4gSGFzaFRyYWl0czxN
YXBwZWRUeXBlKj46OmVtcHR5VmFsdWUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQorICAgIHNp
emVfdCBzaXplKCkgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1wYWlyPHR5cGVuYW1lIFdlYWtHQ01hcDxL
ZXlUeXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJvb2w+IFdlYWtHQ01hcDxLZXlUeXBlLCBN
YXBwZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkVHlwZSogdmFsdWUpCi17
Ci0gICAgSGVhcDo6c2V0TWFya2VkKHZhbHVlKTsgLy8gSWYgdmFsdWUgaXMgbmV3bHkgYWxsb2Nh
dGVkLCBpdCdzIG5vdCBtYXJrZWQsIHNvIG1hcmsgaXQgbm93LgotICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKLSAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpIHsgLy8gcHJlLWV4aXN0aW5nIGVudHJ5Ci0gICAgICAgIHJlc3VsdC5zZWNvbmQgPSAh
SGVhcDo6aXNNYXJrZWQocmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOworICAgIGJvb2wgZGVwcmVjYXRlZFJlbW92ZShjb25z
dCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIFRo
aXMgb25seSBleGlzdHMgaW4gb3JkZXIgdG8gYWxsb3cgc29tZSBzZW1ibGFuY2Ugb2YgY29ycmVj
dG5lc3MgdG8KKyAgICAgICAgLy8gdGhlIEpTV2Vha09iamVjdE1hcENsZWFyIEFQSQorICAgICAg
ICB0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOworICAg
ICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gaXRlci0+c2Vjb25kOworICAgICAgICBFeHRlcm5h
bFR5cGUgaW5tYXAgPSBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6Z2V0RnJvbVNsb3Qoc2xvdCk7
CisgICAgICAgIGlmIChpbm1hcCAmJiBpbm1hcCAhPSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGl0ZXIpOworICAgICAgICBIYW5kbGVIZWFw
OjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsg
ICAgICAgIAogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPgotYm9vbCBXZWFrR0NNYXA8S2V5VHlwZSwg
TWFwcGVkVHlwZT46OnVuY2hlY2tlZFJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFR5
cGUqIHZhbHVlKQotewotICAgIGl0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwotICAgIGlm
IChpdCA9PSBtX21hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpdC0+
c2Vjb25kLmdldCgpICE9IHZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9tYXAu
cmVtb3ZlKGl0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBpdGVyYXRvciBiZWdpbigpIHsg
cmV0dXJuIGl0ZXJhdG9yKG1fbWFwLmJlZ2luKCkpOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gaXRlcmF0b3IobV9tYXAuZW5kKCkpOyB9CisgICAgCisgICAgfldlYWtHQ01hcCgpCisg
ICAgeworICAgICAgICBjbGVhcigpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdmlydHVh
bCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCoga2V5KQorICAgIHsKKyAgICAg
ICAgSGFuZGxlU2xvdCBzbG90ID0gbV9tYXAudGFrZShzdGF0aWNfY2FzdDxLZXlUeXBlPihrZXkp
KTsKKyAgICAgICAgQVNTRVJUKHNsb3QpOworICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNs
b3QpLT5kZWFsbG9jYXRlKHNsb3QpOworICAgIH0KKworICAgIE1hcFR5cGUgbV9tYXA7Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha0dDUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NQdHIuaAppbmRleCBhMDEzOGMwOGM1OTA0YjIzY2RkYzUxZWY3YzA2NzhjYzk0YjFlMWM2Li5l
NDhmODdjYWU0YmE2NzBjOTk4NmYwNTQ1NzdhMzU1ZjI3OGUwODY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaApAQCAtNDMsMTYgKzQzLDE2IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogICAgIAotICAgIFdlYWtHQ1B0cihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEZpbmFsaXplciBmaW5hbGl6ZXIgPSAwKQorICAgIFdlYWtHQ1B0cihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEZpbmFsaXplciBmaW5hbGl6ZXIgPSAwLCB2b2lkKiBjb250ZXh0ID0gMCkK
ICAgICAgICAgOiBtX3Nsb3QoZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpKQogICAg
IHsKLSAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihtX3Nsb3QpLT5tYWtlV2VhayhtX3Nsb3Qs
IGZpbmFsaXplcik7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3IobV9zbG90KS0+bWFrZVdl
YWsobV9zbG90LCBmaW5hbGl6ZXIsIGNvbnRleHQpOwogICAgIH0KICAgICAKLSAgICBXZWFrR0NQ
dHIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUsIEZpbmFsaXpl
ciBmaW5hbGl6ZXIgPSAwKQorICAgIFdlYWtHQ1B0cihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEV4dGVybmFsVHlwZSB2YWx1ZSwgRmluYWxpemVyIGZpbmFsaXplciA9IDAsIHZvaWQqIGNvbnRl
eHQgPSAwKQogICAgICAgICA6IG1fc2xvdChnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxl
KCkpCiAgICAgewotICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKG1fc2xvdCktPm1ha2VXZWFr
KG1fc2xvdCwgZmluYWxpemVyKTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihtX3Nsb3Qp
LT5tYWtlV2VhayhtX3Nsb3QsIGZpbmFsaXplciwgY29udGV4dCk7CiAgICAgICAgIGludGVybmFs
U2V0KHZhbHVlKTsKICAgICB9CiAKQEAgLTc3LDExICs3NywxMSBAQCBwdWJsaWM6CiAgICAgICAg
IEhhbmRsZUhlYXA6OmhlYXBGb3IobV9zbG90KS0+ZGVhbGxvY2F0ZShtX3Nsb3QpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZh
bHVlLCBGaW5hbGl6ZXIgZmluYWxpemVyKQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlLCBGaW5hbGl6ZXIgZmluYWxpemVyLCB2b2lkKiBj
b250ZXh0ID0gMCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy0+bV9zbG90KSB7CiAgICAgICAg
ICAgICB0aGlzLT5tX3Nsb3QgPSBnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7Ci0g
ICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHRoaXMtPm1fc2xvdCktPm1ha2VXZWFrKHRo
aXMtPm1fc2xvdCwgZmluYWxpemVyKTsKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Io
dGhpcy0+bV9zbG90KS0+bWFrZVdlYWsodGhpcy0+bV9zbG90LCBmaW5hbGl6ZXIsIGNvbnRleHQp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVChIYW5kbGVIZWFwOjpoZWFwRm9y
KHRoaXMtPm1fc2xvdCktPmdldEZpbmFsaXplcih0aGlzLT5tX3Nsb3QpID09IGZpbmFsaXplcik7
CiAgICAgICAgIHRoaXMtPmludGVybmFsU2V0KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggOWMxNmM3YmY0OWE2MzRkMzkyN2FjOTI2YmI1MzNlMzc0NzgwOWYyMC4uMzUwMGRkYWYxNzY0
MzYwY2JkZjgxOTM3ZmYwMDcyZWZjMjEzZmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ5
Niw3ICs0OTYsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcAotICAgIGJpbmRpbmdz
L2pzL0pTRGVidWdXcmFwcGVyU2V0LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAwYjkyMjM1OTQ0MDVjMGNhNGY4Mzg2ZDcyMDMwNzU4OGFmMzhl
YzExLi5hNmNjZGFhNmZiMzdmZWY4ZjEyYWQzOTQ5NmY2NTM1YmFlZTI3ZGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDItMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIFdlYWtHQ01hcCB1c2UgbmV3IGhhbmRsZSBpbmZyYXN0cnVjdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMDAKKworICAgICAgICBVcGRh
dGUgdG8gbmV3IFdlYWtHQ01hcCBBUElzLCB0aGlzIHJlcXVpcmVzIHRocmVhZGluZyBnbG9iYWwK
KyAgICAgICAgZGF0YSB0byBhIGZldyBmdW5jdGlvbnMgdGhhdCBkaWQgbm90IG5lZWQgaXQgaW4g
dGhlIHBhc3QsIGJ1dAorICAgICAgICBhbHNvIGdldHMgcmlkIG9mIGEgbGFyZ2UgbnVtYmVyIG9m
IGRlc3RydWN0b3JzLCBhcyB3ZWxsIGFzIHRoZQorICAgICAgICBmb3JnZXRET01Ob2RlLCBldGMg
QVBJcy4KKworICAgICAgICBXZSBjYW4gYWxzbyBkcm9wIHRoZSBKU0RlYnVnV3JhcHBlclNldCBh
cyBpdHMgb25seSBwdXJwb3NlIHdhcworICAgICAgICB0byBlbnN1cmUgdGhhdCB3ZSByZXRhaW5l
ZCBjb3JyZWN0IHNlbWFudGljcyBpbiB0aGUgb2xkIFdlYWtHQ01hcCwKKyAgICAgICAgYnV0IGhh
cHBpbGx5IHRoZXNlIHNlbWFudGljcyBhcmUgbm93IGd1YXJhbnRlZWQgYnkgdGhlIG1hcCBpdHNl
bGYuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNDYWNoZWRET01PYmplY3RXcmFwcGVyVW5j
aGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NT2JqZWN0V3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZCk6CisgICAgICAg
IChXZWJDb3JlOjpjYWNoZURPTU5vZGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzT2Jz
ZXJ2YWJsZVRocm91Z2hET00pOgorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU5vZGVzRm9yRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGFrZVdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OnVwZGF0ZURPTU5vZGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NT2Jq
ZWN0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NTm9kZVdyYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c3RyaW5nV3JhcHBlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1N0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NT2JqZWN0Ojp+RE9NT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Rl
YnVnV3JhcHBlclNldC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNEZWJ1
Z1dyYXBwZXJTZXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdCk6CisgICAg
ICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6flJ1bnRp
bWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSb290T2JqZWN0OjphZGRSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3Q6OnJlbW92ZVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRn
ZS9ydW50aW1lX3Jvb3QuaDoKKwogMjAxMS0wMi0yMyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMTg0ZDQyYzMwODliNWU5ZGZiMzJmNGI0NmI1M2ZjOWNjZTU3YmVhNS4uYTFhOTBk
ZTUyMmVlNjAxNmZjZTk2M2NlNDBjZDk4NDliMWEyZGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTc2Nyw4ICs3NjcsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGVidWdXcmFwcGVyU2V0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZWJ1Z1dyYXBwZXJTZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGRjNGQwNDBmNjNmNGE4ZDIwMTRlNDUwZjIwNDdmOTA4YTUzOTdiMTQuLmIxODFiZGJl
NjE2OGVhZDViOWQ2NzM5NjZmNzJlMDNkYTc3NzYzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYw
NSw4ICs2MDUsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291
cmNlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2Uu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZWJ1Z1dyYXBwZXJTZXQuY3Bw
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwppbmRleCAwNmI1NjJlZGEyZjNjMWI0YzM1NjgxMWJmMzcyNWVhNDk5Mzc1NmNi
Li44MGIwYzJiYzE1YmE1NmQ3ZGFlMTgyYjcyN2U4NDRkMjNhYWU4NmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtMjY0LDcgKzI2NCw2IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhR3Jp
ZENvbHVtbkxpc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhR3JpZERh
dGFTb3VyY2UuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAg
XAotICAgICAgICBiaW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5jcHAgXAogICAgICAgICBi
aW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBcCkBAIC0xMjYwLDcgKzEy
NTksNiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNEYXRhR3JpZERhdGFTb3VyY2UuaCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTRGVidWdXcmFw
cGVyU2V0LmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oIFwKICAgICAg
ICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA1OGUyMjExZmY2Mjg3ZjJhOWE5MjhmNmMwOGQyYTI1ZDEyM2JlZTc0Li5j
YTMxOTA0ZGZkODU0ODJjNmM5NWEyZjVhYjI2MzU3NTVlMDdhNjkzIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTc0NzcsNjIgKzU3NDc3LDYg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RlYnVnV3JhcHBlclNldC5jcHAiCi0J
CQkJCT4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
LQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9v
bAotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJ
CQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJ
Lz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0J
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgot
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTRGVidWdXcmFwcGVyU2V0LmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDU3NzUzNzY3ZjE2OWI3ZmFiZGYyNzdmMTg0NWIyMzA0ZWVhOWRlMjYuLjU4YTA5ZjI0MDMwYzk1
NjBkNjcxZmU4MTI5MWM5MTMwZDdhMmU5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4NzgsOCArNDg3OCw2IEBACiAJCUJD
NTNEQTQ4MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1M0RBNDcxMTQzMTM0RDAwMEQ4
MTdFIC8qIERPTVdyYXBwZXJXb3JsZC5jcHAgKi87IH07CiAJCUJDNTNEQTYwMTE0MzE0MUEwMDBE
ODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTNEQTVGMTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmpl
Y3RIYXNoVGFibGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzUzREE2MjExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NTNEQTYxMTE0MzE0QkQwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuY3BwICovOyB9
OwotCQlCQzUzREFDMjExNDMyRUVFMDAwRDgxN0UgLyogSlNEZWJ1Z1dyYXBwZXJTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTNEQUMxMTE0MzJF
RUUwMDBEODE3RSAvKiBKU0RlYnVnV3JhcHBlclNldC5oICovOyB9OwotCQlCQzUzREFDNTExNDMy
RkQ5MDAwRDgxN0UgLyogSlNEZWJ1Z1dyYXBwZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1M0RBQzQxMTQzMkZEOTAwMEQ4MTdFIC8qIEpT
RGVidWdXcmFwcGVyU2V0LmNwcCAqLzsgfTsKIAkJQkM1M0RBQzcxMTQzMzA2NDAwMEQ4MTdFIC8q
IEpTRE9NV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzUzREFDNjExNDMzMDY0MDAwRDgxN0UgLyogSlNET01XcmFwcGVyLmNwcCAqLzsg
fTsKIAkJQkM1NkNCMjExMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU2Q0Ix
QzEwRDVBQzgwMDBBNzdDNjQgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJ
QkM1NkNCMjIxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NkNCMUQxMEQ1QUM4
MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTE5NSw4ICsxMTE5Myw2IEBACiAJCUJD
NTNEQTQ3MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV3JhcHBlcldvcmxkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1M0RBNUYxMTQzMTQxQTAwMEQ4MTdFIC8qIERPTU9iamVj
dEhhc2hUYWJsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01PYmpl
Y3RIYXNoVGFibGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1M0RBNjEx
MTQzMTRCRDAwMEQ4MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01PYmplY3RIYXNoVGFibGVNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzUzREFDMTExNDMyRUVFMDAwRDgxN0UgLyogSlNE
ZWJ1Z1dyYXBwZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWJ1
Z1dyYXBwZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM1M0RBQzQxMTQz
MkZEOTAwMEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGVidWdXcmFwcGVyU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM1M0RBQzYxMTQzMzA2NDAwMEQ4MTdFIC8qIEpTRE9NV3JhcHBlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU2Q0IxQzEwRDVBQzgwMDBBNzdDNjQg
LyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDNTZDQjFEMTBENUFDODAwMEE3N0M2NCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRpb25Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzcwNyw4ICsxNzcwMyw2IEBA
CiAJCQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAq
LywKIAkJCQkxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgKi8sCiAJCQkJMUM4MUJBMDQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLywKLQkJCQlCQzUzREFDNDExNDMyRkQ5MDAwRDgxN0UgLyogSlNEZWJ1Z1dyYXBwZXJT
ZXQuY3BwICovLAotCQkJCUJDNTNEQUMxMTE0MzJFRUUwMDBEODE3RSAvKiBKU0RlYnVnV3JhcHBl
clNldC5oICovLAogCQkJCTkzQjcwRDQ3MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcu
Y3BwICovLAogCQkJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAq
LywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuY3Bw
ICovLApAQCAtMjEwMTQsNyArMjEwMDgsNiBAQAogCQkJCUJDNzdEMTZDMEZGMTlGNTYwMDcwODg3
QiAvKiBKU0RhdGFHcmlkQ29sdW1uTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQ0FFM0Qw
RkYxOTM5OTAwMDc2MkFFIC8qIEpTRGF0YUdyaWREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRTk3Q0U3MDEyOTNBRDZCMDBDNUM4RkYgLyogSlNEYXRhVmlldy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQkM1M0RBQzIxMTQzMkVFRTAwMEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVEMjEyQjAzRjk0MDAz
QTU4M0EgLyogSlNEZWxheU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRkIxQTY2MTIwQTVE
M0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIz
Nzc2LDcgKzIzNzY5LDYgQEAKIAkJCQlCQ0JDQUUzQzBGRjE5Mzk5MDAwNzYyQUUgLyogSlNEYXRh
R3JpZERhdGFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU5N0NFNkYxMjkzQUQ2QjAw
QzVDOEZGIC8qIEpTRGF0YVZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU5N0NDRjcxMjkz
QTQzQTAwQzVDOEZGIC8qIEpTRGF0YVZpZXdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QkM1M0RBQzUxMTQzMkZEOTAwMEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxNjJBNDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VE
IC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREExNUVEMTEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBm
ZmVhOTg1ZDkyNjc2MjZjNDc3M2E3MTAzNmQ4ZmM2NWQzN2ZmYTI1Li5jOGVjNGVjNmU4YmM0N2M2
MGUxYjhiNGJmZTAyODc1N2ZjNWY3NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Db3JlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3dDdXN0b20uaCIKLSNpbmNsdWRlICJKU0RlYnVnV3JhcHBlclNldC5oIgogI2luY2x1
ZGUgIkpTRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0V4Y2VwdGlvbkJhc2UuaCIKICNp
bmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKQEAgLTE0Miw3ICsxNDEsNyBAQCBjb25z
dCBKU0M6Okhhc2hUYWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0CiBib29sIGhhc0NhY2hlZERPTU9iamVjdFdyYXBwZXJVbmNoZWNr
ZWQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3RIYW5kbGUpCiB7CiAgICAg
Zm9yIChKU0dsb2JhbERhdGFXb3JsZEl0ZXJhdG9yIHdvcmxkSXRlcihnbG9iYWxEYXRhKTsgd29y
bGRJdGVyOyArK3dvcmxkSXRlcikgewotICAgICAgICBpZiAod29ybGRJdGVyLT5tX3dyYXBwZXJz
LnVuY2hlY2tlZEdldChvYmplY3RIYW5kbGUpKQorICAgICAgICBpZiAod29ybGRJdGVyLT5tX3dy
YXBwZXJzLmdldChvYmplY3RIYW5kbGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE2NCw4ICsxNjMsNyBAQCBET01PYmplY3QqIGdldENh
Y2hlZERPTU9iamVjdFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIG9iamVjdEhh
bmRsZSkKIAogdm9pZCBjYWNoZURPTU9iamVjdFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IHZvaWQqIG9iamVjdEhhbmRsZSwgRE9NT2JqZWN0KiB3cmFwcGVyKSAKIHsKLSAgICBKU0RlYnVn
V3JhcHBlclNldDo6d2lsbENhY2hlV3JhcHBlcih3cmFwcGVyKTsKLSAgICBkb21PYmplY3RXcmFw
cGVyTWFwRm9yKGV4ZWMpLnNldChvYmplY3RIYW5kbGUsIHdyYXBwZXIpOworICAgIGRvbU9iamVj
dFdyYXBwZXJNYXBGb3IoZXhlYykuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgb2JqZWN0SGFuZGxl
LCB3cmFwcGVyKTsKIH0KIAogYm9vbCBoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZChE
b2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCkBAIC0xNzUsNTkgKzE3MywxOCBAQCBib29s
IGhhc0NhY2hlZERPTU5vZGVXcmFwcGVyVW5jaGVja2VkKERvY3VtZW50KiBkb2N1bWVudCwgTm9k
ZSogbm9kZSkKIAogICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAgPSBkb2N1
bWVudC0+d3JhcHBlckNhY2hlTWFwKCk7CiAgICAgZm9yIChKU1dyYXBwZXJDYWNoZU1hcDo6aXRl
cmF0b3IgaXRlciA9IHdyYXBwZXJDYWNoZU1hcC5iZWdpbigpOyBpdGVyICE9IHdyYXBwZXJDYWNo
ZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT5zZWNvbmQtPnVuY2hlY2tl
ZEdldChub2RlKSkKKyAgICAgICAgaWYgKGl0ZXItPnNlY29uZC0+Z2V0KG5vZGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBm
b3JnZXRET01PYmplY3QoRE9NT2JqZWN0KiB3cmFwcGVyLCB2b2lkKiBvYmplY3RIYW5kbGUpCi17
Ci0gICAgSlNDOjpKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBIZWFwOjpoZWFwKHdyYXBwZXIp
LT5nbG9iYWxEYXRhKCk7Ci0KLSAgICAvLyBDaGVjayB0aGUgbm9ybWFsIHdvcmxkIGZpcnN0IQot
ICAgIEpTR2xvYmFsRGF0YTo6Q2xpZW50RGF0YSogY2xpZW50RGF0YSA9IGdsb2JhbERhdGEtPmNs
aWVudERhdGE7Ci0gICAgQVNTRVJUKGNsaWVudERhdGEpOwotICAgIERPTU9iamVjdFdyYXBwZXJN
YXAmIHdyYXBwZXJzID0gc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KGNsaWVudERh
dGEpLT5ub3JtYWxXb3JsZCgpLT5tX3dyYXBwZXJzOwotICAgIGlmICh3cmFwcGVycy51bmNoZWNr
ZWRSZW1vdmUob2JqZWN0SGFuZGxlLCB3cmFwcGVyKSkgewotICAgICAgICBKU0RlYnVnV3JhcHBl
clNldDo6ZGlkVW5jYWNoZVdyYXBwZXIod3JhcHBlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBXZSBjYW4ndCBndWFyYW50ZWUgdGhhdCBhIHdyYXBwZXIgaXMgaW4gdGhlIGNh
Y2hlIHdoZW4gaXQgdW5jYWNoZXMgaXRzZWxmLAotICAgIC8vIHNpbmNlIGEgbmV3IHdyYXBwZXIg
bWF5IGJlIGNhY2hlZCBiZWZvcmUgdGhlIG9sZCB3cmFwcGVyJ3MgZGVzdHJ1Y3RvciBydW5zLgot
ICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoZ2xvYmFsRGF0YSk7
IHdvcmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKHdvcmxkSXRlci0+bV93cmFw
cGVycy51bmNoZWNrZWRSZW1vdmUob2JqZWN0SGFuZGxlLCB3cmFwcGVyKSkKLSAgICAgICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBKU0RlYnVnV3JhcHBlclNldDo6ZGlkVW5jYWNoZVdyYXBwZXIo
d3JhcHBlcik7Ci19Ci0KLXZvaWQgZm9yZ2V0RE9NTm9kZShKU05vZGUqIHdyYXBwZXIsIE5vZGUq
IG5vZGUsIERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAg
ICAgIGZvcmdldERPTU9iamVjdCh3cmFwcGVyLCBub2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIFdlIGNhbid0IGd1YXJhbnRlZSB0aGF0IGEgd3JhcHBlciBpcyBpbiB0aGUg
Y2FjaGUgd2hlbiBpdCB1bmNhY2hlcyBpdHNlbGYsCi0gICAgLy8gc2luY2UgYSBuZXcgd3JhcHBl
ciBtYXkgYmUgY2FjaGVkIGJlZm9yZSB0aGUgb2xkIHdyYXBwZXIncyBkZXN0cnVjdG9yIHJ1bnMu
Ci0gICAgSlNXcmFwcGVyQ2FjaGVNYXAmIHdyYXBwZXJDYWNoZU1hcCA9IGRvY3VtZW50LT53cmFw
cGVyQ2FjaGVNYXAoKTsKLSAgICBmb3IgKEpTV3JhcHBlckNhY2hlTWFwOjppdGVyYXRvciB3cmFw
cGVyc0l0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsgd3JhcHBlcnNJdGVyICE9IHdyYXBw
ZXJDYWNoZU1hcC5lbmQoKTsgKyt3cmFwcGVyc0l0ZXIpIHsKLSAgICAgICAgaWYgKHdyYXBwZXJz
SXRlci0+c2Vjb25kLT51bmNoZWNrZWRSZW1vdmUobm9kZSwgd3JhcHBlcikpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgSlNEZWJ1Z1dyYXBwZXJTZXQ6OmRpZFVuY2FjaGVXcmFwcGVy
KHdyYXBwZXIpOwotfQotCiB2b2lkIGNhY2hlRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSwgSlNOb2RlKiB3cmFwcGVyKQog
ewotICAgIEpTRGVidWdXcmFwcGVyU2V0Ojp3aWxsQ2FjaGVXcmFwcGVyKHdyYXBwZXIpOwotCiAg
ICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgZG9tT2JqZWN0V3JhcHBlck1hcEZvcihleGVjKS5z
ZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgIGRvbU9iamVjdFdyYXBwZXJNYXBGb3IoZXhlYyku
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbm9kZSwgd3JhcHBlcik7CiAgICAgZWxzZQotICAgICAg
ICBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRXb3JsZChleGVjKSktPnNldChub2Rl
LCB3cmFwcGVyKTsKKyAgICAgICAgZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29y
bGQoZXhlYykpLT5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBub2RlLCB3cmFwcGVyKTsKIAogICAg
IGlmIChjdXJyZW50V29ybGQoZXhlYyktPmlzTm9ybWFsKCkpCiAgICAgICAgIG5vZGUtPnNldFdy
YXBwZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKTsKQEAgLTI2Miw3ICsyMTksNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlVGhyb3VnaERPTShKU05vZGUqIGpzTm9kZSwg
RE9NV3JhcHBlcldvcmxkKiB3b3JsZAogICAgICAgICAvLyBrZWVwIHRoZSBub2RlIHdyYXBwZXJz
IHByb3RlY3RpbmcgdGhlbSBhbGl2ZS4KICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUo
KSkgewogICAgICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihub2RlKS0+YXR0cmlidXRlTWFwKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gd29ybGQtPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KGF0
dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9IHdv
cmxkLT5tX3dyYXBwZXJzLmdldChhdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBjaGVjayBzZWVtcyBpbnN1ZmZpY2llbnQsIGJlY2F1c2UgTmFtZWROb2Rl
TWFwIGl0ZW1zIGNhbiBoYXZlIGN1c3RvbSBwcm9wZXJ0aWVzIHRoZW1zZWx2ZXMuCiAgICAgICAg
ICAgICAgICAgICAgIC8vIE1heWJlIGl0IHdvdWxkIGJlIE9LIHRvIGp1c3Qga2VlcCB0aGUgd3Jh
cHBlciBhbGl2ZSwgYXMgaXQgaXMgZG9uZSBmb3IgQ1NTT00gb2JqZWN0cyBiZWxvdy4KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHdyYXBwZXItPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKQEAgLTI3
MSwzMSArMjI4LDMxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGVUaHJvdWdoRE9N
KEpTTm9kZSoganNOb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nhc3Q8U3R5
bGVkRWxlbWVudCo+KG5vZGUpLT5pbmxpbmVTdHlsZURlY2woKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KHN0eWxlKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLmdldChzdHlsZSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5oYXNUYWdO
YW1lKGNhbnZhc1RhZykpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4obm9kZSktPnJl
bmRlcmluZ0NvbnRleHQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoRE9NT2JqZWN0KiB3
cmFwcGVyID0gd29ybGQtPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KGNvbnRleHQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZC0+bV93cmFwcGVy
cy5nZXQoY29udGV4dCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLT5o
YXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aGFzVGFnTmFtZShs
aW5rVGFnKSkgewogICAgICAgICAgICAgICAgIGlmIChTdHlsZVNoZWV0KiBzaGVldCA9IHN0YXRp
Y19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KG5vZGUpLT5zaGVldCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVycy51bmNoZWNrZWRHZXQoc2hlZXQpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMuZ2V0KHNoZWV0KSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5oYXNUYWdOYW1lKHN0
eWxlVGFnKSkgewogICAgICAgICAgICAgICAgIGlmIChTdHlsZVNoZWV0KiBzaGVldCA9IHN0YXRp
Y19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihub2RlKS0+c2hlZXQoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0KHNoZWV0KSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLmdldChzaGVldCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUpIHsKICAgICAgICAgICAgIGlmIChTdHlsZVNoZWV0KiBz
aGVldCA9IHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT5zaGVldCgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLnVuY2hlY2tlZEdldChz
aGVldCkpCisgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLmdldChzaGVldCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0zMzAsMTIgKzI4NywxNSBAQCB2b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KE1h
cmtTdGFjayYgbWFya1N0YWNrLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQgPSB3cmFwcGVyc0l0ZXItPmZpcnN0OwogICAgICAgICBKU1dyYXBwZXJD
YWNoZSogbm9kZURpY3QgPSB3cmFwcGVyc0l0ZXItPnNlY29uZDsKIAotICAgICAgICBKU1dyYXBw
ZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT51bmNoZWNrZWRFbmQoKTsKLSAg
ICAgICAgZm9yIChKU1dyYXBwZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUl0ID0gbm9kZURpY3QtPnVu
Y2hlY2tlZEJlZ2luKCk7IG5vZGVJdCAhPSBub2RlRW5kOyArK25vZGVJdCkgewotICAgICAgICAg
ICAgRGVwcmVjYXRlZFB0cjxKU05vZGU+JiBqc05vZGUgPSBub2RlSXQtPnNlY29uZDsKLSAgICAg
ICAgICAgIGlmIChpc09ic2VydmFibGVUaHJvdWdoRE9NKGpzTm9kZS5nZXQoKSwgd29ybGQpKQot
ICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmpzTm9kZSk7CisgICAgICAgIEpTV3Jh
cHBlckNhY2hlOjppdGVyYXRvciBub2RlRW5kID0gbm9kZURpY3QtPmVuZCgpOworICAgICAgICBp
bnQgbm9kZURpY3RTaXplID0gbm9kZURpY3QtPnNpemUoKTsKKyAgICAgICAgaW50IGNvdW50ID0g
MDsKKyAgICAgICAgZm9yIChKU1dyYXBwZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUl0ID0gbm9kZURp
Y3QtPmJlZ2luKCk7IG5vZGVJdCAhPSBub2RlRW5kOyArK25vZGVJdCkgeworICAgICAgICAgICAg
Y291bnQrKzsKKyAgICAgICAgICAgIGlmIChpc09ic2VydmFibGVUaHJvdWdoRE9NKG5vZGVJdC5n
ZXQoKS5zZWNvbmQsIHdvcmxkKSkKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRl
ZEFwcGVuZChub2RlSXQuZ2V0U2xvdCgpLnNlY29uZCk7CiAgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKGNvdW50ID09IG5vZGVEaWN0U2l6ZSk7CiAgICAgfQogfQogCkBAIC0zNzEsMTggKzMzMSwx
NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGFrZVdyYXBwZXJzKE5vZGUqIG5vZGUsIERvY3VtZW50
KiBkb2N1bWVudCwgV3JhcHBlclNldCYgd3JhcAogICAgIGlmIChkb2N1bWVudCkgewogICAgICAg
ICBKU1dyYXBwZXJDYWNoZU1hcCYgd3JhcHBlckNhY2hlTWFwID0gZG9jdW1lbnQtPndyYXBwZXJD
YWNoZU1hcCgpOwogICAgICAgICBmb3IgKEpTV3JhcHBlckNhY2hlTWFwOjppdGVyYXRvciBpdGVy
ID0gd3JhcHBlckNhY2hlTWFwLmJlZ2luKCk7IGl0ZXIgIT0gd3JhcHBlckNhY2hlTWFwLmVuZCgp
OyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChKU05vZGUqIHdyYXBwZXIgPSBpdGVyLT5zZWNv
bmQtPnRha2Uobm9kZSkpIHsKLSAgICAgICAgICAgICAgICBKU0RlYnVnV3JhcHBlclNldDo6ZGlk
VW5jYWNoZVdyYXBwZXIod3JhcHBlcik7CisgICAgICAgICAgICBpZiAoSlNOb2RlKiB3cmFwcGVy
ID0gaXRlci0+c2Vjb25kLT50YWtlKG5vZGUpKQogICAgICAgICAgICAgICAgIHdyYXBwZXJTZXQu
YXBwZW5kKFdyYXBwZXJBbmRXb3JsZCh3cmFwcGVyLCBpdGVyLT5maXJzdCkpOwotICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChKU0dsb2JhbERhdGFX
b3JsZEl0ZXJhdG9yIHdvcmxkSXRlcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCkp
OyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7CiAgICAgICAgICAgICBET01XcmFwcGVyV29ybGQq
IHdvcmxkID0gKndvcmxkSXRlcjsKLSAgICAgICAgICAgIGlmIChKU05vZGUqIHdyYXBwZXIgPSBz
dGF0aWNfY2FzdDxKU05vZGUqPih3b3JsZC0+bV93cmFwcGVycy50YWtlKG5vZGUpKSkgewotICAg
ICAgICAgICAgICAgIEpTRGVidWdXcmFwcGVyU2V0OjpkaWRVbmNhY2hlV3JhcHBlcih3cmFwcGVy
KTsKKyAgICAgICAgICAgIGlmIChKU05vZGUqIHdyYXBwZXIgPSBzdGF0aWNfY2FzdDxKU05vZGUq
Pih3b3JsZC0+bV93cmFwcGVycy50YWtlKG5vZGUpKSkKICAgICAgICAgICAgICAgICB3cmFwcGVy
U2V0LmFwcGVuZChXcmFwcGVyQW5kV29ybGQod3JhcHBlciwgd29ybGQpKTsKLSAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTM5NiwxMSArMzUyLDEwIEBAIHZvaWQgdXBkYXRl
RE9NTm9kZURvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1l
bnQqIG5ld0RvY3VtCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd3JhcHBlclNldC5z
aXplKCk7ICsraSkgewogICAgICAgICBKU05vZGUqIHdyYXBwZXIgPSB3cmFwcGVyU2V0W2ldLmZp
cnN0OwotICAgICAgICBKU0RlYnVnV3JhcHBlclNldDo6d2lsbENhY2hlV3JhcHBlcih3cmFwcGVy
KTsKICAgICAgICAgaWYgKG5ld0RvY3VtZW50KQotICAgICAgICAgICAgbmV3RG9jdW1lbnQtPmdl
dFdyYXBwZXJDYWNoZSh3cmFwcGVyU2V0W2ldLnNlY29uZCktPnNldChub2RlLCB3cmFwcGVyKTsK
KyAgICAgICAgICAgIG5ld0RvY3VtZW50LT5nZXRXcmFwcGVyQ2FjaGUod3JhcHBlclNldFtpXS5z
ZWNvbmQpLT5zZXQoKndyYXBwZXJTZXRbaV0uc2Vjb25kLT5nbG9iYWxEYXRhKCksIG5vZGUsIHdy
YXBwZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cmFwcGVyU2V0W2ldLnNlY29uZC0+
bV93cmFwcGVycy5zZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgICAgICB3cmFwcGVyU2V0W2ld
LnNlY29uZC0+bV93cmFwcGVycy5zZXQoKndyYXBwZXJTZXRbaV0uc2Vjb25kLT5nbG9iYWxEYXRh
KCksIG5vZGUsIHdyYXBwZXIpOwogICAgIH0KIH0KIApAQCAtNDEzLDggKzM2OCw4IEBAIHZvaWQg
bWFya0RPTU9iamVjdFdyYXBwZXIoTWFya1N0YWNrJiBtYXJrU3RhY2ssIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgdm9pZCoKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChKU0dsb2JhbERh
dGFXb3JsZEl0ZXJhdG9yIHdvcmxkSXRlcigmZ2xvYmFsRGF0YSk7IHdvcmxkSXRlcjsgKyt3b3Js
ZEl0ZXIpIHsKLSAgICAgICAgaWYgKERlcHJlY2F0ZWRQdHI8RE9NT2JqZWN0Piogd3JhcHBlclNs
b3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xvdChvYmplY3QpKQotICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh3cmFwcGVyU2xvdCk7CisgICAgICAgIGlmIChIYW5k
bGVTbG90IHdyYXBwZXJTbG90ID0gd29ybGRJdGVyLT5tX3dyYXBwZXJzLmdldFNsb3Qob2JqZWN0
KSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKHdyYXBwZXJTbG90KTsK
ICAgICB9CiB9CiAKQEAgLTQyMyw0OSArMzc4LDI4IEBAIHZvaWQgbWFya0RPTU5vZGVXcmFwcGVy
KE1hcmtTdGFjayYgbWFya1N0YWNrLCBEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCiAg
ICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVyQ2Fj
aGVNYXAgPSBkb2N1bWVudC0+d3JhcHBlckNhY2hlTWFwKCk7CiAgICAgICAgIGZvciAoSlNXcmFw
cGVyQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsgaXRl
ciAhPSB3cmFwcGVyQ2FjaGVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKERl
cHJlY2F0ZWRQdHI8SlNOb2RlPiogd3JhcHBlclNsb3QgPSBpdGVyLT5zZWNvbmQtPnVuY2hlY2tl
ZEdldFNsb3Qobm9kZSkpCi0gICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh3cmFwcGVy
U2xvdCk7CisgICAgICAgICAgICBpZiAoSGFuZGxlU2xvdCB3cmFwcGVyU2xvdCA9IGl0ZXItPnNl
Y29uZC0+Z2V0U2xvdChub2RlKSkKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRl
ZEFwcGVuZCh3cmFwcGVyU2xvdCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsgd29ybGRJdGVyOyArK3dvcmxkSXRlcikgewotICAg
ICAgICBpZiAoRGVwcmVjYXRlZFB0cjxET01PYmplY3Q+KiB3cmFwcGVyU2xvdCA9IHdvcmxkSXRl
ci0+bV93cmFwcGVycy51bmNoZWNrZWRHZXRTbG90KG5vZGUpKQotICAgICAgICAgICAgbWFya1N0
YWNrLmFwcGVuZCh3cmFwcGVyU2xvdCk7CisgICAgICAgIGlmIChIYW5kbGVTbG90IHdyYXBwZXJT
bG90ID0gd29ybGRJdGVyLT5tX3dyYXBwZXJzLmdldFNsb3Qobm9kZSkpCisgICAgICAgICAgICBt
YXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZCh3cmFwcGVyU2xvdCk7CiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBzdHJpbmdXcmFwcGVyRGVzdHJveWVkKEpTU3RyaW5nKiBzdHIsIHZvaWQqIGNvbnRl
eHQpCitzdGF0aWMgdm9pZCBzdHJpbmdXcmFwcGVyRGVzdHJveWVkKEpTU3RyaW5nKiwgdm9pZCog
Y29udGV4dCkKIHsKICAgICBTdHJpbmdJbXBsKiBjYWNoZUtleSA9IHN0YXRpY19jYXN0PFN0cmlu
Z0ltcGwqPihjb250ZXh0KTsKLSAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IEhl
YXA6OmhlYXAoc3RyKS0+Z2xvYmFsRGF0YSgpOwotCi0gICAgLy8gQ2hlY2sgdGhlIG5vcm1hbCB3
b3JsZCBmaXJzdCEKLSAgICBKU0dsb2JhbERhdGE6OkNsaWVudERhdGEqIGNsaWVudERhdGEgPSBn
bG9iYWxEYXRhLT5jbGllbnREYXRhOwotICAgIEFTU0VSVChjbGllbnREYXRhKTsKLSAgICBKU1N0
cmluZ0NhY2hlJiBjYWNoZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPihjbGll
bnREYXRhKS0+bm9ybWFsV29ybGQoKS0+bV9zdHJpbmdDYWNoZTsKLSAgICBpZiAoY2FjaGUudW5j
aGVja2VkUmVtb3ZlKGNhY2hlS2V5LCBzdHIpKSB7Ci0gICAgICAgIGNhY2hlS2V5LT5kZXJlZigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChKU0dsb2JhbERhdGFXb3JsZEl0
ZXJhdG9yIHdvcmxkSXRlcihnbG9iYWxEYXRhKTsgd29ybGRJdGVyOyArK3dvcmxkSXRlcikgewot
ICAgICAgICBpZiAod29ybGRJdGVyLT5tX3N0cmluZ0NhY2hlLnVuY2hlY2tlZFJlbW92ZShjYWNo
ZUtleSwgc3RyKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhY2hlS2V5LT5k
ZXJlZigpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBK
U1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNoZSwgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKIHsKLSAg
ICAvLyBJZiB0aGVyZSBpcyBhIHN0YWxlIGVudHJ5LCB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgcmVt
b3ZlIGl0IHRvIGF2b2lkCi0gICAgLy8gcHJvYmxlbXMgZG93biB0aGUgbGluZS4KLSAgICBpZiAo
SlNTdHJpbmcqIHdyYXBwZXIgPSBzdHJpbmdDYWNoZS51bmNoZWNrZWRHZXQoc3RyaW5nSW1wbCkp
Ci0gICAgICAgIHN0cmluZ0NhY2hlLnVuY2hlY2tlZFJlbW92ZShzdHJpbmdJbXBsLCB3cmFwcGVy
KTsKLQogICAgIEpTU3RyaW5nKiB3cmFwcGVyID0ganNTdHJpbmdXaXRoRmluYWxpemVyKGV4ZWMs
IFVTdHJpbmcoc3RyaW5nSW1wbCksIHN0cmluZ1dyYXBwZXJEZXN0cm95ZWQsIHN0cmluZ0ltcGwp
OwotICAgIHN0cmluZ0NhY2hlLnNldChzdHJpbmdJbXBsLCB3cmFwcGVyKTsKKyAgICBzdHJpbmdD
YWNoZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmdJbXBsLCB3cmFwcGVyKTsKICAgICAv
LyByZWYgZXhwbGljaXRseSBpbnN0ZWFkIG9mIHVzaW5nIGEgUmVmUHRyLWtleWVkIGhhc2h0YWJs
ZSBiZWNhdXNlIHRoZSB3cmFwcGVyIGNhbgogICAgIC8vIG91dGxpdmUgdGhlIGNhY2hlLCBzbyB0
aGUgc3RyaW5nSW1wbCBoYXMgdG8gbWF0Y2ggdGhlIHdyYXBwZXIncyBsaWZldGltZS4KICAgICBz
dHJpbmdJbXBsLT5yZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKaW5kZXggOWEyN2U2NjJhZTI2ZDc4OTc5Yzc5ZGEwMzQxZWFlNWEwMzM4Y2ZmNi4uNGZlM2Qx
NmMxZmNjMjhjN2M2NzQ4OWE4MWJjMWFiNTc4YTBmYTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTExNiw4ICsxMTYsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgRE9NT2JqZWN0KiBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKEpTQzo6RXhl
Y1N0YXRlKiwgdm9pZCogb2JqZWN0SGFuZGxlKTsKICAgICBib29sIGhhc0NhY2hlZERPTU9iamVj
dFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEqLCB2b2lkKiBvYmplY3RIYW5kbGUpOwogICAgIHZv
aWQgY2FjaGVET01PYmplY3RXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiwgdm9pZCogb2JqZWN0SGFu
ZGxlLCBET01PYmplY3QqIHdyYXBwZXIpOwotICAgIHZvaWQgZm9yZ2V0RE9NTm9kZShKU05vZGUq
IHdyYXBwZXIsIE5vZGUqIG5vZGUsIERvY3VtZW50KiBkb2N1bWVudCk7Ci0gICAgdm9pZCBmb3Jn
ZXRET01PYmplY3QoRE9NT2JqZWN0KiB3cmFwcGVyLCB2b2lkKiBvYmplY3RIYW5kbGUpOwogCiAg
ICAgSlNOb2RlKiBnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIERvY3Vt
ZW50KiwgTm9kZSopOwogICAgIHZvaWQgY2FjaGVET01Ob2RlV3JhcHBlcihKU0M6OkV4ZWNTdGF0
ZSosIERvY3VtZW50KiwgTm9kZSosIEpTTm9kZSogd3JhcHBlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAppbmRleCA5NTQ4ZjJmNzhlZjM1ZTY0YTRkMjc2
ODljZWRkZGJjMWE2NWY2MWZkLi43OTRmMDM5OWZhMjFmNWQ0NzA2NDcxYjAxZDMyYzA3NDI0NjQ5
ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXIuaCIKIAotI2luY2x1ZGUgIkpTRGVidWdXcmFwcGVyU2V0LmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtMzcsNyArMzYsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIERPTU9iamVjdDo6fkRPTU9iamVjdCgpCiB7Ci0gICAgQVNTRVJU
KCFKU0RlYnVnV3JhcHBlclNldDo6c2hhcmVkKCkuY29udGFpbnModGhpcykpOwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVidWdXcmFwcGVy
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVidWdXcmFwcGVyU2V0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBkNmNhOWExZmQ5YjY0MDE3YWQxMWJh
NzUzY2E0MjZlNDA1YjBjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkpTRGVidWdXcmFwcGVyU2V0LmgiCi0KLSNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0KLSNpZiBFTkFCTEUoV09SS0VSUykKLSNpbmNsdWRlIDx3dGYvVGhy
ZWFkU3BlY2lmaWMuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTRGVidWdX
cmFwcGVyU2V0JiBKU0RlYnVnV3JhcHBlclNldDo6c2hhcmVkKCkKLXsKLSNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdURjo6VGhyZWFkU3BlY2lmaWM8SlNEZWJ1
Z1dyYXBwZXJTZXQ+LCBzdGF0aWNXcmFwcGVyU2V0LCAoKSk7Ci0gICAgcmV0dXJuICpzdGF0aWNX
cmFwcGVyU2V0OwotI2Vsc2UKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTRGVidWdXcmFwcGVy
U2V0LCBzdGF0aWNXcmFwcGVyU2V0LCAoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY1dyYXBwZXJTZXQ7
Ci0jZW5kaWYKLX0KLQotSlNEZWJ1Z1dyYXBwZXJTZXQ6OkpTRGVidWdXcmFwcGVyU2V0KCkKLXsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWJ1Z1dyYXBwZXJTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGVidWdXcmFwcGVyU2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUx
MTM4ZWRhOGZiOWQ2YmQwZmUxNGVhMjUzYWNkZTA1ODVlNzY1OGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZWJ1Z1dyYXBwZXJTZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIEpTRGVidWdXcmFwcGVyU2V0X2gKLSNkZWZpbmUgSlNEZWJ1Z1dyYXBw
ZXJTZXRfaAotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBGb3IgZGVidWdnaW5nLCBrZWVwIGEgc2V0IG9mIHdyYXBwZXJzIGN1cnJlbnRseSBj
YWNoZWQsIGFuZCBjaGVjayB0aGF0Ci0vLyBhbGwgYXJlIHVuY2FjaGVkIGJlZm9yZSB0aGV5IGFy
ZSBkZXN0cm95ZWQuIFRoaXMgaGVscHMgdXMgY2F0Y2ggYnVncyBsaWtlOgotLy8gICAgIC0gd3Jh
cHBlcnMgYmVpbmcgZGVsZXRlZCB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUK
LS8vICAgICAtIHdyYXBwZXJzIGJlaW5nIGNhY2hlZCB0d2ljZQotCi1jbGFzcyBKU0RlYnVnV3Jh
cHBlclNldCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNEZWJ1Z1dyYXBwZXJTZXQpOwot
ICAgIGZyaWVuZCBjbGFzcyBXVEY6OlRocmVhZFNwZWNpZmljPEpTRGVidWdXcmFwcGVyU2V0PjsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgSlNEZWJ1Z1dyYXBwZXJTZXQmIHNoYXJlZCgpOwotCi0gICAg
dm9pZCBhZGQoRE9NT2JqZWN0KiBvYmplY3QpIHsgbV93cmFwcGVyU2V0LmFkZChvYmplY3QpOyB9
Ci0gICAgdm9pZCByZW1vdmUoRE9NT2JqZWN0KiBvYmplY3QpIHsgbV93cmFwcGVyU2V0LnJlbW92
ZShvYmplY3QpOyB9Ci0gICAgYm9vbCBjb250YWlucyhET01PYmplY3QqIG9iamVjdCkgY29uc3Qg
eyByZXR1cm4gbV93cmFwcGVyU2V0LmNvbnRhaW5zKG9iamVjdCk7IH0KLQotICAgIHN0YXRpYyB2
b2lkIHdpbGxDYWNoZVdyYXBwZXIoRE9NT2JqZWN0Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkVW5j
YWNoZVdyYXBwZXIoRE9NT2JqZWN0Kik7Ci0KLXByaXZhdGU6Ci0gICAgSlNEZWJ1Z1dyYXBwZXJT
ZXQoKTsKLQotICAgIEhhc2hTZXQ8RE9NT2JqZWN0Kj4gbV93cmFwcGVyU2V0OwotfTsKLQotI2lm
ZGVmIE5ERUJVRwotCi1pbmxpbmUgdm9pZCBKU0RlYnVnV3JhcHBlclNldDo6d2lsbENhY2hlV3Jh
cHBlcihET01PYmplY3QqKQotewotfQotCi1pbmxpbmUgdm9pZCBKU0RlYnVnV3JhcHBlclNldDo6
ZGlkVW5jYWNoZVdyYXBwZXIoRE9NT2JqZWN0KikKLXsKLX0KLQotI2Vsc2UKLQotaW5saW5lIHZv
aWQgSlNEZWJ1Z1dyYXBwZXJTZXQ6OndpbGxDYWNoZVdyYXBwZXIoRE9NT2JqZWN0KiB3cmFwcGVy
KQotewotICAgIEFTU0VSVCghSlNEZWJ1Z1dyYXBwZXJTZXQ6OnNoYXJlZCgpLmNvbnRhaW5zKHdy
YXBwZXIpKTsKLSAgICBKU0RlYnVnV3JhcHBlclNldDo6c2hhcmVkKCkuYWRkKHdyYXBwZXIpOwot
fQotCi1pbmxpbmUgdm9pZCBKU0RlYnVnV3JhcHBlclNldDo6ZGlkVW5jYWNoZVdyYXBwZXIoRE9N
T2JqZWN0KiB3cmFwcGVyKQotewotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIEFTU0VSVChKU0RlYnVnV3JhcHBlclNldDo6c2hhcmVkKCkuY29udGFpbnMod3JhcHBlcikp
OwotICAgIEpTRGVidWdXcmFwcGVyU2V0OjpzaGFyZWQoKS5yZW1vdmUod3JhcHBlcik7Ci19Ci0K
LSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBKU0RlYnVnV3Jh
cHBlclNldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IGQwYTVmMjVlNGU2MTM5ZmY4MDVmMjRlNDhlNTMyOGZjODAwYTk4
MjYuLjI0Y2YzYjhkNTYwMTE3NzIyMGZiMDg1NTI0ZGFlMzA2OWUwYWI4MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC02
ODksOSArNjg5LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgJGNsYXNzTmFtZShOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4s
IEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOwogICAgIH0K
IAotICAgICMgRGVzdHJ1Y3RvcgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVh
bCB+JGNsYXNzTmFtZSgpO1xuIikgaWYgKCEkaGFzUGFyZW50IG9yICRldmVudFRhcmdldCBvciAk
aW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iik7Ci0KICAgICAjIFByb3RvdHlwZQogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpIHVubGVzcyAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9
KTsKIApAQCAtMTQzMywyNiArMTQzMCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAotICAgICMgRGVzdHJ1Y3Rv
cgotICAgIGlmICghJGhhc1BhcmVudCB8fCAkZXZlbnRUYXJnZXQpIHsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06On4kY2xhc3NOYW1lKClcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotCi0gICAgICAgIGlmICgkZXZlbnRUYXJnZXQpIHsK
LSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgifSA9
IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkV4dGVuZHNET01HbG9iYWxPYmplY3QifSkgewotICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJOb2RlIikgewotICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBmb3JnZXRET01Ob2RlKHRoaXMsIGltcGwoKSwgaW1wbCgpLT5kb2N1bWVudCgpKTtc
biIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBmb3JnZXRET01PYmplY3QodGhpcywgaW1wbCgpKTtcbiIpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwot
ICAgIH0KLQogICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaylcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCmluZGV4IGE0ZjYzYzNjODU3OGFiODQyYzky
MjAxMDI5Zjg1ZGNhMWM4NGNlNDguLjljMGFkZmNlOTEwZjdiYTI2ZGZlMzJmZTcwMzIyM2FkNmYw
NmUwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKQEAgLTk2LDcg
Kzk2LDcgQEAgSlNPYmplY3QqIEluc3RhbmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIFJ1
bnRpbWVPYmplY3QqIG5ld09iamVjdCA9IG5ld1J1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgbV9y
dW50aW1lT2JqZWN0LnNldChleGVjLT5nbG9iYWxEYXRhKCksIG5ld09iamVjdCwgMCk7Ci0gICAg
bV9yb290T2JqZWN0LT5hZGRSdW50aW1lT2JqZWN0KG5ld09iamVjdCk7CisgICAgbV9yb290T2Jq
ZWN0LT5hZGRSdW50aW1lT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3T2JqZWN0KTsKICAg
ICByZXR1cm4gbmV3T2JqZWN0OwogfQogCkBAIC0xMDksMTIgKzEwOSw2IEBAIFJ1bnRpbWVPYmpl
Y3QqIEluc3RhbmNlOjpuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gbmV3IChleGVjKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lT2JqZWN0Pihl
eGVjKSwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OndpbGxEZXN0cm95UnVudGltZU9iamVj
dChSdW50aW1lT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgQVNTRVJUKG1fcm9vdE9iamVjdCk7Ci0g
ICAgbV9yb290T2JqZWN0LT5yZW1vdmVSdW50aW1lT2JqZWN0KG9iamVjdCk7Ci19Ci0KIHZvaWQg
SW5zdGFuY2U6OndpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpCiB7CiAgICAgbV9ydW50aW1l
T2JqZWN0LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0Jy
aWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBk
ZjgyNTk1M2QwODMwZDIwZjJjYTM5MDkyOTdkY2Q5MjM1ZjE2MTRlLi40ZGU2MDZmZDUwNWIyZDNl
YjU3MDRmMTk3YjcyM2QzYTQyNTg4OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKQEAgLTg4LDcgKzg4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ2xhc3MqIGdldENs
YXNzKCkgY29uc3QgPSAwOwogICAgIEpTT2JqZWN0KiBjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNT
dGF0ZSopOwogICAgIHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCk7Ci0gICAgdm9p
ZCB3aWxsRGVzdHJveVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCopOwogCiAgICAgLy8gUmV0
dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5LgogICAgIHZp
cnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCBmYjdhNTc5MzY1NTZlZDFiYmM1ZjI2ODhhYjMxZmI3
ZjQxZjI3ODUyLi5kZTE5NjRhNDRhZjJlNDg4YzAyM2MyN2M0YzA3NWQ3Y2NiNzhjZGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTQ3LDggKzQ3LDYgQEAg
UnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGEKIAogUnVudGltZU9iamVjdDo6flJ1bnRpbWVPYmplY3Qo
KQogewotICAgIGlmIChtX2luc3RhbmNlKQotICAgICAgICBtX2luc3RhbmNlLT53aWxsRGVzdHJv
eVJ1bnRpbWVPYmplY3QodGhpcyk7CiB9CiAKIHZvaWQgUnVudGltZU9iamVjdDo6aW52YWxpZGF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCmluZGV4IDcwMmJjMDlhMjNi
MWRiN2E5NmNhMzJjYjI5OGFjYmFkOGVmNDY5MTAuLjJjYjU2ODU5M2QzMzYzMmMyNmM5NDY1NjBh
YmFkMTk1ZGJiODdkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X3Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCkBA
IC0xMDEsMTAgKzEwMSw5IEBAIHZvaWQgUm9vdE9iamVjdDo6aW52YWxpZGF0ZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHsKLSAgICAgICAgV2Vha0dDTWFwPFJ1bnRpbWVPYmplY3QqLCBSdW50
aW1lT2JqZWN0Pjo6aXRlcmF0b3IgZW5kID0gbV9ydW50aW1lT2JqZWN0cy51bmNoZWNrZWRFbmQo
KTsKLSAgICAgICAgZm9yIChXZWFrR0NNYXA8UnVudGltZU9iamVjdCosIFJ1bnRpbWVPYmplY3Q+
OjppdGVyYXRvciBpdCA9IG1fcnVudGltZU9iamVjdHMudW5jaGVja2VkQmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAobV9ydW50aW1lT2JqZWN0cy5pc1ZhbGlkKGl0
KSkKLSAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIFdl
YWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD46Oml0ZXJhdG9yIGVuZCA9IG1f
cnVudGltZU9iamVjdHMuZW5kKCk7CisgICAgICAgIGZvciAoV2Vha0dDTWFwPFJ1bnRpbWVPYmpl
Y3QqLCBSdW50aW1lT2JqZWN0Pjo6aXRlcmF0b3IgaXQgPSBtX3J1bnRpbWVPYmplY3RzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaXQuZ2V0KCkuc2Vjb25kLT5pbnZh
bGlkYXRlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3J1bnRpbWVPYmplY3RzLmNsZWFyKCk7
CkBAIC0xNzUsMTIgKzE3NCwxMiBAQCB2b2lkIFJvb3RPYmplY3Q6OnVwZGF0ZUdsb2JhbE9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIG1fZ2xvYmFsT2JqZWN0LnNldChn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAotdm9pZCBSb290
T2JqZWN0OjphZGRSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVjdCkKK3ZvaWQgUm9v
dE9iamVjdDo6YWRkUnVudGltZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJ1bnRp
bWVPYmplY3QqIG9iamVjdCkKIHsKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKICAgICBBU1NFUlQo
IW1fcnVudGltZU9iamVjdHMuZ2V0KG9iamVjdCkpOwogCi0gICAgbV9ydW50aW1lT2JqZWN0cy5z
ZXQob2JqZWN0LCBvYmplY3QpOworICAgIG1fcnVudGltZU9iamVjdHMuc2V0KGdsb2JhbERhdGEs
IG9iamVjdCwgb2JqZWN0KTsKIH0KIAogdm9pZCBSb290T2JqZWN0OjpyZW1vdmVSdW50aW1lT2Jq
ZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVjdCkKQEAgLTE4OCw3ICsxODcsNyBAQCB2b2lkIFJvb3RP
YmplY3Q6OnJlbW92ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9ydW50aW1lT2Jq
ZWN0cy51bmNoZWNrZWRHZXQob2JqZWN0KSk7CisgICAgQVNTRVJUKG1fcnVudGltZU9iamVjdHMu
Z2V0KG9iamVjdCkpOwogCiAgICAgbV9ydW50aW1lT2JqZWN0cy50YWtlKG9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKaW5kZXggZmMwMWEwOWZkMTNlODI0YTllYWI4
NDY1M2U3NzkyNjVkMDYwYWRmMi4uZmVhZGU0NWNjZWVkY2IzZjBiYjg4ODQxMzU5MjE4MWZlYTQ3
NTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaApAQCAtNzEsNyArNzEsNyBA
QCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAg
IHZvaWQgdXBkYXRlR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICB2b2lkIGFk
ZFJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCopOworICAgIHZvaWQgYWRkUnVudGltZU9iamVj
dChKU0dsb2JhbERhdGEmLCBSdW50aW1lT2JqZWN0Kik7CiAgICAgdm9pZCByZW1vdmVSdW50aW1l
T2JqZWN0KFJ1bnRpbWVPYmplY3QqKTsKIAogICAgIHN0cnVjdCBJbnZhbGlkYXRpb25DYWxsYmFj
ayB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83702</attachid>
            <date>2011-02-24 12:37:03 -0800</date>
            <delta_ts>2011-02-24 12:51:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55100-20110224123702.patch</filename>
            <type>text/plain</type>
            <size>55889</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk2MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCmluZGV4IGVhYzJlMmNlODMw
MzU2NzM0NGEyNThjN2MzNGFmYjY2N2UxMDdjZDcuLmJjNWUzODMwMTRkNGE2MmIwZWFiMjRhOTI1
N2ViNDY5ZDRkZTZjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
ZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpT
V2Vha09iamVjdE1hcFNldChKU0NvbnRleHRSZWYgY3R4LCBKU1dlYWtPYmplY3RNYXBSZWYgbWFw
LCB2b2lkKiBrZXksIEpTTwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CiAgICAgQVNT
RVJUKG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2lu
Zm8pIHx8IG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0Pjo6c19pbmZvKSk7Ci0gICAgbWFwLT5tYXAoKS5zZXQoa2V5LCBvYmopOworICAgIG1h
cC0+bWFwKCkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBvYmopOwogfQogCiBKU09iamVj
dFJlZiBKU1dlYWtPYmplY3RNYXBHZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNXZWFrT2JqZWN0TWFw
UmVmIG1hcCwgdm9pZCoga2V5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTV2Vha09iamVjdE1h
cENsZWFyKEpTQ29udGV4dFJlZiBjdHgsIEpTV2Vha09iamVjdE1hcFJlZiBtYXAsIHZvaWQqIGtl
eSwgSgogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmogPSB0b0pTKG9iamVjdCk7Ci0gICAg
aWYgKG1hcC0+bWFwKCkudW5jaGVja2VkUmVtb3ZlKGtleSwgb2JqKSkKKyAgICBpZiAobWFwLT5t
YXAoKS5kZXByZWNhdGVkUmVtb3ZlKGtleSwgb2JqKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaAppbmRleCBkMzYxMTFjNWM0OTZiMGE4NmYwNDg4
ZDI1NGEwYzMyYzVmOWNmNjUyLi5iYjNmZTk2MzhkZDI1ZTNkNGQ3MzY2ZDEzMDBkMjc3YjYzMWQ5
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1h
cFJlZlByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVj
dE1hcFJlZlByaXZhdGUuaApAQCAtNTIsOCArNTIsNyBAQCB0eXBlZGVmIHZvaWQgKCpKU1dlYWtN
YXBEZXN0cm95ZWRDYWxsYmFjaykoSlNXZWFrT2JqZWN0TWFwUmVmIG1hcCwgdm9pZCogZGF0YSk7
CiAgQHBhcmFtIGRlc3RydWN0b3IgQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHdlYWsgbWFw
IGlzIGRlc3Ryb3llZC4KICBAcmVzdWx0IEEgSlNXZWFrT2JqZWN0TWFwUmVmIGJvdW5kIHRvIHRo
ZSBnaXZlbiBjb250ZXh0LCBkYXRhIGFuZCBkZXN0cnVjdG9yLgogIEBkaXNjdXNzaW9uIFRoZSBK
U1dlYWtPYmplY3RNYXBSZWYgY2FuIGJlIHVzZWQgYXMgYSBzdG9yYWdlIG1lY2hhbmlzbSB0byBo
b2xkIGN1c3RvbSBKUyBvYmplY3RzIHdpdGhvdXQgZm9yY2luZyB0aG9zZSBvYmplY3RzIHRvCi0g
cmVtYWluIGxpdmUgYXMgSlNWYWx1ZVByb3RlY3Qgd291bGQuICBBbnkgb2JqZWN0cyB0aGF0IGFy
ZSBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gYSB3ZWFrIG1hcCBtdXN0IGJlIHVzZXIgZGVmaW5l
ZCBvYmplY3RzIHRoYXQKLSByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIHRoZSBtYXAgaW4gdGhlaXIg
ZmluYWxpemVyLgorIHJlbWFpbiBsaXZlIGFzIEpTVmFsdWVQcm90ZWN0IHdvdWxkLgogICovCiBK
U19FWFBPUlQgSlNXZWFrT2JqZWN0TWFwUmVmIEpTV2Vha09iamVjdE1hcENyZWF0ZShKU0NvbnRl
eHRSZWYgY3R4LCB2b2lkKiBkYXRhLCBKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjayBkZXN0cnVj
dG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTU0ZDI5ZDRlOGU5MWUwOWU4MTE4
ZGU0YWI0ZGZlODM1ZWQ1ODdmOS4uMzRmZjE3ZjJjZmVlNjI2NjU1ZDQwNmM2MzUxODk5OWE3ODIz
ZjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDIt
MjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYWtHQ01hcCB1c2UgbmV3IGhhbmRs
ZSBpbmZyYXN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTUxMDAKKworICAgICAgICBSZW1vdmUgb2xkIFdlYWtHQ01hcCBpbXBsZW1lbnRh
dGlvbiBhbmQgbW92ZSBvdmVyIHRvIG5ldyBoYW5kbGUKKyAgICAgICAgYmFzZWQgbG9naWMuCisK
KyAgICAgICAgVGhpcyBoYXMgYSBudW1iZXIgb2YgYmVuZWZpdHMsIG1vc3Qgbm90YWJseSBpdCBt
YWtlcyBhIFdlYWtHQ01hcAorICAgICAgICBhbHdheXMgcmVmbGVjdCB0aGUgdHJ1ZSBzdGF0ZSBv
ZiB0aGUgd29ybGQgYnkgYXMgYWxsIGVudHJpZXMgYXJlCisgICAgICAgIHJlbW92ZWQgYXQgdGhl
IGZpcnN0IGdjIGN5Y2xlIHRoYXQgbWFrZXMgdGhlbSBkZWFkLiAgVGhpcyBhbGxvd3MKKyAgICAg
ICAgdXMgdG8gZ2V0IHJpZCBvZiBjb2RlIGluIGEgd2lkZSB2YXJpZXR5IG9mIG9iamVjdHMgd2hl
cmUgdGhlIG9ubHkKKyAgICAgICAgcHVycG9zZSB3YXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMgZnJv
bSBtYXBzLgorCisgICAgICAgIEl0IGFsc28gbWVhbnMgdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0
byBoYXZlIHNwZWNpYWwgInVuY2hlY2tlZCIKKyAgICAgICAgdmVyc2lvbnMgb2YgYW55IGZ1bmN0
aW9ucyBvbiBXZWFrR0NNYXAuICBBbGFzIGluIG9yZGVyIHRvIG1haW50YWluCisgICAgICAgIGNv
bXBhdGliaWxpdHkgd2l0aCB0aGUgSlNXZWFrT2JqZWN0TWFwQ2xlYXIgQVBJIGl0IGlzIHN0aWxs
CisgICAgICAgIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFwaSB0aGF0IHJlc2VtYmxlcyB1bmNoZWNr
ZWRSZW1vdmUsIHRoaXMgaXMKKyAgICAgICAgbm93IGRlcHJlY2F0ZWRSZW1vdmUgYW5kIHdpbGwg
YmUgZGVhbHQgd2l0aCBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIEluIG9yZGVyIHRvIGdl
dCBjb3JyZWN0IHNlbWFudGljcyBpbiBXZWFrR0NNYXAgd2UgbmVlZCBtb3JlCisgICAgICAgIGNv
bnRleHR1YWwgaW5mb3JtYXRpb24gaW4gdGhlIGZpbmFsaXplciwgc28gd2UndmUgYWRkZWQgYW4K
KyAgICAgICAgYWJzdHJhY3QgY2xhc3MgYmFzZWQgZmluYWxpc2VyIGFuZCBhIGNvbnRleHQgcGFy
YW1ldGVyIHRvIHRoZQorICAgICAgICBjYWxscy4KKworICAgICAgICBUaGUgbmV3IGFuIGltcHJv
dmVkIFdlYWtHQ01hcCBhbHNvIHJlc3VsdHMgaW4gc2lnaWZpY2FudGx5IG1vcmUKKyAgICAgICAg
Y2h1cm4gaW4gdGhlIHdlYWsgaGFuZGxlIGxpc3RzIHNvIGV4cG9zZWQgc29tZSBwb3RlbnRpYWwg
cHJvYmxlbXMKKyAgICAgICAgZHVyaW5nIHRoZSBwb3N0IG1hcmsgcGhhc2Ugd2hpY2ggaGF2ZSBi
ZWVuIHJlY3RpZmllZCBhcyB3ZWxsLgorCisgICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJl
ZlByaXZhdGUuY3BwOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmg6
CisgICAgICAgICogcnVudGltZS9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2xvYmFs
T2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RD
b3VudCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlND
OjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAg
ICAgICAoSlNDOjpXZWFrR0NNYXA6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChKU0M6
OldlYWtHQ01hcDo6aXRlcmF0b3I6OmdldCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6aXRl
cmF0b3I6OmdldFNsb3QpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6Oml0ZXJhdG9yOjpvcGVy
YXRvcisrKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6aXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoSlNDOjpXZWFrR0NNYXA6OldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6
aXNFbXB0eSk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6Y2xlYXIpOgorICAgICAgICAoSlND
OjpXZWFrR0NNYXA6OmdldCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6Z2V0U2xvdCk6Cisg
ICAgICAgIChKU0M6OldlYWtHQ01hcDo6c2V0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjp0
YWtlKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzaXplKToKKyAgICAgICAgKEpTQzo6V2Vh
a0dDTWFwOjpkZXByZWNhdGVkUmVtb3ZlKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpiZWdp
bik6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6ZW5kKToKKyAgICAgICAgKEpTQzo6V2Vha0dD
TWFwOjp+V2Vha0dDTWFwKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpmaW5hbGl6ZSk6Cisg
ICAgICAgICogcnVudGltZS9XZWFrR0NQdHIuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjpX
ZWFrR0NQdHIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OnNldCk6CisKIDIwMTEtMDItMjQg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBH
YXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAKaW5k
ZXggMDg1YWIxMzY2MDI2MmI3ZDNlYTczZjE1YjJiMGM0ZWZlZTlmNDcyNi4uODQ5ZGZjNmY3NmI1
OGJkNDQ2MzhjNzQxYTc5M2M5YjExOGU5YzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGVhcC5jcHAKQEAgLTQsNyArNCw3IEBACiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgIEZvdW5kYXRpb247IGVpdGhl
cgogICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCkBAIC0yNzIsMTggKzI3MiwxNyBAQCBzaXpl
X3QgSGVhcDo6Y2FwYWNpdHkoKSBjb25zdAogCiBzaXplX3QgSGVhcDo6Z2xvYmFsT2JqZWN0Q291
bnQoKQogewotICAgIHJldHVybiBtX2dsb2JhbERhdGEtPmdsb2JhbE9iamVjdHMudW5jaGVja2Vk
U2l6ZSgpOworICAgIHJldHVybiBtX2dsb2JhbERhdGEtPmdsb2JhbE9iamVjdENvdW50OwogfQog
CiBzaXplX3QgSGVhcDo6cHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKQogewotICAgIHNpemVf
dCBjb3VudCA9IDA7CisgICAgc2l6ZV90IGNvdW50ID0gbV9oYW5kbGVIZWFwLnByb3RlY3RlZEds
b2JhbE9iamVjdENvdW50KCk7CiAKLSAgICBHbG9iYWxPYmplY3RNYXAmIG1hcCA9IG1fZ2xvYmFs
RGF0YS0+Z2xvYmFsT2JqZWN0czsKLSAgICBHbG9iYWxPYmplY3RNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1hcC51bmNoZWNrZWRFbmQoKTsKLSAgICBmb3IgKEdsb2JhbE9iamVjdE1hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAudW5jaGVja2VkQmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlm
IChtYXAuaXNWYWxpZChpdCkgJiYgbV9wcm90ZWN0ZWRWYWx1ZXMuY29udGFpbnMoaXQtPnNlY29u
ZC5nZXQoKSkpCi0gICAgICAgICAgICArK2NvdW50OworICAgIFByb3RlY3RDb3VudFNldDo6aXRl
cmF0b3IgZW5kID0gbV9wcm90ZWN0ZWRWYWx1ZXMuZW5kKCk7CisgICAgZm9yIChQcm90ZWN0Q291
bnRTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9wcm90ZWN0ZWRWYWx1ZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+Zmlyc3QtPmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
aXQtPmZpcnN0KS0+aXNHbG9iYWxPYmplY3QoKSkKKyAgICAgICAgICAgIGNvdW50Kys7CiAgICAg
fQogCiAgICAgcmV0dXJuIGNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggMTQ1MjRjOGNmNzQ5MDYzMmNiMzJkNjJmNjI2MWUzN2Jk
MTE0ZjUwZS4uNWU1M2YyNzhmMzNhOGQzMGNmYmI0NGY5YWMwMTBiYTdkZmEzMTM4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xNDAs
NiArMTQwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xv
YmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWQKICAgICAsIHBhcnNlcihuZXcgUGFy
c2VyKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcykKKyAgICAsIGdsb2Jh
bE9iamVjdENvdW50KDApCiAgICAgLCBkeW5hbWljR2xvYmFsT2JqZWN0KDApCiAgICAgLCBmaXJz
dFN0cmluZ2lmaWVyVG9NYXJrKDApCiAgICAgLCBjYWNoZWRVVENPZmZzZXQoTmFOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCBkODIzMzgxMTNl
MGRjZTQ1NzhhZGNmMzJlMWMzYjIzZTY2ZjJmMjZjLi40ZjdjZmRjM2QxZTNiZmZmNjU4MGNhYTYx
NGZjY2Q5MTNhY2I0MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgog
I2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgotI2lu
Y2x1ZGUgIldlYWtHQ01hcC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKICNpbmNsdWRlIDx3
dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NzYsOCArNzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogICAg
IHN0cnVjdCBJbnN0cnVjdGlvbjsKIAotICAgIHR5cGVkZWYgV2Vha0dDTWFwPEpTR2xvYmFsT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3Q+IEdsb2JhbE9iamVjdE1hcDsgLy8gRklYTUU6IFdvdWxkIGJl
IG5pY2UgdG8gdXNlIGEgV2Vha0dDU2V0IGhlcmUuCi0KICAgICBzdHJ1Y3QgRFNUT2Zmc2V0Q2Fj
aGUgewogICAgICAgICBEU1RPZmZzZXRDYWNoZSgpCiAgICAgICAgIHsKQEAgLTIxNSw3ICsyMTIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBIYXNoTWFwPE9wYXF1ZUpTQ2xhc3MqLCBP
cGFxdWVKU0NsYXNzQ29udGV4dERhdGEqPiBvcGFxdWVKU0NsYXNzRGF0YTsKIAotICAgICAgICBH
bG9iYWxPYmplY3RNYXAgZ2xvYmFsT2JqZWN0czsKKyAgICAgICAgdW5zaWduZWQgZ2xvYmFsT2Jq
ZWN0Q291bnQ7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0Owog
CiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRP
YmplY3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDdmZjI5YTgzNmZmMTk3NjYwZDBkOGY0MWM4MDZkOWM5NDhlOWQ2MjguLjQ2
NGQwNWU5YTcyNDQwYjAwY2Y0ODliYmEzZmQ0ZTBkY2E4NmNhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwMiw4ICsxMDIs
NiBAQCBKU0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKICAgICAgICAgKCpwcm9maWxl
ciktPnN0b3BQcm9maWxpbmcoZ2xvYmFsRXhlYygpLCBVU3RyaW5nKCkpOwogICAgIH0KIAotICAg
IGQoKS0+Z2xvYmFsRGF0YS0+Z2xvYmFsT2JqZWN0cy50YWtlKHRoaXMpOwotCiAgICAgZCgpLT5k
ZXN0cnVjdG9yKGQoKSk7CiB9CiAKQEAgLTExNCw3ICsxMTIsNiBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpCiAgICAgc3RydWN0dXJlKCktPmRpc2FibGVT
cGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKTsKIAogICAgIGQoKS0+Z2xvYmFsRGF0YSA9IEhlYXA6
OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKTsKLSAgICBkKCktPmdsb2JhbERhdGEtPmdsb2JhbE9i
amVjdHMuc2V0KHRoaXMsIHRoaXMpOwogICAgIGQoKS0+Z2xvYmFsU2NvcGVDaGFpbiA9IFNjb3Bl
Q2hhaW4odGhpcywgZCgpLT5nbG9iYWxEYXRhLmdldCgpLCB0aGlzLCB0aGlzVmFsdWUpOwogCiAg
ICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKS0+aW5pdCgwLCAwLCBkKCktPmdsb2JhbFNj
b3BlQ2hhaW4ubm9kZSgpLCBDYWxsRnJhbWU6Om5vQ2FsbGVyKCksIDAsIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCA3YmY0NTAzMGJkZTY3MzMyMTc3
ODhkZmVkZDQzYmY2YjQyZDc3NWYyLi5hNDBlNjg0YWFjN2E5Y2Y3ZWYzNjFlODZmYjYxMzU3OGY2
NjgxNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAt
MjYsMTEwICsyNiwxMjcgQEAKICNpZm5kZWYgV2Vha0dDTWFwX2gKICNkZWZpbmUgV2Vha0dDTWFw
X2gKIAotI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIAotY2xhc3MgSlNDZWxsOwotCi0vLyBBIEhhc2hNYXAgd2hvc2UgZ2V0KCkgZnVuY3Rpb24g
cmV0dXJucyBlbXB0eVZhbHVlKCkgZm9yIGNlbGxzIGF3YWl0aW5nIGRlc3RydWN0aW9uLgotdGVt
cGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLWNsYXNzIFdlYWtH
Q01hcCB7CisvLyBBIEhhc2hNYXAgZm9yIEdDJ2QgdmFsdWVzIHRoYXQgcmVtb3ZlcyBlbnRyaWVz
IHdoZW4gdGhlIGFzc29jaWF0ZWQgdmFsdWUKKy8vIGRpZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBjbGFzcyBXZWFrR0NNYXAgOiBwcml2YXRlIEZp
bmFsaXplciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgLyoKLSAgICBJbnZh
cmlhbnRzOgotICAgICAgICAqIEEgdmFsdWUgZW50ZXJzIHRoZSBXZWFrR0NNYXAgbWFya2VkLiAo
R3VhcmFudGVlZCBieSBzZXQoKS4pCi0gICAgICAgICogQSB2YWx1ZSB0aGF0IGJlY29tZXMgdW5t
YXJrZWQgbGVhdmVzIHRoZSBXZWFrR0NNYXAgYmVmb3JlIGJlaW5nIHJlY3ljbGVkLiAoR3VhcmFu
dGVlZCBieSB0aGUgdmFsdWUncyBkZXN0cnVjdG9yIHJlbW92aW5nIGl0IGZyb20gdGhlIFdlYWtH
Q01hcC4pCi0gICAgICAgICogQSB2YWx1ZSB0aGF0IGJlY29tZXMgdW5tYXJrZWQgbGVhdmVzIHRo
ZSBXZWFrR0NNYXAgYmVmb3JlIGJlY29taW5nIG1hcmtlZCBhZ2Fpbi4gKEd1YXJhbnRlZWQgYnkg
YWxsIGRlc3RydWN0b3JzIHJ1bm5pbmcgYmVmb3JlIHRoZSBtYXJrIHBoYXNlIGJlZ2lucy4pCi0g
ICAgICAgICogRHVyaW5nIHRoZSBtYXJrIHBoYXNlLCBhbGwgdmFsdWVzIGluIHRoZSBXZWFrR0NN
YXAgYXJlIHZhbGlkLiAoR3VhcmFudGVlZCBieSBhbGwgZGVzdHJ1Y3RvcnMgcnVubmluZyBiZWZv
cmUgdGhlIG1hcmsgcGhhc2UgYmVnaW5zLikKLSAgICAqLworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYWtHQ01hcCk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xv
dD4gTWFwVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+
OjpFeHRlcm5hbFR5cGUgRXh0ZXJuYWxUeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFwVHlw
ZTo6aXRlcmF0b3IgbWFwX2l0ZXJhdG9yOwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlwZT4gPjo6aXRlcmF0b3Ig
aXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIERlcHJlY2F0
ZWRQdHI8TWFwcGVkVHlwZT4gPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICAg
CisKKyAgICBzdHJ1Y3QgaXRlcmF0b3IgeworICAgICAgICBpdGVyYXRvcihtYXBfaXRlcmF0b3Ig
aXRlcikKKyAgICAgICAgICAgIDogbV9pdGVyYXRvcihpdGVyKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHN0ZDo6cGFpcjxLZXlUeXBlLCBFeHRlcm5hbFR5cGU+IGdl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1faXRlcmF0b3ItPmZpcnN0LCBIYW5k
bGVUeXBlczxNYXBwZWRUeXBlPjo6Z2V0RnJvbVNsb3QobV9pdGVyYXRvci0+c2Vjb25kKSk7IH0K
KyAgICAgICAgc3RkOjpwYWlyPEtleVR5cGUsIEhhbmRsZVNsb3Q+IGdldFNsb3QoKSBjb25zdCB7
IHJldHVybiAqbV9pdGVyYXRvcjsgfQorICAgICAgICAKKyAgICAgICAgaXRlcmF0b3ImIG9wZXJh
dG9yKysoKSB7ICsrbV9pdGVyYXRvcjsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIAorICAgICAg
ICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAorICAgICAgICAKKyAgICAgICAg
Ly8gQ29tcGFyaXNvbi4KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9PSBvdGhlci5tX2l0ZXJhdG9yOyB9Cisg
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3IgIT0gb3RoZXIubV9pdGVyYXRvcjsgfQorICAgICAgICAKKyAgICBwcml2
YXRlOgorICAgICAgICAgICAgbWFwX2l0ZXJhdG9yIG1faXRlcmF0b3I7CisgICAgfTsKKworICAg
IFdlYWtHQ01hcCgpCisgICAgeworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJu
IG1fbWFwLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0K
KyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1hcF9pdGVyYXRvciBlbmQgPSBtX21h
cC5lbmQoKTsKKyAgICAgICAgZm9yIChtYXBfaXRlcmF0b3IgcHRyID0gbV9tYXAuYmVnaW4oKTsg
cHRyICE9IGVuZDsgKytwdHIpCisgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHB0ci0+
c2Vjb25kKS0+ZGVhbGxvY2F0ZShwdHItPnNlY29uZCk7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7
CisgICAgfQogCi0gICAgTWFwcGVkVHlwZSogZ2V0KGNvbnN0IEtleVR5cGUmKSBjb25zdDsKLSAg
ICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFR5cGUqKTsg
Ci0gICAgTWFwcGVkVHlwZSogdGFrZShjb25zdCBLZXlUeXBlJik7CisgICAgRXh0ZXJuYWxUeXBl
IGdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSGFu
ZGxlVHlwZXM8TWFwcGVkVHlwZT46OmdldEZyb21TbG90KG1fbWFwLmdldChrZXkpKTsKKyAgICB9
CiAKLSAgICAvLyBUaGVzZSB1bmNoZWNrZWQgZnVuY3Rpb25zIHByb3ZpZGUgYWNjZXNzIHRvIGEg
dmFsdWUgZXZlbiBpZiB0aGUgdmFsdWUncwotICAgIC8vIG1hcmsgYml0IGlzIG5vdCBzZXQuIFRo
aXMgaXMgdXNlZCwgYW1vbmcgb3RoZXIgdGhpbmdzLCB0byByZXRyaWV2ZSB2YWx1ZXMKLSAgICAv
LyBkdXJpbmcgdGhlIEdDIG1hcmsgcGhhc2UsIHdoaWNoIGJlZ2lucyBieSBjbGVhcmluZyBhbGwg
bWFyayBiaXRzLgotICAgIAotICAgIHNpemVfdCB1bmNoZWNrZWRTaXplKCkgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpOyB9CisgICAgSGFuZGxlU2xvdCBnZXRTbG90KGNvbnN0IEtleVR5cGUmIGtleSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKKyAgICB9CiAKLSAg
ICBNYXBwZWRUeXBlKiB1bmNoZWNrZWRHZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJl
dHVybiBtX21hcC5nZXQoa2V5KS5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRQdHI8TWFwcGVkVHlw
ZT4qIHVuY2hlY2tlZEdldFNsb3QoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIHZvaWQgc2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUg
dmFsdWUpCiAgICAgewotICAgICAgICBpdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwot
ICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICByZXR1cm4gJml0ZXItPnNlY29uZDsKKyAgICAgICAgcGFpcjx0eXBlbmFtZSBNYXBU
eXBlOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fbWFwLmFkZChrZXksIDApOworICAgICAgICBI
YW5kbGVTbG90IHNsb3QgPSBpdGVyLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIGlmIChpdGVyLnNl
Y29uZCkgeworICAgICAgICAgICAgc2xvdCA9IGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5k
bGUoKTsKKyAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7CisgICAgICAgICAg
ICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBrZXkpOwor
ICAgICAgICB9CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmll
cihzbG90LCB2YWx1ZSk7CisgICAgICAgICpzbG90ID0gdmFsdWU7CiAgICAgfQotICAgIGJvb2wg
dW5jaGVja2VkUmVtb3ZlKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRUeXBlKik7CiAKLSAgICBpdGVy
YXRvciB1bmNoZWNrZWRCZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KLSAgICBpdGVy
YXRvciB1bmNoZWNrZWRFbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQorICAgIEV4dGVybmFs
VHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkKKyAgICB7CisgICAgICAgIEhhbmRsZVNsb3Qg
c2xvdCA9IG1fbWFwLnRha2Uoa2V5KTsKKyAgICAgICAgaWYgKCFzbG90KQorICAgICAgICAgICAg
cmV0dXJuIEhhc2hUcmFpdHM8RXh0ZXJuYWxUeXBlPjo6ZW1wdHlWYWx1ZSgpOworICAgICAgICBF
eHRlcm5hbFR5cGUgcmVzdWx0ID0gSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OmdldEZyb21TbG90
KHNsb3QpOworICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNs
b3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAotICAgIGNvbnN0X2l0ZXJhdG9y
IHVuY2hlY2tlZEJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGNv
bnN0X2l0ZXJhdG9yIHVuY2hlY2tlZEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9
CisgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KIAotICAgIGJvb2wg
aXNWYWxpZChpdGVyYXRvciBpdCkgY29uc3QgeyByZXR1cm4gSGVhcDo6aXNNYXJrZWQoaXQtPnNl
Y29uZC5nZXQoKSk7IH0KLSAgICBib29sIGlzVmFsaWQoY29uc3RfaXRlcmF0b3IgaXQpIGNvbnN0
IHsgcmV0dXJuIEhlYXA6OmlzTWFya2VkKGl0LT5zZWNvbmQuZ2V0KCkpOyB9CisgICAgYm9vbCBk
ZXByZWNhdGVkUmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgLy8gVGhpcyBvbmx5IGV4aXN0cyBpbiBvcmRlciB0byBhbGxvdyBzb21l
IHNlbWJsYW5jZSBvZiBjb3JyZWN0bmVzcyB0bworICAgICAgICAvLyB0aGUgSlNXZWFrT2JqZWN0
TWFwQ2xlYXIgQVBJCisgICAgICAgIHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yIGl0ZXIgPSBt
X21hcC5maW5kKGtleSk7CisgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBpdGVyLT5zZWNv
bmQ7CisgICAgICAgIEV4dGVybmFsVHlwZSBpbm1hcCA9IEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+
OjpnZXRGcm9tU2xvdChzbG90KTsKKyAgICAgICAgaWYgKGlubWFwICYmIGlubWFwICE9IHZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX21hcC5yZW1vdmUoaXRlcik7
CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgCisgICAgfQogCisgICAgaXRlcmF0b3IgYmVnaW4o
KSB7IHJldHVybiBpdGVyYXRvcihtX21hcC5iZWdpbigpKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgp
IHsgcmV0dXJuIGl0ZXJhdG9yKG1fbWFwLmVuZCgpKTsgfQorICAgIAorICAgIH5XZWFrR0NNYXAo
KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICB9CisgICAgCiBwcml2YXRlOgotICAgIEhh
c2hNYXA8S2V5VHlwZSwgRGVwcmVjYXRlZFB0cjxNYXBwZWRUeXBlPiA+IG1fbWFwOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLWlubGluZSBN
YXBwZWRUeXBlKiBXZWFrR0NNYXA8S2V5VHlwZSwgTWFwcGVkVHlwZT46OmdldChjb25zdCBLZXlU
eXBlJiBrZXkpIGNvbnN0Ci17Ci0gICAgTWFwcGVkVHlwZSogcmVzdWx0ID0gbV9tYXAuZ2V0KGtl
eSkuZ2V0KCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBIYXNoVHJhaXRzPE1hcHBlZFR5cGUqPjo6ZW1w
dHlWYWx1ZSgpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIGlmICghSGVhcDo6aXNNYXJr
ZWQocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIEhhc2hUcmFpdHM8TWFwcGVkVHlwZSo+OjplbXB0
eVZhbHVlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLU1hcHBlZFR5cGUqIFdlYWtHQ01hcDxLZXlUeXBl
LCBNYXBwZWRUeXBlPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpCi17Ci0gICAgTWFwcGVkVHlw
ZSogcmVzdWx0ID0gbV9tYXAudGFrZShrZXkpLmdldCgpOwotICAgIGlmIChyZXN1bHQgPT0gSGFz
aFRyYWl0czxNYXBwZWRUeXBlKj46OmVtcHR5VmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBIYXNo
VHJhaXRzPE1hcHBlZFR5cGUqPjo6ZW1wdHlWYWx1ZSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+Ci1wYWly
PHR5cGVuYW1lIFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6aXRlcmF0b3IsIGJvb2w+
IFdlYWtHQ01hcDxLZXlUeXBlLCBNYXBwZWRUeXBlPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwg
TWFwcGVkVHlwZSogdmFsdWUpCi17Ci0gICAgSGVhcDo6c2V0TWFya2VkKHZhbHVlKTsgLy8gSWYg
dmFsdWUgaXMgbmV3bHkgYWxsb2NhdGVkLCBpdCdzIG5vdCBtYXJrZWQsIHNvIG1hcmsgaXQgbm93
LgotICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVl
KTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsgLy8gcHJlLWV4aXN0aW5nIGVudHJ5Ci0gICAg
ICAgIHJlc3VsdC5zZWNvbmQgPSAhSGVhcDo6aXNNYXJrZWQocmVzdWx0LmZpcnN0LT5zZWNvbmQu
Z2V0KCkpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOworICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGtleSkKKyAgICB7CisgICAg
ICAgIEhhbmRsZVNsb3Qgc2xvdCA9IG1fbWFwLnRha2Uoc3RhdGljX2Nhc3Q8S2V5VHlwZT4oa2V5
KSk7CisgICAgICAgIEFTU0VSVChzbG90KTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihz
bG90KS0+ZGVhbGxvY2F0ZShzbG90KTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4KLWJvb2wgV2Vh
a0dDTWFwPEtleVR5cGUsIE1hcHBlZFR5cGU+Ojp1bmNoZWNrZWRSZW1vdmUoY29uc3QgS2V5VHlw
ZSYga2V5LCBNYXBwZWRUeXBlKiB2YWx1ZSkKLXsKLSAgICBpdGVyYXRvciBpdCA9IG1fbWFwLmZp
bmQoa2V5KTsKLSAgICBpZiAoaXQgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoaXQtPnNlY29uZC5nZXQoKSAhPSB2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIG1fbWFwLnJlbW92ZShpdCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisKKyAgICBN
YXBUeXBlIG1fbWFwOworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggOWMxNmM3YmY0OWE2MzRkMzkyN2FjOTI2YmI1MzNlMzc0NzgwOWYyMC4uMzUwMGRk
YWYxNzY0MzYwY2JkZjgxOTM3ZmYwMDcyZWZjMjEzZmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTQ5Niw3ICs0OTYsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUdyaWRDb2x1bW5MaXN0Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcAotICAgIGJp
bmRpbmdzL2pzL0pTRGVidWdXcmFwcGVyU2V0LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlv
bkV2ZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVu
dEN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYjIzYWRmMWM4NmEyYjZjNmM2MGZjYzY3MGVlMjk3
NzczNjZlMWNmLi43MzdjODhlYTc4NDIwYmJiZmMwMmI2ZTU0NDE5YzliNWEwOWY5ZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDItMjMgIE9saXZlciBIdW50ICA8b2xpdmVy
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIFdlYWtHQ01hcCB1c2UgbmV3IGhhbmRsZSBpbmZyYXN0cnVjdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMDAKKworICAgICAg
ICBVcGRhdGUgdG8gbmV3IFdlYWtHQ01hcCBBUElzLCB0aGlzIHJlcXVpcmVzIHRocmVhZGluZyBn
bG9iYWwKKyAgICAgICAgZGF0YSB0byBhIGZldyBmdW5jdGlvbnMgdGhhdCBkaWQgbm90IG5lZWQg
aXQgaW4gdGhlIHBhc3QsIGJ1dAorICAgICAgICBhbHNvIGdldHMgcmlkIG9mIGEgbGFyZ2UgbnVt
YmVyIG9mIGRlc3RydWN0b3JzLCBhcyB3ZWxsIGFzIHRoZQorICAgICAgICBmb3JnZXRET01Ob2Rl
LCBldGMgQVBJcy4KKworICAgICAgICBXZSBjYW4gYWxzbyBkcm9wIHRoZSBKU0RlYnVnV3JhcHBl
clNldCBhcyBpdHMgb25seSBwdXJwb3NlIHdhcworICAgICAgICB0byBlbnN1cmUgdGhhdCB3ZSBy
ZXRhaW5lZCBjb3JyZWN0IHNlbWFudGljcyBpbiB0aGUgb2xkIFdlYWtHQ01hcCwKKyAgICAgICAg
YnV0IGhhcHBpbGx5IHRoZXNlIHNlbWFudGljcyBhcmUgbm93IGd1YXJhbnRlZWQgYnkgdGhlIG1h
cCBpdHNlbGYuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNDYWNoZWRET01PYmplY3RXcmFw
cGVyVW5jaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NT2JqZWN0V3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWNoZURPTU5vZGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzT2JzZXJ2YWJsZVRocm91Z2hET00pOgorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU5vZGVz
Rm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGFrZVdyYXBwZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZURPTU5vZGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjptYXJr
RE9NT2JqZWN0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NTm9kZVdyYXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nV3JhcHBlckRlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1N0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NT2JqZWN0Ojp+RE9NT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RlYnVnV3JhcHBlclNldC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNEZWJ1Z1dyYXBwZXJTZXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHA6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdCk6
CisgICAgICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6
flJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSb290T2JqZWN0OjphZGRSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6OnJlbW92ZVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKwogMjAxMS0wMi0yNCAgTWlzaGEgVHl1dHl1bmlrICA8
bWljaGFlbC50eXV0eXVuaWtAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDVkZWY2NWY2YWJjNzExZTQ3NTFiYzcw
OWQzNDZlMDgyNDdlNjRlOWYuLjczYmM0YzAxZTJmMzcwOWI4ZTJmNjNmODA5MzJhNDIyYjcxMTJj
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03NjcsOCArNzY3LDYgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJj
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVidWdXcmFwcGVyU2V0LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzZWQzZTZmZjQ0MzZkYmIxYjM1NDQzMjQ1
Y2VhNzExNzUwZTFkMjgzLi4wOTRiOGE3OTRlZDVlMjZkNDU2MGFkZWUyMmM2MTY2MTA5MDZkOGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MDUsOCArNjA1LDYgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRGVidWdXcmFwcGVyU2V0LmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMvSlNE
ZWJ1Z1dyYXBwZXJTZXQuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGly
ZWN0b3J5RW50cnlDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMDZiNTYyZWRhMmYzYzFi
NGMzNTY4MTFiZjM3MjVlYTQ5OTM3NTZjYi4uODBiMGMyYmMxNWJhNTZkN2RhZTE4MmI3MjdlODQ0
ZDIzYWFlODZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI2NCw3ICsyNjQsNiBAQCB2OCB7CiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTRGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNEZWJ1Z1dy
YXBwZXJTZXQuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9u
c0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAgXApAQCAtMTI2MCw3ICsxMjU5LDYgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIu
aCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmggXAotICAgICAg
ICBiaW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5oIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNFcnJvckhhbmRsZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5o
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNThlMjIxMWZmNjI4N2YyYTlh
OTI4ZjZjMDhkMmEyNWQxMjNiZWU3NC4uY2EzMTkwNGRmZDg1NDgyYzZjOTVhMmY1YWIyNjM1NzU1
ZTA3YTY5MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTU3NDc3LDYyICs1NzQ3Nyw2IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNEZWJ1Z1dyYXBwZXJTZXQuY3BwIgotCQkJCQk+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgot
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
LQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
CQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxU
b29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVi
dWdfQWxsfFdpbjMyIgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0J
CQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5h
bWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgot
CQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJ
CQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUK
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RlYnVnV3JhcHBlclNldC5oIgot
CQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlY2EyMTBkMzc1NWEyMTEzYWM5NWE0YzIxNmQ3OTQy
MjhlNDcwYjljLi5mOTllNzNlMDdiY2FhOWY5MTY1NWY5NzY4NmMxMGEzYmU2YWUxMDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00ODgwLDggKzQ4ODAsNiBAQAogCQlCQzUzREE0ODExNDMxMzREMDAwRDgxN0UgLyogRE9NV3Jh
cHBlcldvcmxkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNTNEQTQ3MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3BwICovOyB9
OwogCQlCQzUzREE2MDExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUzREE1RjEx
NDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM1M0RBNjIxMTQzMTRCRDAwMEQ4
MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUzREE2MTExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmNwcCAqLzsgfTsKLQkJQkM1M0RBQzIxMTQzMkVFRTAwMEQ4MTdFIC8q
IEpTRGVidWdXcmFwcGVyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzUzREFDMTExNDMyRUVFMDAwRDgxN0UgLyogSlNEZWJ1Z1dyYXBwZXJTZXQu
aCAqLzsgfTsKLQkJQkM1M0RBQzUxMTQzMkZEOTAwMEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTNE
QUM0MTE0MzJGRDkwMDBEODE3RSAvKiBKU0RlYnVnV3JhcHBlclNldC5jcHAgKi87IH07CiAJCUJD
NTNEQUM3MTE0MzMwNjQwMDBEODE3RSAvKiBKU0RPTVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1M0RBQzYxMTQzMzA2NDAwMEQ4MTdF
IC8qIEpTRE9NV3JhcHBlci5jcHAgKi87IH07CiAJCUJDNTZDQjIxMTBENUFDODAwMEE3N0M2NCAv
KiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM1NkNCMUMxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCUJDNTZDQjIyMTBENUFDODAwMEE3N0M2NCAvKiBHZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNTZDQjFEMTBENUFDODAwMEE3N0M2NCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTExOTksOCArMTExOTcsNiBAQAogCQlCQzUzREE0NzExNDMxMzREMDAwRDgxN0UgLyogRE9NV3Jh
cHBlcldvcmxkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdy
YXBwZXJXb3JsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTNEQTVGMTE0
MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDNTNEQTYxMTE0MzE0QkQwMDBEODE3RSAvKiBET01PYmplY3RIYXNo
VGFibGVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM1M0RB
QzExMTQzMkVFRTAwMEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVidWdXcmFwcGVyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDNTNEQUM0MTE0MzJGRDkwMDBEODE3RSAvKiBKU0RlYnVnV3JhcHBlclNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RlYnVnV3JhcHBl
clNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTNEQUM2MTE0MzMwNjQw
MDBEODE3RSAvKiBKU0RPTVdyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM1NkNCMUMxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzU2Q0IxRDEwRDVBQzgwMDBBNzdD
NjQgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdlb2xvY2F0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTc3MTEsOCArMTc3MDcsNiBAQAogCQkJCUM1ODVBNjYxMTFENEZBQzUwMDRDM0U0QiAv
KiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCiAJCQkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovLAogCQkJCTFDODFCQTA0MEU5NzM0ODMwMDI2
NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8sCi0JCQkJQkM1M0RBQzQxMTQzMkZEOTAw
MEQ4MTdFIC8qIEpTRGVidWdXcmFwcGVyU2V0LmNwcCAqLywKLQkJCQlCQzUzREFDMTExNDMyRUVF
MDAwRDgxN0UgLyogSlNEZWJ1Z1dyYXBwZXJTZXQuaCAqLywKIAkJCQk5M0I3MEQ0NzA5RUIwQzdD
MDA5RDg0NjggLyogSlNET01CaW5kaW5nLmNwcCAqLywKIAkJCQk5M0I3MEQ0ODA5RUIwQzdDMDA5
RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8sCiAJCQkJRTFDMzZDQkMwRUIwODA2MjAwNzQxMEJD
IC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAqLywKQEAgLTIxMDIwLDcgKzIxMDE0LDYgQEAKIAkJ
CQlCQzc3RDE2QzBGRjE5RjU2MDA3MDg4N0IgLyogSlNEYXRhR3JpZENvbHVtbkxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQkNBRTNEMEZGMTkzOTkwMDA3NjJBRSAvKiBKU0RhdGFHcmlkRGF0
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU5N0NFNzAxMjkzQUQ2QjAwQzVDOEZGIC8q
IEpTRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDNTNEQUMyMTE0MzJFRUUwMDBEODE3
RSAvKiBKU0RlYnVnV3JhcHBlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2MkE0NTgxMDEx
NDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkRBMTVFRDIxMkIwM0Y5NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMUZCMUE2NjEyMEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzc4Myw3ICsyMzc3Niw2IEBACiAJCQkJQkNCQ0FFM0Mw
RkYxOTM5OTAwMDc2MkFFIC8qIEpTRGF0YUdyaWREYXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJFOTdDRTZGMTI5M0FENkIwMEM1QzhGRiAvKiBKU0RhdGFWaWV3LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJFOTdDQ0Y3MTI5M0E0M0EwMEM1QzhGRiAvKiBKU0RhdGFWaWV3Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNTNEQUM1MTE0MzJGRDkwMDBEODE3RSAvKiBKU0Rl
YnVnV3JhcHBlclNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTYyQTQ1NzEwMTE0NjQ3MDBE
RkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFRDExMkIwM0Y5NDAwM0E1ODNBIC8qIEpT
RGVsYXlOb2RlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKaW5kZXggZmZlYTk4NWQ5MjY3NjI2YzQ3NzNhNzEwMzZkOGZjNjVk
MzdmZmEyNS4uYzhlYzRlYzZlOGJjNDdjNjBlMWI4YjRiZmUwMjg3NTdmYzVmNzVlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC00MSw3ICs0MSw2
IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQ29yZUV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCi0jaW5jbHVkZSAiSlNE
ZWJ1Z1dyYXBwZXJTZXQuaCIKICNpbmNsdWRlICJKU0V2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
CkBAIC0xNDIsNyArMTQxLDcgQEAgY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldEhhc2hUYWJsZUZv
ckdsb2JhbERhdGEoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdAogYm9vbCBoYXNDYWNo
ZWRET01PYmplY3RXcmFwcGVyVW5jaGVja2VkKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9p
ZCogb2JqZWN0SGFuZGxlKQogewogICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3
b3JsZEl0ZXIoZ2xvYmFsRGF0YSk7IHdvcmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAg
aWYgKHdvcmxkSXRlci0+bV93cmFwcGVycy51bmNoZWNrZWRHZXQob2JqZWN0SGFuZGxlKSkKKyAg
ICAgICAgaWYgKHdvcmxkSXRlci0+bV93cmFwcGVycy5nZXQob2JqZWN0SGFuZGxlKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjQsOCAr
MTYzLDcgQEAgRE9NT2JqZWN0KiBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCB2b2lkKiBvYmplY3RIYW5kbGUpCiAKIHZvaWQgY2FjaGVET01PYmplY3RXcmFw
cGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB2b2lkKiBvYmplY3RIYW5kbGUsIERPTU9iamVjdCog
d3JhcHBlcikgCiB7Ci0gICAgSlNEZWJ1Z1dyYXBwZXJTZXQ6OndpbGxDYWNoZVdyYXBwZXIod3Jh
cHBlcik7Ci0gICAgZG9tT2JqZWN0V3JhcHBlck1hcEZvcihleGVjKS5zZXQob2JqZWN0SGFuZGxl
LCB3cmFwcGVyKTsKKyAgICBkb21PYmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIG9iamVjdEhhbmRsZSwgd3JhcHBlcik7CiB9CiAKIGJvb2wgaGFzQ2FjaGVk
RE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQpA
QCAtMTc1LDU5ICsxNzMsMTggQEAgYm9vbCBoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tl
ZChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCiAKICAgICBKU1dyYXBwZXJDYWNoZU1h
cCYgd3JhcHBlckNhY2hlTWFwID0gZG9jdW1lbnQtPndyYXBwZXJDYWNoZU1hcCgpOwogICAgIGZv
ciAoSlNXcmFwcGVyQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVn
aW4oKTsgaXRlciAhPSB3cmFwcGVyQ2FjaGVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICBp
ZiAoaXRlci0+c2Vjb25kLT51bmNoZWNrZWRHZXQobm9kZSkpCisgICAgICAgIGlmIChpdGVyLT5z
ZWNvbmQtPmdldChub2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgZm9yZ2V0RE9NT2JqZWN0KERPTU9iamVjdCogd3JhcHBl
ciwgdm9pZCogb2JqZWN0SGFuZGxlKQotewotICAgIEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gSGVhcDo6aGVhcCh3cmFwcGVyKS0+Z2xvYmFsRGF0YSgpOwotCi0gICAgLy8gQ2hlY2sg
dGhlIG5vcm1hbCB3b3JsZCBmaXJzdCEKLSAgICBKU0dsb2JhbERhdGE6OkNsaWVudERhdGEqIGNs
aWVudERhdGEgPSBnbG9iYWxEYXRhLT5jbGllbnREYXRhOwotICAgIEFTU0VSVChjbGllbnREYXRh
KTsKLSAgICBET01PYmplY3RXcmFwcGVyTWFwJiB3cmFwcGVycyA9IHN0YXRpY19jYXN0PFdlYkNv
cmVKU0NsaWVudERhdGEqPihjbGllbnREYXRhKS0+bm9ybWFsV29ybGQoKS0+bV93cmFwcGVyczsK
LSAgICBpZiAod3JhcHBlcnMudW5jaGVja2VkUmVtb3ZlKG9iamVjdEhhbmRsZSwgd3JhcHBlcikp
IHsKLSAgICAgICAgSlNEZWJ1Z1dyYXBwZXJTZXQ6OmRpZFVuY2FjaGVXcmFwcGVyKHdyYXBwZXIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gV2UgY2FuJ3QgZ3VhcmFudGVlIHRo
YXQgYSB3cmFwcGVyIGlzIGluIHRoZSBjYWNoZSB3aGVuIGl0IHVuY2FjaGVzIGl0c2VsZiwKLSAg
ICAvLyBzaW5jZSBhIG5ldyB3cmFwcGVyIG1heSBiZSBjYWNoZWQgYmVmb3JlIHRoZSBvbGQgd3Jh
cHBlcidzIGRlc3RydWN0b3IgcnVucy4KLSAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxkSXRlcmF0
b3Igd29ybGRJdGVyKGdsb2JhbERhdGEpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7Ci0gICAg
ICAgIGlmICh3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkUmVtb3ZlKG9iamVjdEhhbmRs
ZSwgd3JhcHBlcikpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgSlNEZWJ1Z1dyYXBw
ZXJTZXQ6OmRpZFVuY2FjaGVXcmFwcGVyKHdyYXBwZXIpOwotfQotCi12b2lkIGZvcmdldERPTU5v
ZGUoSlNOb2RlKiB3cmFwcGVyLCBOb2RlKiBub2RlLCBEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0g
ICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBmb3JnZXRET01PYmplY3Qod3JhcHBlciwgbm9k
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBjYW4ndCBndWFyYW50ZWUg
dGhhdCBhIHdyYXBwZXIgaXMgaW4gdGhlIGNhY2hlIHdoZW4gaXQgdW5jYWNoZXMgaXRzZWxmLAot
ICAgIC8vIHNpbmNlIGEgbmV3IHdyYXBwZXIgbWF5IGJlIGNhY2hlZCBiZWZvcmUgdGhlIG9sZCB3
cmFwcGVyJ3MgZGVzdHJ1Y3RvciBydW5zLgotICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVy
Q2FjaGVNYXAgPSBkb2N1bWVudC0+d3JhcHBlckNhY2hlTWFwKCk7Ci0gICAgZm9yIChKU1dyYXBw
ZXJDYWNoZU1hcDo6aXRlcmF0b3Igd3JhcHBlcnNJdGVyID0gd3JhcHBlckNhY2hlTWFwLmJlZ2lu
KCk7IHdyYXBwZXJzSXRlciAhPSB3cmFwcGVyQ2FjaGVNYXAuZW5kKCk7ICsrd3JhcHBlcnNJdGVy
KSB7Ci0gICAgICAgIGlmICh3cmFwcGVyc0l0ZXItPnNlY29uZC0+dW5jaGVja2VkUmVtb3ZlKG5v
ZGUsIHdyYXBwZXIpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEpTRGVidWdXcmFw
cGVyU2V0OjpkaWRVbmNhY2hlV3JhcHBlcih3cmFwcGVyKTsKLX0KLQogdm9pZCBjYWNoZURPTU5v
ZGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUq
IG5vZGUsIEpTTm9kZSogd3JhcHBlcikKIHsKLSAgICBKU0RlYnVnV3JhcHBlclNldDo6d2lsbENh
Y2hlV3JhcHBlcih3cmFwcGVyKTsKLQogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIGRvbU9i
amVjdFdyYXBwZXJNYXBGb3IoZXhlYykuc2V0KG5vZGUsIHdyYXBwZXIpOworICAgICAgICBkb21P
YmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLnNldChleGVjLT5nbG9iYWxEYXRhKCksIG5vZGUsIHdy
YXBwZXIpOwogICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJy
ZW50V29ybGQoZXhlYykpLT5zZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgIGRvY3VtZW50LT5n
ZXRXcmFwcGVyQ2FjaGUoY3VycmVudFdvcmxkKGV4ZWMpKS0+c2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbm9kZSwgd3JhcHBlcik7CiAKICAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpLT5pc05vcm1h
bCgpKQogICAgICAgICBub2RlLT5zZXRXcmFwcGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBl
cik7CkBAIC0yNjIsNyArMjE5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZVRo
cm91Z2hET00oSlNOb2RlKiBqc05vZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQKICAgICAgICAg
Ly8ga2VlcCB0aGUgbm9kZSB3cmFwcGVycyBwcm90ZWN0aW5nIHRoZW0gYWxpdmUuCiAgICAgICAg
IGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmF0dHJpYnV0ZU1h
cCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9IHdvcmxkLT5t
X3dyYXBwZXJzLnVuY2hlY2tlZEdldChhdHRyaWJ1dGVzKSkgeworICAgICAgICAgICAgICAgIGlm
IChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZC0+bV93cmFwcGVycy5nZXQoYXR0cmlidXRlcykp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2VlbXMgaW5zdWZm
aWNpZW50LCBiZWNhdXNlIE5hbWVkTm9kZU1hcCBpdGVtcyBjYW4gaGF2ZSBjdXN0b20gcHJvcGVy
dGllcyB0aGVtc2VsdmVzLgogICAgICAgICAgICAgICAgICAgICAvLyBNYXliZSBpdCB3b3VsZCBi
ZSBPSyB0byBqdXN0IGtlZXAgdGhlIHdyYXBwZXIgYWxpdmUsIGFzIGl0IGlzIGRvbmUgZm9yIENT
U09NIG9iamVjdHMgYmVsb3cuCiAgICAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLT5oYXND
dXN0b21Qcm9wZXJ0aWVzKCkpCkBAIC0yNzEsMzEgKzIyOCwzMSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNPYnNlcnZhYmxlVGhyb3VnaERPTShKU05vZGUqIGpzTm9kZSwgRE9NV3JhcHBlcldvcmxk
KiB3b3JsZAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGUtPmlzU3R5bGVkRWxl
bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihub2RlKS0+aW5saW5lU3R5bGVE
ZWNsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLnVuY2hl
Y2tlZEdldChzdHlsZSkpCisgICAgICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVy
cy5nZXQoc3R5bGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxIVE1M
Q2FudmFzRWxlbWVudCo+KG5vZGUpLT5yZW5kZXJpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9IHdvcmxkLT5tX3dyYXBwZXJzLnVuY2hl
Y2tlZEdldChjb250ZXh0KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoRE9NT2JqZWN0KiB3
cmFwcGVyID0gd29ybGQtPm1fd3JhcHBlcnMuZ2V0KGNvbnRleHQpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAod3JhcHBlci0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obm9kZSktPmhhc1RhZ05hbWUobGlua1RhZykpIHsKICAgICAgICAgICAgICAgICBpZiAo
U3R5bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihub2RlKS0+
c2hlZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMudW5j
aGVja2VkR2V0KHNoZWV0KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBw
ZXJzLmdldChzaGVldCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKS0+aGFzVGFnTmFtZShzdHlsZVRhZykpIHsKICAgICAgICAgICAgICAgICBpZiAo
U3R5bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MU3R5bGVFbGVtZW50Kj4obm9kZSkt
PnNoZWV0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLnVu
Y2hlY2tlZEdldChzaGVldCkpCisgICAgICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFw
cGVycy5nZXQoc2hlZXQpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKSB7CiAgICAg
ICAgICAgICBpZiAoU3R5bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24qPihub2RlKS0+c2hlZXQoKSkgewotICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+
bV93cmFwcGVycy51bmNoZWNrZWRHZXQoc2hlZXQpKQorICAgICAgICAgICAgICAgIGlmICh3b3Js
ZC0+bV93cmFwcGVycy5nZXQoc2hlZXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMwLDEyICsyODcsMTUgQEAgdm9pZCBt
YXJrRE9NTm9kZXNGb3JEb2N1bWVudChNYXJrU3RhY2smIG1hcmtTdGFjaywgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gd3JhcHBlcnNJdGVyLT5m
aXJzdDsKICAgICAgICAgSlNXcmFwcGVyQ2FjaGUqIG5vZGVEaWN0ID0gd3JhcHBlcnNJdGVyLT5z
ZWNvbmQ7CiAKLSAgICAgICAgSlNXcmFwcGVyQ2FjaGU6Oml0ZXJhdG9yIG5vZGVFbmQgPSBub2Rl
RGljdC0+dW5jaGVja2VkRW5kKCk7Ci0gICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGU6Oml0ZXJh
dG9yIG5vZGVJdCA9IG5vZGVEaWN0LT51bmNoZWNrZWRCZWdpbigpOyBub2RlSXQgIT0gbm9kZUVu
ZDsgKytub2RlSXQpIHsKLSAgICAgICAgICAgIERlcHJlY2F0ZWRQdHI8SlNOb2RlPiYganNOb2Rl
ID0gbm9kZUl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlVGhyb3VnaERP
TShqc05vZGUuZ2V0KCksIHdvcmxkKSkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KCZqc05vZGUpOworICAgICAgICBKU1dyYXBwZXJDYWNoZTo6aXRlcmF0b3Igbm9kZUVuZCA9IG5v
ZGVEaWN0LT5lbmQoKTsKKyAgICAgICAgaW50IG5vZGVEaWN0U2l6ZSA9IG5vZGVEaWN0LT5zaXpl
KCk7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGU6
Oml0ZXJhdG9yIG5vZGVJdCA9IG5vZGVEaWN0LT5iZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsg
Kytub2RlSXQpIHsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICBpZiAoaXNPYnNl
cnZhYmxlVGhyb3VnaERPTShub2RlSXQuZ2V0KCkuc2Vjb25kLCB3b3JsZCkpCisgICAgICAgICAg
ICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQobm9kZUl0LmdldFNsb3QoKS5zZWNvbmQp
OwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChjb3VudCA9PSBub2RlRGljdFNpemUpOwogICAg
IH0KIH0KIApAQCAtMzcxLDE4ICszMzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHRha2VXcmFw
cGVycyhOb2RlKiBub2RlLCBEb2N1bWVudCogZG9jdW1lbnQsIFdyYXBwZXJTZXQmIHdyYXAKICAg
ICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgSlNXcmFwcGVyQ2FjaGVNYXAmIHdyYXBwZXJDYWNo
ZU1hcCA9IGRvY3VtZW50LT53cmFwcGVyQ2FjaGVNYXAoKTsKICAgICAgICAgZm9yIChKU1dyYXBw
ZXJDYWNoZU1hcDo6aXRlcmF0b3IgaXRlciA9IHdyYXBwZXJDYWNoZU1hcC5iZWdpbigpOyBpdGVy
ICE9IHdyYXBwZXJDYWNoZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoSlNO
b2RlKiB3cmFwcGVyID0gaXRlci0+c2Vjb25kLT50YWtlKG5vZGUpKSB7Ci0gICAgICAgICAgICAg
ICAgSlNEZWJ1Z1dyYXBwZXJTZXQ6OmRpZFVuY2FjaGVXcmFwcGVyKHdyYXBwZXIpOworICAgICAg
ICAgICAgaWYgKEpTTm9kZSogd3JhcHBlciA9IGl0ZXItPnNlY29uZC0+dGFrZShub2RlKSkKICAg
ICAgICAgICAgICAgICB3cmFwcGVyU2V0LmFwcGVuZChXcmFwcGVyQW5kV29ybGQod3JhcHBlciwg
aXRlci0+Zmlyc3QpKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsgd29ybGRJdGVyOyArK3dvcmxkSXRlcikgewogICAg
ICAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9ICp3b3JsZEl0ZXI7Ci0gICAgICAgICAg
ICBpZiAoSlNOb2RlKiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4od29ybGQtPm1fd3Jh
cHBlcnMudGFrZShub2RlKSkpIHsKLSAgICAgICAgICAgICAgICBKU0RlYnVnV3JhcHBlclNldDo6
ZGlkVW5jYWNoZVdyYXBwZXIod3JhcHBlcik7CisgICAgICAgICAgICBpZiAoSlNOb2RlKiB3cmFw
cGVyID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4od29ybGQtPm1fd3JhcHBlcnMudGFrZShub2RlKSkp
CiAgICAgICAgICAgICAgICAgd3JhcHBlclNldC5hcHBlbmQoV3JhcHBlckFuZFdvcmxkKHdyYXBw
ZXIsIHdvcmxkKSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zOTYs
MTEgKzM1MiwxMCBAQCB2b2lkIHVwZGF0ZURPTU5vZGVEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1
bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBuZXdEb2N1bQogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHdyYXBwZXJTZXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSlNOb2RlKiB3
cmFwcGVyID0gd3JhcHBlclNldFtpXS5maXJzdDsKLSAgICAgICAgSlNEZWJ1Z1dyYXBwZXJTZXQ6
OndpbGxDYWNoZVdyYXBwZXIod3JhcHBlcik7CiAgICAgICAgIGlmIChuZXdEb2N1bWVudCkKLSAg
ICAgICAgICAgIG5ld0RvY3VtZW50LT5nZXRXcmFwcGVyQ2FjaGUod3JhcHBlclNldFtpXS5zZWNv
bmQpLT5zZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgICAgICBuZXdEb2N1bWVudC0+Z2V0V3Jh
cHBlckNhY2hlKHdyYXBwZXJTZXRbaV0uc2Vjb25kKS0+c2V0KCp3cmFwcGVyU2V0W2ldLnNlY29u
ZC0+Z2xvYmFsRGF0YSgpLCBub2RlLCB3cmFwcGVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgd3JhcHBlclNldFtpXS5zZWNvbmQtPm1fd3JhcHBlcnMuc2V0KG5vZGUsIHdyYXBwZXIpOwor
ICAgICAgICAgICAgd3JhcHBlclNldFtpXS5zZWNvbmQtPm1fd3JhcHBlcnMuc2V0KCp3cmFwcGVy
U2V0W2ldLnNlY29uZC0+Z2xvYmFsRGF0YSgpLCBub2RlLCB3cmFwcGVyKTsKICAgICB9CiB9CiAK
QEAgLTQxMyw4ICszNjgsOCBAQCB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKE1hcmtTdGFjayYg
bWFya1N0YWNrLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoJmdsb2Jh
bERhdGEpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7Ci0gICAgICAgIGlmIChEZXByZWNhdGVk
UHRyPERPTU9iamVjdD4qIHdyYXBwZXJTbG90ID0gd29ybGRJdGVyLT5tX3dyYXBwZXJzLnVuY2hl
Y2tlZEdldFNsb3Qob2JqZWN0KSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBl
clNsb3QpOworICAgICAgICBpZiAoSGFuZGxlU2xvdCB3cmFwcGVyU2xvdCA9IHdvcmxkSXRlci0+
bV93cmFwcGVycy5nZXRTbG90KG9iamVjdCkpCisgICAgICAgICAgICBtYXJrU3RhY2suZGVwcmVj
YXRlZEFwcGVuZCh3cmFwcGVyU2xvdCk7CiAgICAgfQogfQogCkBAIC00MjMsNDkgKzM3OCwyOCBA
QCB2b2lkIG1hcmtET01Ob2RlV3JhcHBlcihNYXJrU3RhY2smIG1hcmtTdGFjaywgRG9jdW1lbnQq
IGRvY3VtZW50LCBOb2RlKiBub2RlKQogICAgIGlmIChkb2N1bWVudCkgewogICAgICAgICBKU1dy
YXBwZXJDYWNoZU1hcCYgd3JhcHBlckNhY2hlTWFwID0gZG9jdW1lbnQtPndyYXBwZXJDYWNoZU1h
cCgpOwogICAgICAgICBmb3IgKEpTV3JhcHBlckNhY2hlTWFwOjppdGVyYXRvciBpdGVyID0gd3Jh
cHBlckNhY2hlTWFwLmJlZ2luKCk7IGl0ZXIgIT0gd3JhcHBlckNhY2hlTWFwLmVuZCgpOyArK2l0
ZXIpIHsKLSAgICAgICAgICAgIGlmIChEZXByZWNhdGVkUHRyPEpTTm9kZT4qIHdyYXBwZXJTbG90
ID0gaXRlci0+c2Vjb25kLT51bmNoZWNrZWRHZXRTbG90KG5vZGUpKQotICAgICAgICAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQod3JhcHBlclNsb3QpOworICAgICAgICAgICAgaWYgKEhhbmRsZVNs
b3Qgd3JhcHBlclNsb3QgPSBpdGVyLT5zZWNvbmQtPmdldFNsb3Qobm9kZSkpCisgICAgICAgICAg
ICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQod3JhcHBlclNsb3QpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxkSXRl
cmF0b3Igd29ybGRJdGVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7IHdvcmxk
SXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKERlcHJlY2F0ZWRQdHI8RE9NT2JqZWN0
Piogd3JhcHBlclNsb3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMudW5jaGVja2VkR2V0U2xvdChu
b2RlKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQod3JhcHBlclNsb3QpOworICAgICAg
ICBpZiAoSGFuZGxlU2xvdCB3cmFwcGVyU2xvdCA9IHdvcmxkSXRlci0+bV93cmFwcGVycy5nZXRT
bG90KG5vZGUpKQorICAgICAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQod3JhcHBl
clNsb3QpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc3RyaW5nV3JhcHBlckRlc3Ryb3llZChK
U1N0cmluZyogc3RyLCB2b2lkKiBjb250ZXh0KQorc3RhdGljIHZvaWQgc3RyaW5nV3JhcHBlckRl
c3Ryb3llZChKU1N0cmluZyosIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgU3RyaW5nSW1wbCogY2Fj
aGVLZXkgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oY29udGV4dCk7Ci0gICAgSlNDOjpKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSBIZWFwOjpoZWFwKHN0ciktPmdsb2JhbERhdGEoKTsKLQot
ICAgIC8vIENoZWNrIHRoZSBub3JtYWwgd29ybGQgZmlyc3QhCi0gICAgSlNHbG9iYWxEYXRhOjpD
bGllbnREYXRhKiBjbGllbnREYXRhID0gZ2xvYmFsRGF0YS0+Y2xpZW50RGF0YTsKLSAgICBBU1NF
UlQoY2xpZW50RGF0YSk7Ci0gICAgSlNTdHJpbmdDYWNoZSYgY2FjaGUgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlSlNDbGllbnREYXRhKj4oY2xpZW50RGF0YSktPm5vcm1hbFdvcmxkKCktPm1fc3RyaW5n
Q2FjaGU7Ci0gICAgaWYgKGNhY2hlLnVuY2hlY2tlZFJlbW92ZShjYWNoZUtleSwgc3RyKSkgewot
ICAgICAgICBjYWNoZUtleS0+ZGVyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoZ2xvYmFsRGF0YSk7IHdv
cmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKHdvcmxkSXRlci0+bV9zdHJpbmdD
YWNoZS51bmNoZWNrZWRSZW1vdmUoY2FjaGVLZXksIHN0cikpCi0gICAgICAgICAgICBicmVhazsK
LSAgICB9Ci0KICAgICBjYWNoZUtleS0+ZGVyZWYoKTsKIH0KIAogSlNWYWx1ZSBqc1N0cmluZ1Ns
b3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2FjaGUsIFN0cmlu
Z0ltcGwqIHN0cmluZ0ltcGwpCiB7Ci0gICAgLy8gSWYgdGhlcmUgaXMgYSBzdGFsZSBlbnRyeSwg
d2UgaGF2ZSB0byBleHBsaWNpdGx5IHJlbW92ZSBpdCB0byBhdm9pZAotICAgIC8vIHByb2JsZW1z
IGRvd24gdGhlIGxpbmUuCi0gICAgaWYgKEpTU3RyaW5nKiB3cmFwcGVyID0gc3RyaW5nQ2FjaGUu
dW5jaGVja2VkR2V0KHN0cmluZ0ltcGwpKQotICAgICAgICBzdHJpbmdDYWNoZS51bmNoZWNrZWRS
ZW1vdmUoc3RyaW5nSW1wbCwgd3JhcHBlcik7Ci0KICAgICBKU1N0cmluZyogd3JhcHBlciA9IGpz
U3RyaW5nV2l0aEZpbmFsaXplcihleGVjLCBVU3RyaW5nKHN0cmluZ0ltcGwpLCBzdHJpbmdXcmFw
cGVyRGVzdHJveWVkLCBzdHJpbmdJbXBsKTsKLSAgICBzdHJpbmdDYWNoZS5zZXQoc3RyaW5nSW1w
bCwgd3JhcHBlcik7CisgICAgc3RyaW5nQ2FjaGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
aW5nSW1wbCwgd3JhcHBlcik7CiAgICAgLy8gcmVmIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiB1c2lu
ZyBhIFJlZlB0ci1rZXllZCBoYXNodGFibGUgYmVjYXVzZSB0aGUgd3JhcHBlciBjYW4KICAgICAv
LyBvdXRsaXZlIHRoZSBjYWNoZSwgc28gdGhlIHN0cmluZ0ltcGwgaGFzIHRvIG1hdGNoIHRoZSB3
cmFwcGVyJ3MgbGlmZXRpbWUuCiAgICAgc3RyaW5nSW1wbC0+cmVmKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDlhMjdlNjYyYWUyNmQ3ODk3OWM3OWRh
MDM0MWVhZTVhMDMzOGNmZjYuLjRmZTNkMTZjMWZjYzI4YzdjNjc0ODlhODFiYzFhYjU3OGEwZmEx
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0xMTYs
OCArMTE2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIERPTU9iamVjdCogZ2V0Q2FjaGVk
RE9NT2JqZWN0V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIHZvaWQqIG9iamVjdEhhbmRsZSk7CiAg
ICAgYm9vbCBoYXNDYWNoZWRET01PYmplY3RXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRhKiwgdm9p
ZCogb2JqZWN0SGFuZGxlKTsKICAgICB2b2lkIGNhY2hlRE9NT2JqZWN0V3JhcHBlcihKU0M6OkV4
ZWNTdGF0ZSosIHZvaWQqIG9iamVjdEhhbmRsZSwgRE9NT2JqZWN0KiB3cmFwcGVyKTsKLSAgICB2
b2lkIGZvcmdldERPTU5vZGUoSlNOb2RlKiB3cmFwcGVyLCBOb2RlKiBub2RlLCBEb2N1bWVudCog
ZG9jdW1lbnQpOwotICAgIHZvaWQgZm9yZ2V0RE9NT2JqZWN0KERPTU9iamVjdCogd3JhcHBlciwg
dm9pZCogb2JqZWN0SGFuZGxlKTsKIAogICAgIEpTTm9kZSogZ2V0Q2FjaGVkRE9NTm9kZVdyYXBw
ZXIoSlNDOjpFeGVjU3RhdGUqLCBEb2N1bWVudCosIE5vZGUqKTsKICAgICB2b2lkIGNhY2hlRE9N
Tm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqLCBEb2N1bWVudCosIE5vZGUqLCBKU05vZGUqIHdy
YXBwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKaW5k
ZXggOTU0OGYyZjc4ZWYzNWU2NGE0ZDI3Njg5Y2VkZGRiYzFhNjVmNjFmZC4uNzk0ZjAzOTlmYTIx
ZjVkNDcwNjQ3MWIwMWQzMmMwNzQyNDY0OTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAKLSNpbmNsdWRlICJKU0RlYnVnV3JhcHBl
clNldC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKQEAgLTM3LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01PYmplY3Q6On5E
T01PYmplY3QoKQogewotICAgIEFTU0VSVCghSlNEZWJ1Z1dyYXBwZXJTZXQ6OnNoYXJlZCgpLmNv
bnRhaW5zKHRoaXMpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RlYnVnV3JhcHBlclNldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGIwZDZjYTlhMWZkOWI2NDAxN2FkMTFiYTc1M2NhNDI2ZTQwNWIwY2QuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZWJ1Z1dyYXBwZXJTZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0RlYnVnV3JhcHBl
clNldC5oIgotCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi0jaWYgRU5BQkxFKFdP
UktFUlMpCi0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jZW5kaWYKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1KU0RlYnVnV3JhcHBlclNldCYgSlNEZWJ1Z1dyYXBwZXJTZXQ6OnNo
YXJlZCgpCi17Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChX
VEY6OlRocmVhZFNwZWNpZmljPEpTRGVidWdXcmFwcGVyU2V0Piwgc3RhdGljV3JhcHBlclNldCwg
KCkpOwotICAgIHJldHVybiAqc3RhdGljV3JhcHBlclNldDsKLSNlbHNlCi0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChKU0RlYnVnV3JhcHBlclNldCwgc3RhdGljV3JhcHBlclNldCwgKCkpOwotICAg
IHJldHVybiBzdGF0aWNXcmFwcGVyU2V0OwotI2VuZGlmCi19Ci0KLUpTRGVidWdXcmFwcGVyU2V0
OjpKU0RlYnVnV3JhcHBlclNldCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVidWdXcmFwcGVyU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlYnVnV3JhcHBlclNldC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTEzOGVkYThmYjlkNmJkMGZlMTRlYTI1M2FjZGUwNTg1
ZTc2NThmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVidWdXcmFwcGVyU2V0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBKU0RlYnVnV3JhcHBlclNl
dF9oCi0jZGVmaW5lIEpTRGVidWdXcmFwcGVyU2V0X2gKLQotI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRm9yIGRlYnVnZ2luZywga2VlcCBhIHNl
dCBvZiB3cmFwcGVycyBjdXJyZW50bHkgY2FjaGVkLCBhbmQgY2hlY2sgdGhhdAotLy8gYWxsIGFy
ZSB1bmNhY2hlZCBiZWZvcmUgdGhleSBhcmUgZGVzdHJveWVkLiBUaGlzIGhlbHBzIHVzIGNhdGNo
IGJ1Z3MgbGlrZToKLS8vICAgICAtIHdyYXBwZXJzIGJlaW5nIGRlbGV0ZWQgd2l0aG91dCBiZWlu
ZyByZW1vdmVkIGZyb20gdGhlIGNhY2hlCi0vLyAgICAgLSB3cmFwcGVycyBiZWluZyBjYWNoZWQg
dHdpY2UKLQotY2xhc3MgSlNEZWJ1Z1dyYXBwZXJTZXQgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEpTRGVidWdXcmFwcGVyU2V0KTsKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpUaHJlYWRTcGVj
aWZpYzxKU0RlYnVnV3JhcHBlclNldD47Ci1wdWJsaWM6Ci0gICAgc3RhdGljIEpTRGVidWdXcmFw
cGVyU2V0JiBzaGFyZWQoKTsKLQotICAgIHZvaWQgYWRkKERPTU9iamVjdCogb2JqZWN0KSB7IG1f
d3JhcHBlclNldC5hZGQob2JqZWN0KTsgfQotICAgIHZvaWQgcmVtb3ZlKERPTU9iamVjdCogb2Jq
ZWN0KSB7IG1fd3JhcHBlclNldC5yZW1vdmUob2JqZWN0KTsgfQotICAgIGJvb2wgY29udGFpbnMo
RE9NT2JqZWN0KiBvYmplY3QpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlclNldC5jb250YWlucyhv
YmplY3QpOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3aWxsQ2FjaGVXcmFwcGVyKERPTU9iamVjdCop
OwotICAgIHN0YXRpYyB2b2lkIGRpZFVuY2FjaGVXcmFwcGVyKERPTU9iamVjdCopOwotCi1wcml2
YXRlOgotICAgIEpTRGVidWdXcmFwcGVyU2V0KCk7Ci0KLSAgICBIYXNoU2V0PERPTU9iamVjdCo+
IG1fd3JhcHBlclNldDsKLX07Ci0KLSNpZmRlZiBOREVCVUcKLQotaW5saW5lIHZvaWQgSlNEZWJ1
Z1dyYXBwZXJTZXQ6OndpbGxDYWNoZVdyYXBwZXIoRE9NT2JqZWN0KikKLXsKLX0KLQotaW5saW5l
IHZvaWQgSlNEZWJ1Z1dyYXBwZXJTZXQ6OmRpZFVuY2FjaGVXcmFwcGVyKERPTU9iamVjdCopCi17
Ci19Ci0KLSNlbHNlCi0KLWlubGluZSB2b2lkIEpTRGVidWdXcmFwcGVyU2V0Ojp3aWxsQ2FjaGVX
cmFwcGVyKERPTU9iamVjdCogd3JhcHBlcikKLXsKLSAgICBBU1NFUlQoIUpTRGVidWdXcmFwcGVy
U2V0OjpzaGFyZWQoKS5jb250YWlucyh3cmFwcGVyKSk7Ci0gICAgSlNEZWJ1Z1dyYXBwZXJTZXQ6
OnNoYXJlZCgpLmFkZCh3cmFwcGVyKTsKLX0KLQotaW5saW5lIHZvaWQgSlNEZWJ1Z1dyYXBwZXJT
ZXQ6OmRpZFVuY2FjaGVXcmFwcGVyKERPTU9iamVjdCogd3JhcHBlcikKLXsKLSAgICBpZiAoIXdy
YXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoSlNEZWJ1Z1dyYXBwZXJTZXQ6OnNo
YXJlZCgpLmNvbnRhaW5zKHdyYXBwZXIpKTsKLSAgICBKU0RlYnVnV3JhcHBlclNldDo6c2hhcmVk
KCkucmVtb3ZlKHdyYXBwZXIpOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gSlNEZWJ1Z1dyYXBwZXJTZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBkMGE1ZjI1ZTRlNjEz
OWZmODA1ZjI0ZTQ4ZTUzMjhmYzgwMGE5ODI2Li4yNGNmM2I4ZDU2MDExNzcyMjBmYjA4NTUyNGRh
ZTMwNjllMGFiODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjg5LDkgKzY4OSw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoTm9uTnVsbFBh
c3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8
JGltcGxUeXBlPik7XG4iKTsKICAgICB9CiAKLSAgICAjIERlc3RydWN0b3IKLSAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgfiRjbGFzc05hbWUoKTtcbiIpIGlmICghJGhhc1Bh
cmVudCBvciAkZXZlbnRUYXJnZXQgb3IgJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpOwot
CiAgICAgIyBQcm90b3R5cGUKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7XG4iKSB1bmxlc3MgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkV4dGVuZHNET01HbG9iYWxPYmplY3QifSk7CiAKQEAgLTE0MzMsMjYgKzE0MzAsNiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAKLSAgICAjIERlc3RydWN0b3IKLSAgICBpZiAoISRoYXNQYXJlbnQgfHwgJGV2ZW50
VGFyZ2V0KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9Ojp+JGNs
YXNzTmFtZSgpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLQotICAg
ICAgICBpZiAoJGV2ZW50VGFyZ2V0KSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCEk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9NR2xvYmFsT2JqZWN0In0p
IHsKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKLSAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yZ2V0RE9NTm9kZSh0aGlzLCBpbXBs
KCksIGltcGwoKS0+ZG9jdW1lbnQoKSk7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yZ2V0RE9NT2JqZWN0KHRoaXMs
IGltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9Ci0KICAgICBpZiAoJG5lZWRzTWFya0NoaWxk
cmVuICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21NYXJrRnVuY3Rp
b24ifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojpt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2Mv
QnJpZGdlSlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcApp
bmRleCBhNGY2M2MzYzg1NzhhYjg0MmM5MjIwMTAyOWY4NWRjYTFjODRjZTQ4Li45YzBhZGZjZTkx
MGY3YmEyNmRmZTMyZmU3MDMyMjNhZDZmMDZlMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pz
Yy9CcmlkZ2VKU0MuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEpTT2JqZWN0KiBJbnN0YW5jZTo6Y3Jl
YXRlUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKICAgICBSdW50aW1lT2JqZWN0KiBuZXdPYmplY3QgPSBuZXdSdW50
aW1lT2JqZWN0KGV4ZWMpOwogICAgIG1fcnVudGltZU9iamVjdC5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuZXdPYmplY3QsIDApOwotICAgIG1fcm9vdE9iamVjdC0+YWRkUnVudGltZU9iamVjdChu
ZXdPYmplY3QpOworICAgIG1fcm9vdE9iamVjdC0+YWRkUnVudGltZU9iamVjdChleGVjLT5nbG9i
YWxEYXRhKCksIG5ld09iamVjdCk7CiAgICAgcmV0dXJuIG5ld09iamVjdDsKIH0KIApAQCAtMTA5
LDEyICsxMDksNiBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZU9iamVjdChleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmU8UnVudGltZU9iamVjdD4oZXhlYyksIHRoaXMpOwogfQogCi12b2lkIEluc3RhbmNl
Ojp3aWxsRGVzdHJveVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQotewotICAg
IEFTU0VSVChtX3Jvb3RPYmplY3QpOwotICAgIG1fcm9vdE9iamVjdC0+cmVtb3ZlUnVudGltZU9i
amVjdChvYmplY3QpOwotfQotCiB2b2lkIEluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVP
YmplY3QoKQogewogICAgIG1fcnVudGltZU9iamVjdC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggZGY4MjU5NTNkMDgzMGQyMGYyY2EzOTA5Mjk3ZGNkOTIz
NWYxNjE0ZS4uNGRlNjA2ZmQ1MDViMmQzZWI1NzA0ZjE5N2I3MjNkM2E0MjU4ODllOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBAIC04OCw3ICs4OCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIENsYXNzKiBnZXRDbGFzcygpIGNvbnN0ID0gMDsKICAgICBKU09iamVjdCog
Y3JlYXRlUnVudGltZU9iamVjdChFeGVjU3RhdGUqKTsKICAgICB2b2lkIHdpbGxJbnZhbGlkYXRl
UnVudGltZU9iamVjdCgpOwotICAgIHZvaWQgd2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KFJ1bnRp
bWVPYmplY3QqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qg
c2V0IHN1Y2Nlc3NmdWxseS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZp
ZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKSB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggZmI3YTU3
OTM2NTU2ZWQxYmJjNWYyNjg4YWIzMWZiN2Y0MWYyNzg1Mi4uZGUxOTY0YTQ0YWYyZTQ4OGMwMjNj
MjdjNGMwNzVkN2NjYjc4Y2RmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwCkBAIC00Nyw4ICs0Nyw2IEBAIFJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhCiAKIFJ1bnRp
bWVPYmplY3Q6On5SdW50aW1lT2JqZWN0KCkKIHsKLSAgICBpZiAobV9pbnN0YW5jZSkKLSAgICAg
ICAgbV9pbnN0YW5jZS0+d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KHRoaXMpOwogfQogCiB2b2lk
IFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9y
b290LmNwcAppbmRleCA3MDJiYzA5YTIzYjFkYjdhOTZjYTMyY2IyOThhY2JhZDhlZjQ2OTEwLi4y
Y2I1Njg1OTNkMzM2MzJjMjZjOTQ2NTYwYWJhZDE5NWRiYjg3ZDA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtMTAxLDEwICsxMDEsOSBAQCB2b2lkIFJvb3RPYmpl
Y3Q6OmludmFsaWRhdGUoKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFdlYWtH
Q01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD46Oml0ZXJhdG9yIGVuZCA9IG1fcnVu
dGltZU9iamVjdHMudW5jaGVja2VkRW5kKCk7Ci0gICAgICAgIGZvciAoV2Vha0dDTWFwPFJ1bnRp
bWVPYmplY3QqLCBSdW50aW1lT2JqZWN0Pjo6aXRlcmF0b3IgaXQgPSBtX3J1bnRpbWVPYmplY3Rz
LnVuY2hlY2tlZEJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKG1f
cnVudGltZU9iamVjdHMuaXNWYWxpZChpdCkpCi0gICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+
aW52YWxpZGF0ZSgpOworICAgICAgICBXZWFrR0NNYXA8UnVudGltZU9iamVjdCosIFJ1bnRpbWVP
YmplY3Q+OjppdGVyYXRvciBlbmQgPSBtX3J1bnRpbWVPYmplY3RzLmVuZCgpOworICAgICAgICBm
b3IgKFdlYWtHQ01hcDxSdW50aW1lT2JqZWN0KiwgUnVudGltZU9iamVjdD46Oml0ZXJhdG9yIGl0
ID0gbV9ydW50aW1lT2JqZWN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
ICAgIGl0LmdldCgpLnNlY29uZC0+aW52YWxpZGF0ZSgpOwogICAgICAgICB9CiAKICAgICAgICAg
bV9ydW50aW1lT2JqZWN0cy5jbGVhcigpOwpAQCAtMTc1LDEyICsxNzQsMTIgQEAgdm9pZCBSb290
T2JqZWN0Ojp1cGRhdGVHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBtX2dsb2JhbE9iamVjdC5zZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCk7CiB9CiAKLXZvaWQgUm9vdE9iamVjdDo6YWRkUnVudGltZU9iamVjdChSdW50aW1l
T2JqZWN0KiBvYmplY3QpCit2b2lkIFJvb3RPYmplY3Q6OmFkZFJ1bnRpbWVPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBSdW50aW1lT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJU
KG1faXNWYWxpZCk7CiAgICAgQVNTRVJUKCFtX3J1bnRpbWVPYmplY3RzLmdldChvYmplY3QpKTsK
IAotICAgIG1fcnVudGltZU9iamVjdHMuc2V0KG9iamVjdCwgb2JqZWN0KTsKKyAgICBtX3J1bnRp
bWVPYmplY3RzLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIG9iamVjdCk7CiB9CiAKIHZvaWQgUm9v
dE9iamVjdDo6cmVtb3ZlUnVudGltZU9iamVjdChSdW50aW1lT2JqZWN0KiBvYmplY3QpCkBAIC0x
ODgsNyArMTg3LDcgQEAgdm9pZCBSb290T2JqZWN0OjpyZW1vdmVSdW50aW1lT2JqZWN0KFJ1bnRp
bWVPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKG1fcnVudGltZU9iamVjdHMudW5jaGVja2VkR2V0KG9iamVjdCkpOworICAg
IEFTU0VSVChtX3J1bnRpbWVPYmplY3RzLmdldChvYmplY3QpKTsKIAogICAgIG1fcnVudGltZU9i
amVjdHMudGFrZShvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfcm9vdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCmlu
ZGV4IGZjMDFhMDlmZDEzZTgyNGE5ZWFiODQ2NTNlNzc5MjY1ZDA2MGFkZjIuLmZlYWRlNDVjY2Vl
ZGNiM2YwYmI4ODg0MTM1OTIxODFmZWE0NzU5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9yb290LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbE9iamVjdChKU0dsb2Jh
bE9iamVjdCopOwogCi0gICAgdm9pZCBhZGRSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqKTsK
KyAgICB2b2lkIGFkZFJ1bnRpbWVPYmplY3QoSlNHbG9iYWxEYXRhJiwgUnVudGltZU9iamVjdCop
OwogICAgIHZvaWQgcmVtb3ZlUnVudGltZU9iamVjdChSdW50aW1lT2JqZWN0Kik7CiAKICAgICBz
dHJ1Y3QgSW52YWxpZGF0aW9uQ2FsbGJhY2sgewo=
</data>
<flag name="review"
          id="75568"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>