<?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>143283</bug_id>
          
          <creation_ts>2015-03-31 16:42:58 -0700</creation_ts>
          <short_desc>WebKitTestRunner Injected bundle messages should be at the page level</short_desc>
          <delta_ts>2015-04-01 16:23:34 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081828</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-31 16:42:58 -0700</bug_when>
    <thetext>All the messaging to the UIProcess from the injected bundle should be page messages instead of context level messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081903</commentid>
    <comment_count>1</comment_count>
      <attachid>249895</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-31 23:27:25 -0700</bug_when>
    <thetext>Created attachment 249895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081925</commentid>
    <comment_count>2</comment_count>
      <attachid>249895</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-01 00:09:09 -0700</bug_when>
    <thetext>Comment on attachment 249895
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=249895&amp;action=review

&gt; Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

The years don&apos;t look right

&gt; Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp:54
&gt; +/*

This commented out thing probably should be deleted (?)

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h:49
&gt; +// ?

? what did we decide here

&gt; Tools/WebKitTestRunner/TestController.cpp:532
&gt; +//        0 // getInjectedBundleInitializationUserData

ditto on the commented out stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082056</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-04-01 11:14:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 249895 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249895&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp:2
&gt; &gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; 
&gt; The years don&apos;t look right
&gt; 
There were even more wrong. I fixed them all.

&gt; &gt; Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp:54
&gt; &gt; +/*
&gt; 
&gt; This commented out thing probably should be deleted (?)
&gt;Yes, done.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h:49
&gt; &gt; +// ?
&gt; 
&gt; ? what did we decide here
&gt; 
Nothing officially. I think it is ok to have it here since it is internal.
I&apos;ve removed the question mark.

&gt; &gt; Tools/WebKitTestRunner/TestController.cpp:532
&gt; &gt; +//        0 // getInjectedBundleInitializationUserData
&gt; 
&gt; ditto on the commented out stuff
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082059</commentid>
    <comment_count>4</comment_count>
      <attachid>249935</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-04-01 11:25:16 -0700</bug_when>
    <thetext>Created attachment 249935
Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082095</commentid>
    <comment_count>5</comment_count>
      <attachid>249935</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-01 13:45:49 -0700</bug_when>
    <thetext>Comment on attachment 249935
Patch2

View in context: https://bugs.webkit.org/attachment.cgi?id=249935&amp;action=review

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4837
&gt; +    auto&amp; webProcess = WebProcess::singleton();

This variable is not needed.

&gt; Tools/WebKitTestRunner/TestController.cpp:532
&gt; +//        0 // getInjectedBundleInitializationUserData

?

&gt; Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp:212
&gt; -    auto&amp; injectedBungle = InjectedBundle::singleton();
&gt; -    WKBundlePageRef page = injectedBungle.page()-&gt;page();
&gt; +    auto&amp; injectedBundle = InjectedBundle::singleton();
&gt; +    WKBundlePageRef page = injectedBundle.page()-&gt;page();

This patch doesn&apos;t make it worse, but doesn&apos;t the code mean that it&apos;s not possible to use EventSendingController in a secondary window? Maybe it&apos;s easy to fix now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082121</commentid>
    <comment_count>6</comment_count>
      <attachid>249949</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-04-01 15:32:18 -0700</bug_when>
    <thetext>Created attachment 249949
Patch3

Trying to fix EFL and GTK builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082131</commentid>
    <comment_count>7</comment_count>
      <attachid>249949</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-01 15:47:05 -0700</bug_when>
    <thetext>Comment on attachment 249949
Patch3

View in context: https://bugs.webkit.org/attachment.cgi?id=249949&amp;action=review

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4844
&gt; +    auto&amp; webProcess = WebProcess::singleton();

I feel kind of uneasy about this one, it&apos;s probably slightly better to call WebProcess::singleton() twice than to hold a reference to something over a sync call.

Anything can happen during a sync call, as synchronous messages from UI process can be executed. That&apos;s unlikely to invalidate a singleton, of course, but the way the code is structured now is unusual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082132</commentid>
    <comment_count>8</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-04-01 15:48:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 249949 [details]
&gt; Patch3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249949&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4844
&gt; &gt; +    auto&amp; webProcess = WebProcess::singleton();
&gt; 
&gt; I feel kind of uneasy about this one, it&apos;s probably slightly better to call
&gt; WebProcess::singleton() twice than to hold a reference to something over a
&gt; sync call.
&gt; 
&gt; Anything can happen during a sync call, as synchronous messages from UI
&gt; process can be executed. That&apos;s unlikely to invalidate a singleton, of
&gt; course, but the way the code is structured now is unusual.

I agree with you. I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082137</commentid>
    <comment_count>9</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-04-01 16:23:34 -0700</bug_when>
    <thetext>Fixed the remaining build issues with elf and gtk before landing.
Committed revision 182260.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249895</attachid>
            <date>2015-03-31 23:27:25 -0700</date>
            <delta_ts>2015-04-01 11:25:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>pagelevelbundlemessages.txt</filename>
            <type>text/plain</type>
            <size>72401</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjIyMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTAzLTMxICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG1l
c3NhZ2VzIHNob3VsZCBiZSBhdCB0aGUgcGFnZSBsZXZlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCB0aGUgbWVzc2FnZXMgYmV0d2VlbiB0aGUg
aW5qZWN0ZWQgYnVuZGxlIGFuZCB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBzaG91bGQgYmUgcGFn
ZSBsZXZlbCBtZXNzYWdlcyBpbnN0ZWFkIG9mIGNvbnRleHQuCisgICAgICAgIFRoZSBhdXRob3Ig
b2YgdGhpcyBwYXRjaCBpcyBUaW0gSG9ydG9uLCBJIGp1c3QgZmluaXNoZWQgaXQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluamVjdGVkQnVuZGxlQ2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UpOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cG9zdFN5bmNocm9u
b3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwog
MjAxNS0wMy0zMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMDM2NTY3NT4gW2lPU10gSW5jbHVkZSBBZGQgdG8gUmVhZGluZyBMaXN0
IGxpbmsgYWN0aW9uIG9ubHkgd2hlcmUgc3VwcG9ydGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNz
YWdlQm9keSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1w
bCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworfQor
Cit2b2lkIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgcmV0dXJuRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAgIFdL
VHlwZVJlZiByZXR1cm5EYXRhUmVmID0gMDsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdl
TmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIHJldHVybkRhdGEgPSBhZG9wdFJlZih0b0ltcGwocmV0
dXJuRGF0YVJlZikpOworfQorLyoKK1Bhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gdG9JbXBsKG1fY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YSh0b0FQSShwcm9jZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OworfQorKi8KK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaAorI2RlZmluZSBXZWJQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnRfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tQ
YWdlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEFQSSB7CitjbGFz
cyBPYmplY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7
CitwdWJsaWM6CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
ZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVy
bkRhdGEpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4MjIyMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsNiArNjA0LDM3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudCgKIH0KICNlbmRpZgogCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQpIHsKKyAg
ICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVu
dC0+aW5pdGlhbGl6ZShjbGllbnQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5h
bWUsIGNvbnN0IFdlYktpdDo6VXNlckRhdGEmIG1lc3NhZ2VCb2R5KQoreworICAgIGF1dG8qIHdl
YlByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oJmNvbm5lY3Rp
b24pOworICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5IHx8ICFtX2luamVjdGVkQnVuZGxlQ2xpZW50
KQorICAgICAgICByZXR1cm47CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodGhpcywgbWVzc2FnZU5hbWUsIHdlYlByb2Nlc3NQ
cm94eS0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0
KCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29u
c3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2VyRGF0YSYgcmV0dXJuVXNlckRhdGEpCit7Cisg
ICAgYXV0byogd2ViUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlv
bigmY29ubmVjdGlvbik7CisgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHkgfHwgIW1faW5qZWN0ZWRC
dW5kbGVDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
cmV0dXJuRGF0YTsKKyAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5kaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9j
ZXNzUHJveHktPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2JqZWN0KCkp
LmdldCgpLCByZXR1cm5EYXRhKTsKKyAgICByZXR1cm5Vc2VyRGF0YSA9IFVzZXJEYXRhKHdlYlBy
b2Nlc3NQcm94eS0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhyZXR1cm5EYXRhLmdldCgpKSk7
Cit9CisKKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKIHsKICAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMTgyMjIyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVk
ZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+IC8vIEZJWE1F
OiBOZWVkZWQgYnkgV2ViUGFnZVByb3h5TWVzc2FnZXMuaCBmb3IgRElDVEFUSU9OX0FMVEVSTkFU
SVZFUy4KICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtMzMwLDYgKzMzMSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxvYWRlckNsaWVudD4pOwogICAgIHZvaWQgc2V0UG9saWN5Q2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4pOworICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7CisgICAgV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KiBpbmplY3RlZEJ1bmRsZUNsaWVudCgpIHsgcmV0dXJu
IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQuZ2V0KCk7IH0KIAogICAgIEFQSTo6VUlDbGllbnQmIHVp
Q2xpZW50KCkgeyByZXR1cm4gKm1fdWlDbGllbnQ7IH0KICAgICB2b2lkIHNldFVJQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50Pik7CkBAIC0xNDE0LDYgKzE0MTcsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0IFVzZXJEYXRh
Jik7CiAKKyAgICB2b2lkIGhhbmRsZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5KTsKKyAgICB2b2lk
IGhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYgbWVzc2FnZUJvZHksIFVzZXJEYXRhJiByZXR1
cm5Vc2VyRGF0YSk7CisKICAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5Q2xpZW50OwpAQCAtMTQzMCw2ICsx
NDM2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4gbV9jb250ZXh0TWVudUNsaWVudDsKICNl
bmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+IG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTmF2aWdhdGlv
blN0YXRlPiBtX25hdmlnYXRpb25TdGF0ZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODIyMjIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjYsNiArNDI2LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KHN0cnVj
dCBXZWJLaXQ6OkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0IHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlh
dGVBY3Rpb24sIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAjZW5kaWYKKyAgICBIYW5kbGVN
ZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkg
V2FudHNDb25uZWN0aW9uCisgICAgSGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKFN0cmluZyBtZXNz
YWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkgLT4gKFdlYktpdDo6VXNlckRh
dGEgcmV0dXJuRGF0YSkgV2FudHNDb25uZWN0aW9uCiAKICAgICBIYW5kbGVBdXRvRmlsbEJ1dHRv
bkNsaWNrKFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4MjIyMikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMTQsNyArMTMxNCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lc3NhZ2Uo
SVBDOjoKICAgICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21D
b25uZWN0aW9uKCZjb25uZWN0aW9uKTsKICAgICBpZiAoIXdlYlByb2Nlc3NQcm94eSkKICAgICAg
ICAgcmV0dXJuOwotCiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwgd2ViUHJvY2Vzc1Byb3h5LT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZp
c2lvbiAxODIyMjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgxLDYgKzg4MSwxMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VG
aW5kTWF0Y2hlc0NsaWVudChXS1BhCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplRmlu
ZE1hdGNoZXNDbGllbnQod2tDbGllbnQpOwogfQogCit2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnRCYXNlKiB3a0NsaWVudCkKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEluamVj
dGVkQnVuZGxlQ2xpZW50KHdrQ2xpZW50KTsKK30KKwogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xp
ZW50KQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxODIyMjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlRmluZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1BhZ2VGaW5kTWF0Y2hlc0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VGb3JtQ2xp
ZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLUGFnZUxvYWRUeXBlcy5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Bh
Z2VMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlTmF2aWdhdGlvbkNsaWVu
dC5oPgpAQCAtMjE0LDYgKzIxNSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5k
Q2xpZW50KFcKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChX
S1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiBjbGllbnQp
OwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IFdLUGFnZUZvcm1DbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJh
c2UqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSogY2xpZW50KTsKIAogLy8gQSBjbGllbnQgY2FuIGltcGxlbWVudCBlaXRoZXIgYSBuYXZpZ2F0
aW9uIGNsaWVudCBvciBsb2FkZXIgYW5kIHBvbGljeSBjbGllbnRzLCBidXQgbmV2ZXIgYm90aC4K
IFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIGNsaWVudCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gK
KyNkZWZpbmUgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaAorCisjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwordHlwZWRlZiBXS1R5cGVSZWYgKCpXS1BhZ2VHZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOworCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudEJhc2UgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudEluZm87Cit9IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZTsKKwordHlwZWRlZiBz
dHJ1Y3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCB7CisgICAgV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOwor
CisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLUGFnZURpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGU7CisgICAgV0tQYWdlRGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlOworfSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwOworCisjZW5k
aWYgLy8gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE4MjIyMikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjAsNiArNjIwLDExIEBAIC0gKHZvaWQpc2V0Q3VzdG9tVXNlckFnZW50
OihOU1N0cmluZyAqKWMKICAgICBfcGFnZS0+c2V0Q3VzdG9tVXNlckFnZW50KGN1c3RvbVVzZXJB
Z2VudCk7CiB9CiAKKy0gKFdLUGFnZVJlZilfcGFnZUZvclRlc3RpbmcKK3sKKyAgICByZXR1cm4g
dG9BUEkoX3BhZ2UuZ2V0KCkpOworfQorCiAjcHJhZ21hIG1hcmsgaU9TLXNwZWNpZmljIG1ldGhv
ZHMKIAogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDE4MjIy
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQAogI2RlZmluZSBXS19XRUJfVklF
V19QUk9UT0NPTFMKICNlbmRpZgogCisvLyA/Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1BhZ2UqIFdLUGFnZVJlZjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBWaWV3U25hcHNo
b3Q7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC0xMDYsNiArMTA5LDggQEAgc3RydWN0IFByaW50
SW5mbzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNOb25XaGVlbEV2
ZW50czopIEJPT0wgX2lnbm9yZXNOb25XaGVlbEV2ZW50czsKICNlbmRpZgogCistIChXS1BhZ2VS
ZWYpX3BhZ2VGb3JUZXN0aW5nOworCiBAZW5kCiAKIFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQcm94
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgyMjIyKQorKysgU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC02MzgsNiArNjM4LDkgQEAKIAkJMkQ4NzEwMTcxODI4NDE1RDAwMThGQTAxIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ4NzEwMTUxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5oICovOyB9OwogCQkyRDg5NDlGMDE4MjA0NEY2MDBFODk4QUEgLyog
UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODk0OUVFMTgyMDQ0RjYwMEU4OThBQSAvKiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwICovOyB9OwogCQkyRDg5NDlGMTE4
MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg5NDlFRjE4MjA0
NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggKi87IH07
CisJCTJEOUVBMzBEMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5RUEz
MEMxQTk2Q0I1OTAwMkQyODA3IC8qIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkQ5RUEzMEYxQTk2
Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5RUEzMEUxQTk2Q0JGRjAwMkQy
ODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovOyB9OworCQkyRDlFQTMxMTFB
OTZEOUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUVBMzEwMUE5NkQ5RUIw
MDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwICovOyB9OwogCQkyREEw
NDlCMzE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUIxMTgwQ0NDRDMw
MEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwICovOyB9OwogCQkyREEwNDlCNDE4
MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEwNDlCMjE4MENDQ0QzMDBBQUZBOUUg
LyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggKi87IH07CiAJCTJEQTA0OUI3MTgwQ0NEMEEwMEFB
RkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMDQ5QjUxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBo
aWNzTGF5ZXJDQVJlbW90ZS5jcHAgKi87IH07CkBAIC0yNzk3LDYgKzI4MDAsOSBAQAogCQkyRDg3
MTAxNTE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDg5NDlFRTE4MjA0NEY2MDBFODk4
QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2lu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODk0OUVGMTgyMDQ0RjYwMEU4
OThBQSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAv
KiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDlFQTMwRTFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDlFQTMx
MDFBOTZEOUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTA0OUIxMTgwQ0NDRDMw
MEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FM
YXllclJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBMDQ5QjUxODBD
Q0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIzNiw2ICs2MjQyLDggQEAKIAkJCQk4MzcyREIyNzFB
Njc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJ
CQkJQkM3QjYyMDUxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJ
QkM3QjYyMDQxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oICovLAorCQkJCTJEOUVB
MzEwMUE5NkQ5RUIwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwICov
LAorCQkJCTJEOUVBMzBFMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCAqLywKIAkJCQlCQzExMUIwQjExMkY1RTRGMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5
LmNwcCAqLywKIAkJCQlCQzAzMkRDQjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUGFnZVByb3h5Lmgg
Ki8sCiAJCQkJQkNCRDM4RkExMjVCQUI5QTAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiAqLywKQEAgLTY0MDUsNiArNjQxMyw3IEBACiAJCQkJMUFCOEExRUYxODQwMEIwMDAwRTlB
RTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCAqLywKIAkJCQlCQzdCNjMzNjEyQTQ1QUJBMDBEMTc0
QTQgLyogV0tQYWdlR3JvdXAuY3BwICovLAogCQkJCUJDN0I2MzM1MTJBNDVBQkEwMEQxNzRBNCAv
KiBXS1BhZ2VHcm91cC5oICovLAorCQkJCTJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1Bh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCTFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2
OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCAqLywKIAkJCQkyRDczMDM3ODFBN0MyQjc1MDBGOEY0
ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oICovLAogCQkJCTFBQjhBMUVEMTg0MDBBQ0Iw
MEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLywKQEAgLTc2MzksNiArNzY0OCw3IEBA
CiAJCQkJNTFCQTI0NDQxODU4RUUzMDAwRUEyODExIC8qIEFzeW5jVGFzay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4
Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyRjU4OTkxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RThFRjkxNkIyMDkxQzAwRTkxNDI5
IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTc5LDYgKzgx
ODksNyBAQAogCQkJCTgzNzJEQjJGMUE2NzdENEEwMEM2OTdDNSAvKiBXS0RpYWdub3N0aWNMb2dn
aW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RTQxODRENDQ5ODAwNTFC
NjIyIC8qIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUI0NzRFODE4NEQ0NEQwMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEOUVBMzBEMUE5NkNCNTkwMDJEMjgwNyAv
KiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQy
QkMxQTZCMEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQjQ3NEUwMTg0RDQ0NkEwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEUyMTg0RDQ0ODAwMDUxQjYy
MiAvKiBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTk5MTksNiAr
OTkzMCw3IEBACiAJCQkJNTFGQjA4RkYxNjM5REUxQTAwRUMzMjRBIC8qIFdlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1
OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDNC
OTQ4NDgxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkyRDlFQTMxMTFBOTZEOUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTNDMkE5MUEzMjU3MkIwMDRFOEM3
MCAvKiBXZWJzaXRlRGF0YVN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFREJBODQ3MTlG
REEwMEEwMDY4NjZBNSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE1MkMwRjcxQTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAJKHJldmlzaW9uIDE4MjIyMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcy
LDMgKzU3MiwxNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFVzZVRlc3RpbmdWaWV3cG9ydENvCiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVc2VUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uKHVz
ZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24pOwogfQogI2VuZGlmCisKK3ZvaWQgV0tCdW5k
bGVQYWdlUG9zdE1lc3NhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lUmVmLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHlSZWYpCit7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5wb3N0TWVzc2FnZSh0b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiksIHRvSW1wbCht
ZXNzYWdlQm9keVJlZikpOworfQorCit2b2lkIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lUmVm
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHlSZWYsIFdLVHlwZVJlZiogcmV0dXJuRGF0YVJlZikKK3sK
KyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5wb3N0U3luY2hyb25vdXNNZXNzYWdlKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVmKSwgdG9J
bXBsKG1lc3NhZ2VCb2R5UmVmKSwgcmV0dXJuRGF0YSk7CisgICAgaWYgKHJldHVybkRhdGFSZWYp
CisgICAgICAgICpyZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKK30KKwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAx
ODIyMjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDkgQEAgV0tfRVhQ
T1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUAogCiBXS19FWFBPUlQgYm9vbCBXS0J1
bmRsZVBhZ2VJc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAK
K1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCShyZXZpc2lvbiAxODIyMjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MzIsNCArNDgzMiwyMSBAQCB2b2lk
IFdlYlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvckZyCiAgICAgdXBkYXRlTWFpbkZyYW1l
U2Nyb2xsT2Zmc2V0UGlubmluZygpOwogfQogCit2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKK3sKKyAg
ICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0
YSh3ZWJQcm9jZXNzLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpKSkpOwor
fQorCit2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiByZXR1cm5EYXRhKQoreworICAgIFVzZXJEYXRhIHJldHVyblVzZXJEYXRhOworCisgICAgYXV0
byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOworICAgIGlmICghc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCBVc2VyRGF0YSh3ZWJQcm9jZXNzLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVz
c2FnZUJvZHkpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZVN5bmNocm9ub3VzTWVz
c2FnZTo6UmVwbHkocmV0dXJuVXNlckRhdGEpKSkKKyAgICAgICAgcmV0dXJuRGF0YSA9IG51bGxw
dHI7CisgICAgZWxzZQorICAgICAgICByZXR1cm5EYXRhID0gd2ViUHJvY2Vzcy50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHJldHVyblVzZXJEYXRhLm9iamVjdCgpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHJldmlzaW9uIDE4MjIyMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2NSw2ICs4NjUsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFBhZ2VBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OlBhZ2VBY3Rpdml0
eVN0YXRlOjpGbGFncyk7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSk7CisgICAgdm9pZCBwb3N0U3luY2hy
b25vdXNNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNz
YWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSk7CisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgyMjIyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsODAgQEAKKzIwMTUtMDMtMzEgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KKworICAgICAgICBJbmplY3RlZCBidW5kbGUgbWVzc2FnZXMgc2hvdWxkIGJlIGF0
IHRoZSBwYWdlIGxldmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQzMjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRpbmcgV2ViS2l0VGVzdFJ1bm5lciB0byB1c2UgdGhlIG5ldyBwYWdlIGxl
dmVsIG1lc3NhZ2luZy4KKyAgICAgICAgVGhlIGF1dGhvciBvZiB0aGlzIHBhdGNoIGlzIFRpbSBI
b3J0b24sIEkganVzdCBmaW5pc2hlZCBpdC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdD
b250cm9sbGVyOjptb3VzZU1vdmVUbyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6OmxlYXBGb3J3YXJkKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6c2NoZWR1bGVBc3luY2hyb25vdXNDbGljayk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmtleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9s
bGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRpbmdDb250cm9sbGVyOjptb3VzZVNjcm9sbEJ5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y29udGludW91c01vdXNlU2Ny
b2xsQnkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBv
aW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dXBkYXRlVG91Y2hQ
b2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNoTW9k
aWZpZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaFBv
aW50UmFkaXVzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hT
dGFydCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoRW5kKToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hDYW5jZWwpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjbGVhclRvdWNoUG9pbnRzKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYW5jZWxUb3VjaFBvaW50KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRvbmUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6b3V0cHV0VGV4dCk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0TmV3
QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
cG9zdEFkZENocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
cG9zdFJlbW92ZUNocm9tZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6cG9zdEZvY3VzV2ViVmlldyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0
U2V0QmFja2luZ1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBv
c3RTZXRXaW5kb3dJc0tleSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0U2lt
dWxhdGVXZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
Ojpwb3N0U2V0QWRkc1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldFVzZXJNZWRpYVBlcm1pc3Npb24pOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0SGlkZGVuKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
c2hvdWxkUHJvY2Vzc1dvcmtRdWV1ZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpw
cm9jZXNzV29ya1F1ZXVlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnF1ZXVlQmFj
a05hdmlnYXRpb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cXVldWVGb3J3YXJk
TmF2aWdhdGlvbik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpxdWV1ZUxvYWQpOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2FkSFRNTFN0cmluZyk6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpxdWV1ZVJlbG9hZCk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpxdWV1ZUxvYWRpbmdTY3JpcHQpOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZTo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQpOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpzZWN1cmVFdmVudElucHV0SXNFbmFibGVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6c2V0QmxvY2tBbGxQbHVnaW5zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdl
YlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6aW52b2tlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxNS0wMy0zMSAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50
IEV4dGVuc2lvbnM6IHNwbGl0IHRoZSBzdGF0ZSBtYWNoaW5lcyB0byBtaW5pbWl6ZSBwcmVmaXgg
c3RhdGVzCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTgyMjIyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMiBAQAogI2luY2x1ZGUgPFdlYktp
dC9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
TnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFn
ZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmdDRi5oPgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTUy
MSw2ICs1MjMsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAog
ICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQobV9tYWluV2ViVmlldy0+
cGFnZSgpLCAmcGFnZU5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiAKKworICAgIC8vIHRoaXMgc2hv
dWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8KKyAgICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudFYwIGluamVjdGVkQnVuZGxlQ2xpZW50ID0geworICAgICAgICB7IDAsIHRoaXMgfSwKKyAg
ICAgICAgZGlkUmVjZWl2ZVBhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLAorICAgICAgICBk
aWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKy8vICAg
ICAgICAwIC8vIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YQorICAgIH07
CisgICAgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KG1fbWFpbldlYlZpZXctPnBh
Z2UoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UpOworCiAgICAgbV9tYWluV2ViVmlldy0+
ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKTsKIAogICAgIC8vIEdlbmVyYWxseSwgdGhlIHRlc3RzIHNo
b3VsZCBkZWZhdWx0IHRvIHJ1bm5pbmcgYXQgMXguIHVwZGF0ZVdpbmRvd1NjYWxlRm9yVGVzdCgp
IHdpbGwgYWRqdXN0IHRoZSBzY2FsZSB0bwpAQCAtNjIxLDcgKzYzMyw3IEBAIGJvb2wgVGVzdENv
bnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3QKICAgICB9CiAgICAgV0tEaWN0aW9uYXJ5U2V0
SXRlbShyZXNldE1lc3NhZ2VCb2R5LmdldCgpLCBhbGxvd2VkSG9zdHNLZXkuZ2V0KCksIGFsbG93
ZWRIb3N0c1ZhbHVlLmdldCgpKTsKIAotICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgcmVzZXRNZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VU
b0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCByZXNldE1lc3NhZ2VCb2R5LmdldCgpKTsKIAog
ICAgIFdLQ29udGV4dFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmNvbnRleHQoKSwgZmFsc2UpOwogCkBAIC05NDcsNiArOTU5LDE4IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm8KICAgICAqcmV0dXJuRGF0YSA9IHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VO
YW1lLCBtZXNzYWdlQm9keSkubGVha1JlZigpOwogfQogCisvLyBXS1BhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudAorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBX
S1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3Rh
dGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdl
Qm9keSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c1Bh
Z2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgKnJldHVybkRhdGEgPSBzdGF0aWNfY2Fz
dDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVz
c2FnZUJvZHkpLmxlYWtSZWYoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1By
b2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
bykKIHsKICAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKS0+bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTgyMjIyKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYs
NiArMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHksIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25z
dCB2b2lkKik7CisKKyAgICAvLyBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudAorICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYs
IFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZv
aWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCopOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAgICAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMTgyMjIy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQog
ICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB0aW1lb3V0VmFsdWUgPSBhZG9wdFdLKFdLVUlu
dDY0Q3JlYXRlKG1fdGltZW91dCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oYmVnaW5UZXN0
TWVzc2FnZUJvZHkuZ2V0KCksIHRpbWVvdXRLZXkuZ2V0KCksIHRpbWVvdXRWYWx1ZS5nZXQoKSk7
CiAKLSAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1l
c3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAgIFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5ydW5VbnRpbChtX2dvdEluaXRpYWxSZXNwb25zZSwgVGVzdENv
bnRyb2xsZXI6OnNob3J0VGltZW91dCk7CiAgICAgaWYgKCFtX2dvdEluaXRpYWxSZXNwb25zZSkg
ewpAQCAtMzY5LDIxICszNjksMjEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VGcgogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKSB7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5tYWluV2ViVmlldygpLT5hZGRDaHJvbWVJbnB1dEZpZWxkKCk7CiAgICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7Ci0g
ICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAg
IFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUNocm9tZUlucHV0RmllbGQiKSkgewogICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZCgpOwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsUmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZENhbGxiYWNrIikpOwotICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIDApOworICAgICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRm9jdXNXZWJWaWV3Iikp
IHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPm1h
a2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrIikpOwotICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z
OTMsNyArMzkzLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgog
ICAgICAgICBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IoVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgYmFja2luZ1NjYWxlRmFjdG9yKTsK
IAogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsU2V0QmFja2luZ1NjYWxlRmFjdG9y
Q2FsbGJhY2siKSk7Ci0gICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgMCk7CisgICAgICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJQcm9jZXNzV29ya1F1ZXVlIikpIHsK
ICAgICAgICAgaWYgKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS53b3JrUXVldWVNYW5hZ2Vy
KCkucHJvY2Vzc1dvcmtRdWV1ZSgpKSB7CiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJXb3JrUXVldWVQcm9jZXNzZWRDYWxsYmFjayIpKTsKLSAgICAgICAgICAgIFdLQ29udGV4dFBv
c3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29u
dGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgICAgICBXS1BhZ2VQb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDE4MjIyMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw4ICsyMDgs
OCBAQCBzdGF0aWMgV0tNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVNb3VzCiAKIHZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VEb3duKGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9k
aWZpZXJBcnJheSkgCiB7Ci0gICAgYXV0byYgaW5qZWN0ZWRCdW5nbGUgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCk7Ci0gICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBpbmplY3RlZEJ1bmds
ZS5wYWdlKCktPnBhZ2UoKTsKKyAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKTsKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IGluamVjdGVkQnVu
ZGxlLnBhZ2UoKS0+cGFnZSgpOwogICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRs
ZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1
bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQoZnJhbWUpOwogICAgIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllckFycmF5KGNvbnRleHQsIG1vZGlmaWVyQXJyYXkp
OwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VE
b3duKGkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNz
YWdlQm9keShBZG9wdFdLLCBjcmVhdGVNb3VzZU1lc3NhZ2VCb2R5KE1vdXNlRG93biwgYnV0dG9u
LCBtb2RpZmllcnMpKTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShpbmpl
Y3RlZEJ1bmdsZS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShwYWdlLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb3VzZVVwKGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkKQEAgLTIzMCw3
ICsyMzAsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlVXAoaW50CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOwogICAgIFdLUmV0
YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRv
cHRXSywgY3JlYXRlTW91c2VNZXNzYWdlQm9keShNb3VzZVVwLCBidXR0b24sIG1vZGlmaWVycykp
OwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZVRvKGludCB4
LCBpbnQgeSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
Om1vdXNlTW92ZVRvCiAgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IHlSZWYoQWRvcHRXSywg
V0tEb3VibGVDcmVhdGUoeSkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CiAKLSAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5
LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
TmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQg
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKQEAg
LTI2Niw3ICsyNjYsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmxlYXBGb3J3YXJk
CiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHRpbWVSZWYoQWRvcHRXSywgV0tVSW50NjRD
cmVhdGUobWlsbGlzZWNvbmRzKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCB0aW1lS2V5LmdldCgpLCB0aW1lUmVmLmdldCgpKTsKIAotICAg
IFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVz
c2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0K
IAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNr
KCkKQEAgLTI3OCwxMSArMjc4LDExIEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2No
ZWR1bGVBc3kKIAogICAgIC8vIEFzeW5jaHJvbm91cyBtb3VzZSBkb3duLgogICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1vdXNlRG93bk1lc3NhZ2VCb2R5KEFkb3B0V0ss
IGNyZWF0ZU1vdXNlTWVzc2FnZUJvZHkoTW91c2VEb3duLCBidXR0b24sIG1vZGlmaWVycykpOwot
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBtb3VzZURvd25NZXNzYWdlQm9keS5n
ZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBtb3Vz
ZURvd25NZXNzYWdlQm9keS5nZXQoKSk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgbW91c2UgdXAu
CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gbW91c2VVcE1lc3NhZ2VC
b2R5KEFkb3B0V0ssIGNyZWF0ZU1vdXNlTWVzc2FnZUJvZHkoTW91c2VVcCwgYnV0dG9uLCBtb2Rp
ZmllcnMpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgbW91c2VVcE1lc3Nh
Z2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0
KCksIG1vdXNlVXBNZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBXS1JldGFpblB0cjxX
S011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoSlNTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQpAQCAtMzE3
LDcgKzMxNyw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1MKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4ga2V5RG93bk1lc3NhZ2VCb2R5ID0gY3Jl
YXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgbW9kaWZpZXJzLCBsb2NhdGlvbik7CiAKLSAgICBX
S0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJv
ZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3Nh
Z2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmlu
Z1JlZiBrZXkpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
OjpzY2hlZHVsZUFzeQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNl
bmRlciIpKTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBrZXlEb3du
TWVzc2FnZUJvZHkgPSBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwIC8qIG1vZGlmaWVy
cyAqLywgMCAvKiBsb2NhdGlvbiAqLyk7CiAKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5n
ZXQoKSwga2V5RG93bk1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZU5hbWUuZ2V0KCksIGtleURvd25NZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIHZv
aWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCkBA
IC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZVNjcm9s
bAogICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB5UmVmKEFkb3B0V0ssIFdLRG91YmxlQ3Jl
YXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCks
IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQg
eCwgaW50IHksIEpTU3RyaW5nUmVmIHBoYXNlU3RyLCBKU1N0cmluZ1JlZiBtb21lbnR1bVN0ciwg
Ym9vbCBhc3luY1Njcm9sbGluZykKQEAgLTM5OCw5ICszOTgsOSBAQCB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsCiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBtb21lbnR1bUtleS5nZXQoKSwgbW9tZW50dW1SZWYuZ2V0
KCkpOwogCiAgICAgaWYgKGFzeW5jU2Nyb2xsaW5nKQotICAgICAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSk7CisgICAgICAgIFdL
QnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICAg
ICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2
ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwgYm9vbCBwYWdl
ZCkKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRp
bnVvdXNNCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHBhZ2VkUmVmKEFkb3B0V0ssIFdL
VUludDY0Q3JlYXRlKHBhZ2VkKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCBwYWdlZEtleS5nZXQoKSwgcGFnZWRSZWYuZ2V0KCkpOwogCi0g
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwog
fQogCiBKU1ZhbHVlUmVmIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRleHRDbGljaygpCkBA
IC01MTksNyArNTE5LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBv
aQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5UmVmKEFkb3B0V0ssIFdLVUludDY0Q3Jl
YXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCks
IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCkBA
IC01NDMsNyArNTQzLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRhdGVUb3Vj
aAogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5UmVmKEFkb3B0V0ssIFdLVUludDY0Q3Jl
YXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCks
IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kaWZpZXIoY29uc3QgSlNTdHJpbmdSZWYgJm1vZGlmaWVy
LCBib29sIGVuYWJsZSkKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6OnNldFRvdWNoTW9kCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGVuYWJsZVJl
ZihBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShlbmFibGUpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGVuYWJsZUtleS5nZXQoKSwgZW5hYmxl
UmVmLmdldCgpKTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0
KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+
cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCAwKTsKIH0KIAogCkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjpzZXRUb3VjaFBvaQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5
UmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKHJhZGl1c1kpKTsKICAgICBXS0RpY3Rpb25hcnlT
ZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0
KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZl
bnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCks
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoU3RhcnQoKQpA
QCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hTdGFy
dCgKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvdWNoU3RhcnQiKSk7CiAgICAgV0tEaWN0
aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5
LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsK
KyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6dG91Y2hNb3ZlKCkKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJU
b3VjaE1vdmUiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAK
LSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7
CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQoKQpAQCAtNjMwLDcg
KzYzMCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQoKQogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hFbmQiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRl
bShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJN
ZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VO
YW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRs
ZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5w
YWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
dG91Y2hDYW5jZWwoKQpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6dG91Y2hDYW5jZWwKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvdWNoQ2FuY2Vs
IikpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOwogCi0gICAgV0tC
dW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVz
c2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNsZWFyVG91Y2hQb2ludHMoKQpAQCAtNjU0LDcg
KzY1NCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2xlYXJUb3VjaFAKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkNsZWFyVG91Y2hQb2ludHMiKSk7CiAgICAgV0tEaWN0aW9u
YXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5Lmdl
dCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91
c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAg
ICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZl
bnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KQpAQCAtNjcwLDcgKzY3MCw3IEBA
IHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWMKICAgICBXS1JldGFpblB0
cjxXS1VJbnQ2NFJlZj4gaW5kZXhSZWYoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoaW5kZXgpKTsK
ICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGlu
ZGV4S2V5LmdldCgpLCBpbmRleFJlZi5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsK
KyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6Y2FuY2VsVG91Y2hQb2ludChpbnQgaW5kZXgpCkBAIC02ODYsNyArNjg2LDcg
QEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYW5jZWxUb3VjaAogICAgIFdLUmV0YWlu
UHRyPFdLVUludDY0UmVmPiBpbmRleFJlZihBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShpbmRleCkp
OwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
aW5kZXhLZXkuZ2V0KCksIGluZGV4UmVmLmdldCgpKTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIEV2ZW50
U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDAp
OworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgp
LCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KICNlbmRpZgogCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMTgyMjIyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS0J1bmRsZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmdDRi5oPgogI2luY2x1ZGUgPFdlYktp
dC9XZWJLaXQyX0MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTMzLDYgKzEzNCwxMyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpyZXNldExvY2FsU2V0dGluZ3MoCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRp
ZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHkpCiB7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpOworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3Nh
Z2UobV9idW5kbGUsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2FnZUJvZHkuZ2V0
KCkpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBt
ZXNzYWdlQm9keSkKK3sKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkJlZ2luVGVzdCIpKSB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CiAg
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpOwpAQCAtMTQ5LDEyICsxNTcsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoVwogCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhY2tN
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNrIikp
OwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZUJvZHkoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKLSAgICAgICAg
V0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01l
c3NhZ2VCb2R5LmdldCgpKTsKKyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwg
YWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAgICAgICBi
ZWdpblRlc3RpbmcobWVzc2FnZUJvZHlEaWN0aW9uYXJ5KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiUmVzZXQiKSkgewogICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOwogICAgICAgICBB
U1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgp
KTsKQEAgLTE4Myw3ICsxOTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZShXCiAgICAgICAgIHJlc2V0TG9jYWxTZXR0aW5ncygpOwogICAgICAgICBtX3Rlc3RSdW5u
ZXItPnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICAgICAgcGFn
ZSgpLT5yZXNldEFmdGVyVGVzdCgpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6cGFnZSgpLT5y
ZXNldEFmdGVyVGVzdCgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDYsMjQgKzIx
NCwxNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZShXCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsU2V0QmFja2lu
Z1NjYWxlRmFjdG9yQ2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxTZXRC
YWNraW5nU2NhbGVGYWN0b3JDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47Ci0gICAgfSAgIAor
ICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiV29ya1F1ZXVlUHJvY2Vzc2VkQ2FsbGJhY2siKSkgewogICAgICAgICBpZiAoIXRvcExvYWRp
bmdGcmFtZSgpICYmICFtX3Rlc3RSdW5uZXItPndhaXRUb0R1bXAoKSkKLSAgICAgICAgICAgIHBh
Z2UoKS0+ZHVtcCgpOworICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnBhZ2UoKS0+ZHVtcCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGVycm9yTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkVycm9yIikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VCb2R5
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwotICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVy
cm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwotfQotCi12b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSkKLXsKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiRXJyb3IiKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVua25vd24iKSk7
Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQo
KSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2Uo
cGFnZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CiB9
CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmJvb2xlYW5Gb3JLZXkoV0tEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKQEAgLTMxMCw3ICszMTEsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpkb25lKCkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1
bHRLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3Vs
dCIpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGRvbmVNZXNzYWdlQm9keS5nZXQoKSwgYXVk
aW9SZXN1bHRLZXkuZ2V0KCksIG1fYXVkaW9SZXN1bHQuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQ
b3N0TWVzc2FnZShtX2J1bmRsZSwgZG9uZU1lc3NhZ2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJv
ZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBk
b25lTWVzc2FnZU5hbWUuZ2V0KCksIGRvbmVNZXNzYWdlQm9keS5nZXQoKSk7CiAKICAgICBjbG9z
ZU90aGVyUGFnZXMoKTsKIApAQCAtMzQzLDY3ICszNDQsNjcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6b3V0cHV0VGV4dChjb25zdCBTdAogICAgICAgICByZXR1cm47CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJUZXh0T3V0cHV0IikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvdXRwdXQudXRm
OCgpLmRhdGEoKSkpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VO
YW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3Nh
Z2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1
ZShib29sIHZhbHVlKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVmb3JlVW5sb2FkUmV0
dXJuVmFsdWUiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShB
ZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdL
QnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0QWRkQ2hy
b21lSW5wdXRGaWVsZCgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBZGRDaHJvbWVJbnB1
dEZpZWxkIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1l
LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0UmVt
b3ZlQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVD
aHJvbWVJbnB1dEZpZWxkIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1l
c3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
Ojpwb3N0Rm9jdXNXZWJWaWV3KCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZvY3VzV2Vi
VmlldyIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldEJh
Y2tpbmdTY2FsZUZhY3Rvcihkb3VibGUgYmFja2luZ1NjYWxlRmFjdG9yKQogewogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU2V0QmFja2luZ1NjYWxlRmFjdG9yIikpOwogICAgIFdLUmV0YWluUHRy
PFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZShiYWNraW5n
U2NhbGVGYWN0b3IpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNz
YWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkp
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0V2luZG93SXNLZXkoYm9vbCBpc0tl
eSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdpbmRvd0lzS2V5IikpOwogICAgIFdL
UmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3Jl
YXRlKGlzS2V5KSk7Ci0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKG1fYnVuZGxl
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxl
UGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBv
c3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQog
ewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIp
KTsKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tV
SW50NjRDcmVhdGUobm90aWZpY2F0aW9uSUQpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1f
YnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVz
c2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0QWRkc1Zp
c2l0ZWRMaW5rcyhib29sIGFkZHNWaXNpdGVkTGlua3MpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJTZXRBZGRzVmlzaXRlZExpbmtzIikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJl
Zj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGFkZHNWaXNpdGVkTGlua3Mp
KTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQog
ewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uIikpOwog
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29s
ZWFuQ3JlYXRlKGVuYWJsZWQpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBv
c3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwg
Ym9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRp
dHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRp
bmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKQEAg
LTQ1NiwyMCArNDU3LDIwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldE1vY2tHZW9sb2NhdGlv
blAKICAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4gc3BlZWRXSyhBZG9wdFdLLCBXS0RvdWJs
ZUNyZWF0ZShzcGVlZCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obWVzc2FnZUJvZHkuZ2V0
KCksIHNwZWVkS2V5V0suZ2V0KCksIHNwZWVkV0suZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0
TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsK
KyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdLU3RyaW5nUmVmIGVycm9y
TWVzc2FnZSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvciIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVu
ZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBXS0J1bmRsZVBhZ2VQ
b3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2Fn
ZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFVzZXJNZWRpYVBlcm1pc3Npb24oYm9v
bCBlbmFibGVkKQogewogICAgIGF1dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTZXRVc2VyTWVkaWFQZXJtaXNzaW9uIikpOwogICAgIGF1dG8g
bWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShlbmFibGVkKSk7Ci0gICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1
bmRsZTo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBlcm1pc3Np
dmUpCkBAIC00ODYsNyArNDg3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q3VzdG9tUG9s
aWN5RGVsZQogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gcGVybWlzc2l2ZVdLKEFkb3B0
V0ssIFdLQm9vbGVhbkNyZWF0ZShwZXJtaXNzaXZlKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRl
bShtZXNzYWdlQm9keS5nZXQoKSwgcGVybWlzc2l2ZUtleVdLLmdldCgpLCBwZXJtaXNzaXZlV0su
Z2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShw
YWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SGlkZGVuKGJvb2wgaGlkZGVuKQpAQCAtNDk4LDE0
ICs0OTksMTQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SGlkZGVuKGJvb2wgaGlkZAogICAg
IFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gaXNJbml0aWFsV0soQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKGhpZGRlbikpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obWVzc2FnZUJvZHkuZ2V0
KCksIGlzSW5pdGlhbEtleVdLLmdldCgpLCBpc0luaXRpYWxXSy5nZXQoKSk7CiAKLSAgICBXS0J1
bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRDYWNoZU1vZGVsKGludCBtb2RlbCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlNldENhY2hlTW9kZWwiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1lc3NhZ2VC
b2R5KEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKG1vZGVsKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVz
c2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAg
ICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6c2hvdWxk
UHJvY2Vzc1dvcmtRdWV1ZSgpIGNvbnN0CkBAIC01MTUsNyArNTE2LDcgQEAgYm9vbCBJbmplY3Rl
ZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtRdQogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJ
c1dvcmtRdWV1ZUVtcHR5IikpOwogICAgIFdLVHlwZVJlZiByZXN1bHRUb1Bhc3MgPSAwOwotICAg
IFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0
KCksIDAsICZyZXN1bHRUb1Bhc3MpOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCAmcmVzdWx0VG9QYXNz
KTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGlzRW1wdHkoQWRvcHRXSywgc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHRUb1Bhc3MpKTsKIAogICAgIHJldHVybiAhV0tCb29s
ZWFuR2V0VmFsdWUoaXNFbXB0eS5nZXQoKSk7CkBAIC01MjQsNyArNTI1LDcgQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtRdQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cHJv
Y2Vzc1dvcmtRdWV1ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQcm9jZXNzV29ya1F1
ZXVlIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdl
dCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1ZUJhY2tO
YXZpZ2F0aW9uKHVuc2lnbmVkIGhvd0ZhckJhY2t3YXJkKQpAQCAtNTMzLDcgKzUzNCw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlQmFja05hdmlnYXRpb24KIAogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiUXVldWVCYWNrTmF2aWdhdGlvbiIpKTsKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2
NFJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoaG93RmFyQmFja3dhcmQp
KTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlOjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKHVuc2lnbmVkIGhvd0ZhckZv
cndhcmQpCkBAIC01NDIsNyArNTQzLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVGb3J3
YXJkTmF2aWdhdAogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJRdWV1ZUZvcndhcmROYXZpZ2F0
aW9uIikpOwogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBtZXNzYWdlQm9keShBZG9wdFdL
LCBXS1VJbnQ2NENyZWF0ZShob3dGYXJGb3J3YXJkKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBX
S0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2Fk
KFdLU3RyaW5nUmVmIHVybCwgV0tTdHJpbmdSZWYgdGFyZ2V0KQpAQCAtNTU5LDcgKzU2MCw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9hZChXS1N0cmluZ1IKICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gdGFyZ2V0S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJ0YXJnZXQiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShsb2FkRGF0YS5nZXQo
KSwgdGFyZ2V0S2V5LmdldCgpLCB0YXJnZXQpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZSht
X2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRhLmdldCgpKTsKKyAgICBXS0J1bmRs
ZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWRE
YXRhLmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2FkSFRNTFN0cmlu
ZyhXS1N0cmluZ1JlZiBjb250ZW50LCBXS1N0cmluZ1JlZiBiYXNlVVJMLCBXS1N0cmluZ1JlZiB1
bnJlYWNoYWJsZVVSTCkKQEAgLTU4Myw3ICs1ODQsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpx
dWV1ZUxvYWRIVE1MU3RyaW5nCiAgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obG9hZERhdGEu
Z2V0KCksIHVucmVhY2hhYmxlVVJMS2V5LmdldCgpLCB1bnJlYWNoYWJsZVVSTCk7CiAgICAgfQog
Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxv
YWREYXRhLmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRhLmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cXVldWVSZWxvYWQoKQpAQCAtNTkxLDcgKzU5Miw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnF1ZXVlUmVsb2FkKCkKICAgICBtX3VzZVdvcmtRdWV1ZSA9IHRydWU7CiAKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlF1ZXVlUmVsb2FkIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3Nh
Z2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0
TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlOjpxdWV1ZUxvYWRpbmdTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQpA
QCAtNTk5LDcgKzYwMCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9hZGluZ1Njcmlw
dCgKICAgICBtX3VzZVdvcmtRdWV1ZSA9IHRydWU7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlF1ZXVlTG9hZGluZ1NjcmlwdCIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxl
LCBtZXNzYWdlTmFtZS5nZXQoKSwgc2NyaXB0KTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2Fn
ZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIHNjcmlwdCk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTm9uTG9hZGluZ1NjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQp
CkBAIC02MDcsNyArNjA4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVOb25Mb2FkaW5n
U2NyaQogICAgIG1fdXNlV29ya1F1ZXVlID0gdHJ1ZTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiUXVldWVOb25Mb2FkaW5nU2NyaXB0IikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9i
dW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBzY3JpcHQpOworICAgIFdLQnVuZGxlUGFnZVBvc3RN
ZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgc2NyaXB0KTsKIH0KIAog
Ym9vbCBJbmplY3RlZEJ1bmRsZTo6aXNBbGxvd2VkSG9zdChXS1N0cmluZ1JlZiBob3N0KQpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCShyZXZpc2lvbiAxODIyMjIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsMjEgKzgw
NCwyMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEhhbmRsZXNBdXRoZW50aWNhdGlvCiB7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jv
b2xlYW5DcmVhdGUoaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykpOwotICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpz
ZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmIHVzZXJuYW1lKQogewogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSIpKTsKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoSlNTdHJpbmcodXNlcm5hbWUpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VC
b2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aGVudGljYXRpb25QYXNzd29y
ZChKU1N0cmluZ1JlZiBwYXNzd29yZCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEF1
dGhlbnRpY2F0aW9uUGFzc3dvcmQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKHBhc3N3b3JkKSk7
Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVu
ZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5k
bGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiBib29sIFRl
c3RSdW5uZXI6OnNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQoKSBjb25zdApAQCAtODI2LDcgKzgy
Niw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6c2VjdXJlRXZlbnRJbnB1dElzRW5hYmwKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQiKSk7CiAgICAgV0tUeXBl
UmVmIHJldHVybkRhdGEgPSAwOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IDAsICZyZXR1cm5EYXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIDAsICZyZXR1cm5EYXRhKTsKICAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSk7CiB9CiAKQEAgLTgzNCw3ICs4MzQs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEJsb2NrQWxsUGx1Z2lucyhib29sCiB7CiAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJTZXRCbG9ja0FsbFBsdWdpbnMiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUoc2hvdWxk
QmxvY2spKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAg
ICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFn
ZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAK
IEpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZERkdDb21waWxlcyhKU1ZhbHVlUmVmIHRo
ZUZ1bmN0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249935</attachid>
            <date>2015-04-01 11:25:16 -0700</date>
            <delta_ts>2015-04-01 15:32:18 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>pagelevelbundlemessages.txt</filename>
            <type>text/plain</type>
            <size>72065</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTAzLTMxICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG1l
c3NhZ2VzIHNob3VsZCBiZSBhdCB0aGUgcGFnZSBsZXZlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCB0aGUgbWVzc2FnZXMgYmV0d2VlbiB0aGUg
aW5qZWN0ZWQgYnVuZGxlIGFuZCB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBzaG91bGQgYmUgcGFn
ZSBsZXZlbCBtZXNzYWdlcyBpbnN0ZWFkIG9mIGNvbnRleHQuCisgICAgICAgIFRoZSBhdXRob3Ig
b2YgdGhpcyBwYXRjaCBpcyBUaW0gSG9ydG9uLCBJIGp1c3QgZmluaXNoZWQgaXQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluamVjdGVkQnVuZGxlQ2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UpOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cG9zdFN5bmNocm9u
b3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwog
MjAxNS0wMy0zMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMDM2NTY3NT4gW2lPU10gSW5jbHVkZSBBZGQgdG8gUmVhZGluZyBMaXN0
IGxpbmsgYWN0aW9uIG9ubHkgd2hlcmUgc3VwcG9ydGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNz
YWdlQm9keSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1w
bCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworfQor
Cit2b2lkIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgcmV0dXJuRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAgIFdL
VHlwZVJlZiByZXR1cm5EYXRhUmVmID0gMDsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdl
TmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIHJldHVybkRhdGEgPSBhZG9wdFJlZih0b0ltcGwocmV0
dXJuRGF0YVJlZikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKKyNkZWZpbmUgV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2lu
Y2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBB
UEkgeworY2xhc3MgT2JqZWN0OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdL
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjA+IFZlcnNpb25zOworfTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50QmFzZT4geworcHVibGljOgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2Vi
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiByZXR1cm5EYXRhKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDYg
KzYwNCwzNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQoCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0
IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KQoreworICAgIGlmICghY2xp
ZW50KSB7CisgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBudWxscHRyOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRC
dW5kbGVDbGllbnQtPmluaXRpYWxpemUoY2xpZW50KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBjb25zdCBXZWJLaXQ6OlVzZXJEYXRhJiBtZXNzYWdlQm9keSkKK3sKKyAg
ICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9u
KCZjb25uZWN0aW9uKTsKKyAgICBpZiAoIXdlYlByb2Nlc3NQcm94eSB8fCAhbV9pbmplY3RlZEJ1
bmRsZUNsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3
ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2Jq
ZWN0KCkpLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3Vz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJE
YXRhKQoreworICAgIGF1dG8qIHdlYlByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJv
bUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24pOworICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5IHx8ICFt
X2luamVjdGVkQnVuZGxlQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHJldHVybkRhdGE7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFt
ZSwgd2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5
Lm9iamVjdCgpKS5nZXQoKSwgcmV0dXJuRGF0YSk7CisgICAgcmV0dXJuVXNlckRhdGEgPSBVc2Vy
RGF0YSh3ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMocmV0dXJuRGF0
YS5nZXQoKSkpOworfQorCisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vz
cygpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBA
QAogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
PiAvLyBGSVhNRTogTmVlZGVkIGJ5IFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmggZm9yIERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMuCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTMz
MCw2ICszMzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+KTsKICAgICB2b2lkIHNldExvYWRlckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+KTsKICAgICB2b2lkIHNldFBvbGljeUNs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+KTsKKyAgICB2b2lkIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSop
OworICAgIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCogaW5qZWN0ZWRCdW5kbGVDbGllbnQo
KSB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlQ2xpZW50LmdldCgpOyB9CiAKICAgICBBUEk6OlVJ
Q2xpZW50JiB1aUNsaWVudCgpIHsgcmV0dXJuICptX3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRV
SUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4pOwpAQCAtMTQxNCw2ICsxNDE3
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25z
dCBVc2VyRGF0YSYpOwogCisgICAgdm9pZCBoYW5kbGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7
CisgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2Vy
RGF0YSYgcmV0dXJuVXNlckRhdGEpOworCiAgICAgUGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRlckNsaWVudD4gbV9sb2FkZXJDbGllbnQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiBtX3BvbGljeUNsaWVudDsKQEAg
LTE0MzAsNiArMTQzNiw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+IG1fY29udGV4dE1lbnVD
bGllbnQ7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50PiBtX2luamVjdGVkQnVuZGxlQ2xpZW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
Yk5hdmlnYXRpb25TdGF0ZT4gbV9uYXZpZ2F0aW9uU3RhdGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDI2LDYgKzQyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdChzdHJ1Y3QgV2ViS2l0OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCByZXN1bHQsIGJvb2wg
Zm9ySW1tZWRpYXRlQWN0aW9uLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogI2VuZGlmCisg
ICAgSGFuZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVz
c2FnZUJvZHkpIFdhbnRzQ29ubmVjdGlvbgorICAgIEhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShT
dHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkpIC0+IChXZWJL
aXQ6OlVzZXJEYXRhIHJldHVybkRhdGEpIFdhbnRzQ29ubmVjdGlvbgogCiAgICAgSGFuZGxlQXV0
b0ZpbGxCdXR0b25DbGljayhXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxODIy
NDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzE0LDcgKzEzMTQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5k
bGVNZXNzYWdlKElQQzo6CiAgICAgYXV0byogd2ViUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1By
b3h5Ojpmcm9tQ29ubmVjdGlvbigmY29ubmVjdGlvbik7CiAgICAgaWYgKCF3ZWJQcm9jZXNzUHJv
eHkpCiAgICAgICAgIHJldHVybjsKLQogICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodGhpcywgbWVzc2FnZU5hbWUsIHdlYlByb2Nl
c3NQcm94eS0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSku
Z2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4MSw2ICs4ODEsMTEgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYQogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5p
dGlhbGl6ZUZpbmRNYXRjaGVzQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAordm9pZCBXS1BhZ2VTZXRQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudCh3a0NsaWVudCk7Cit9CisKIHZvaWQgV0tQYWdlU2V0
UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZvcm1DbGllbnRC
YXNlKiB3a0NsaWVudCkKIHsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUZpbmRDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tQYWdlRmluZE1hdGNoZXNDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQ
YWdlRm9ybUNsaWVudC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VMb2FkVHlwZXMuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tQYWdlTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZU5hdmln
YXRpb25DbGllbnQuaD4KQEAgLTIxNCw2ICsyMTUsNyBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VT
ZXRQYWdlRmluZENsaWVudChXCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNo
ZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFz
ZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9S
VCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdl
VUlDbGllbnRCYXNlKiBjbGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudEJhc2UqIGNsaWVudCk7CiAKIC8vIEEgY2xpZW50IGNhbiBpbXBsZW1lbnQgZWl0aGVy
IGEgbmF2aWdhdGlvbiBjbGllbnQgb3IgbG9hZGVyIGFuZCBwb2xpY3kgY2xpZW50cywgYnV0IG5l
dmVyIGJvdGguCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiBjbGllbnQpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudF9oCisjZGVmaW5lIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKKworI2luY2x1
ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tUeXBlUmVmICgqV0tQYWdlR2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29u
c3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRJbmZvOworfSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U7CisK
K3R5cGVkZWYgc3RydWN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAgeworICAgIFdLUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1BhZ2VEaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLUGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKK30gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRW
MDsKKworI2VuZGlmIC8vIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lv
biAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIwLDYgKzYyMCwxMSBAQCAtICh2b2lkKXNldEN1c3Rv
bVVzZXJBZ2VudDooTlNTdHJpbmcgKiljCiAgICAgX3BhZ2UtPnNldEN1c3RvbVVzZXJBZ2VudChj
dXN0b21Vc2VyQWdlbnQpOwogfQogCistIChXS1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nCit7Cisg
ICAgcmV0dXJuIHRvQVBJKF9wYWdlLmdldCgpKTsKK30KKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVj
aWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCShyZXZp
c2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAKICNkZWZpbmUg
V0tfV0VCX1ZJRVdfUFJPVE9DT0xTCiAjZW5kaWYKIAordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tQYWdlKiBXS1BhZ2VSZWY7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgVmlld1Nu
YXBzaG90OwogY2xhc3MgV2ViUGFnZVByb3h5OwpAQCAtMTA2LDYgKzEwOCw4IEBAIHN0cnVjdCBQ
cmludEluZm87CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJZ25vcmVzTm9uV2hl
ZWxFdmVudHM6KSBCT09MIF9pZ25vcmVzTm9uV2hlZWxFdmVudHM7CiAjZW5kaWYKIAorLSAoV0tQ
YWdlUmVmKV9wYWdlRm9yVGVzdGluZzsKKwogQGVuZAogCiBXS1dlYlZpZXcqIGZyb21XZWJQYWdl
UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MjI0MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjM4LDYgKzYzOCw5IEBACiAJCTJEODcxMDE3MTgyODQxNUQwMDE4RkEwMSAv
KiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODcxMDE1MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20uaCAqLzsgfTsKIAkJMkQ4OTQ5RjAxODIwNDRGNjAwRTg5OEFB
IC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg5NDlFRTE4MjA0NEY2MDBFODk4QUEg
LyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCAqLzsgfTsKIAkJMkQ4OTQ5
RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4OTQ5RUYx
ODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oICov
OyB9OworCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
OUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJEOUVBMzBG
MUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUVBMzBFMUE5NkNCRkYw
MDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgfTsKKwkJMkQ5RUEz
MTExQTk2RDlFQjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlFQTMxMDFBOTZE
OUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLzsgfTsKIAkJ
MkRBMDQ5QjMxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEwNDlCMTE4MEND
Q0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCAqLzsgfTsKIAkJMkRBMDQ5
QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMDQ5QjIxODBDQ0NEMzAwQUFG
QTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovOyB9OwogCQkyREEwNDlCNzE4MENDRDBB
MDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBH
cmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwICovOyB9OwpAQCAtMjc5Nyw2ICsyODAwLDkgQEAKIAkJ
MkQ4NzEwMTUxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4OTQ5RUUxODIwNDRGNjAw
RTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJh
Y2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDg5NDlFRjE4MjA0NEY2
MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2lu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDlFQTMwQzFBOTZDQjU5MDAyRDI4
MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQ5RUEzMEUxQTk2Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ5
RUEzMTAxQTk2RDlFQjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREEwNDlCMTE4MEND
Q0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTA0OUIyMTgwQ0NDRDMwMEFBRkE5RSAvKiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTA0OUI1
MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMzYsNiArNjI0Miw4IEBACiAJCQkJODM3MkRC
MjcxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICov
LAogCQkJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwICovLAog
CQkJCUJDN0I2MjA0MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuaCAqLywKKwkJCQky
RDlFQTMxMDFBOTZEOUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cCAqLywKKwkJCQkyRDlFQTMwRTFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQ
cm94eS5jcHAgKi8sCiAJCQkJQkMwMzJEQ0IxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94
eS5oICovLAogCQkJCUJDQkQzOEZBMTI1QkFCOUEwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gKi8sCkBAIC02NDA1LDYgKzY0MTMsNyBAQAogCQkJCTFBQjhBMUVGMTg0MDBCMDAw
MEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi8sCiAJCQkJQkM3QjYzMzYxMkE0NUFCQTAw
RDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCAqLywKIAkJCQlCQzdCNjMzNTEyQTQ1QUJBMDBEMTc0
QTQgLyogV0tQYWdlR3JvdXAuaCAqLywKKwkJCQkyRDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcgLyog
V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKIAkJCQkxQUI4QTFFQjE4NDAwODA5MDBF
OUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJMkQ3MzAzNzgxQTdDMkI3NTAw
RjhGNDg3IC8qIFdLUGFnZU5hdmlnYXRpb25DbGllbnQuaCAqLywKIAkJCQkxQUI4QTFFRDE4NDAw
QUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggKi8sCkBAIC03NjM5LDYgKzc2NDgs
NyBAQAogCQkJCTUxQkEyNDQ0MTg1OEVFMzAwMEVBMjgxMSAvKiBBc3luY1Rhc2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0
cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ5RUEzMEYxQTk2Q0JGRjAwMkQyODA3IC8qIFdl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTcx
MkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMkY1ODk5MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEU4RUY5MTZCMjA5MUMwMEU5
MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODE3OSw2
ICs4MTg5LDcgQEAKIAkJCQk4MzcyREIyRjFBNjc3RDRBMDBDNjk3QzUgLyogV0tEaWFnbm9zdGlj
TG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEU0MTg0RDQ0OTgw
MDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFCNDc0RTgxODRENDREMDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4
MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
ODlEMkJDMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlckludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFMDE4NEQ0NDZBMDA1MUI2MjIgLyogV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFMjE4NEQ0NDgwMDA1
MUI2MjIgLyogV0tCdW5kbGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTE5
LDYgKzk5MzAsNyBAQAogCQkJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0QSAvKiBXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAw
MzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMkQ5RUEzMTExQTk2RDlFQjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTUzQzJBOTFBMzI1NzJCMDA0
RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRURCQTg0
NzE5RkRBMDBBMDA2ODY2QTUgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNTJDMEY3MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3MiwzICs1NzIsMTcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVc2VUZXN0aW5nVmlld3BvcnRD
bwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNlVGVzdGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlv
bih1c2VUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uKTsKIH0KICNlbmRpZgorCit2b2lkIFdL
QnVuZGxlUGFnZVBvc3RNZXNzYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5UmVmKQoreworICAgIHRvSW1w
bChwYWdlUmVmKS0+cG9zdE1lc3NhZ2UodG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0lt
cGwobWVzc2FnZUJvZHlSZWYpKTsKK30KKwordm9pZCBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25v
dXNNZXNzYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5UmVmLCBXS1R5cGVSZWYqIHJldHVybkRhdGFSZWYp
Cit7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOworICAgIHRvSW1wbChwYWdl
UmVmKS0+cG9zdFN5bmNocm9ub3VzTWVzc2FnZSh0b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiks
IHRvSW1wbChtZXNzYWdlQm9keVJlZiksIHJldHVybkRhdGEpOworICAgIGlmIChyZXR1cm5EYXRh
UmVmKQorICAgICAgICAqcmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEucmVsZWFzZSgp
LmxlYWtSZWYoKSk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNp
b24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw5IEBAIFdL
X0VYUE9SVCBXS0J1bmRsZUluc3BlY3RvclJlZiBXS0J1bmRsZVAKIAogV0tfRVhQT1JUIGJvb2wg
V0tCdW5kbGVQYWdlSXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwogCitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODMyLDQgKzQ4MzIsMjEgQEAg
dm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JGcgogICAgIHVwZGF0ZU1haW5G
cmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCit7
CisgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNl
ckRhdGEod2ViUHJvY2Vzcy50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkp
KTsKK30KKwordm9pZCBXZWJQYWdlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYgcmV0dXJuRGF0YSkKK3sKKyAgICBVc2VyRGF0YSByZXR1cm5Vc2VyRGF0YTsKKworICAg
IGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoIXNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZSht
ZXNzYWdlTmFtZSwgVXNlckRhdGEod2ViUHJvY2Vzcy50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KG1lc3NhZ2VCb2R5KSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVTeW5jaHJvbm91
c01lc3NhZ2U6OlJlcGx5KHJldHVyblVzZXJEYXRhKSkpCisgICAgICAgIHJldHVybkRhdGEgPSBu
dWxscHRyOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuRGF0YSA9IHdlYlByb2Nlc3MudHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyhyZXR1cm5Vc2VyRGF0YS5vYmplY3QoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NjUsNiArODY1LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpQYWdlQWN0
aXZpdHlTdGF0ZTo6RmxhZ3MpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpOworICAgIHZvaWQgcG9zdFN5
bmNocm9ub3VzTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCog
bWVzc2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpOworCiBwcml2YXRl
OgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI0MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE1LTAzLTMxICBFbnJpY2EgQ2FzdWNjaSAgPGVucmlj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG1lc3NhZ2VzIHNob3VsZCBi
ZSBhdCB0aGUgcGFnZSBsZXZlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0aW5nIFdlYktpdFRlc3RSdW5uZXIgdG8gdXNlIHRoZSBuZXcgcGFn
ZSBsZXZlbCBtZXNzYWdpbmcuCisgICAgICAgIFRoZSBhdXRob3Igb2YgdGhpcyBwYXRjaCBpcyBU
aW0gSG9ydG9uLCBJIGp1c3QgZmluaXNoZWQgaXQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdD
b250cm9sbGVyOjpsZWFwRm9yd2FyZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2spOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRpbmdDb250cm9sbGVyOjprZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNb3Vz
ZVNjcm9sbEJ5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6YWRkVG91
Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVRv
dWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3Vj
aE1vZGlmaWVyKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2V0VG91
Y2hQb2ludFJhZGl1cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRv
dWNoU3RhcnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaE1v
dmUpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaEVuZCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoQ2FuY2VsKToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FuY2VsVG91Y2hQb2ludCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkb25lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6Om91dHB1dFRleHQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9z
dE5ld0JlZm9yZVVubG9hZFJldHVyblZhbHVlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnBvc3RSZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OnBvc3RGb2N1c1dlYlZpZXcpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
cG9zdFNldEJhY2tpbmdTY2FsZUZhY3Rvcik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
Ojpwb3N0U2V0V2luZG93SXNLZXkpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9z
dFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6cG9zdFNldEFkZHNWaXNpdGVkTGlua3MpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKToKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldEhpZGRlbik6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnNob3VsZFByb2Nlc3NXb3JrUXVldWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6cHJvY2Vzc1dvcmtRdWV1ZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpxdWV1
ZUJhY2tOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnF1ZXVlRm9y
d2FyZE5hdmlnYXRpb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2Fk
KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9hZEhUTUxTdHJpbmcpOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cXVldWVSZWxvYWQpOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyk6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2VjdXJlRXZlbnRJbnB1dElzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnNldEJsb2NrQWxsUGx1Z2lucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVh
dGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVz
ZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTUtMDQt
MDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ29udGVudCBFeHRlbnNpb25zXSBQcm9wZXJseSBoYW5kbGUgcmVnZXhlcyB0aGF0IG1hdGNo
IGV2ZXJ5dGhpbmcuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMiBAQAogI2luY2x1ZGUg
PFdlYktpdC9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUdyb3VwLmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZh
dGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmdDRi5oPgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8Y3R5cGUuaD4K
QEAgLTUyMSw2ICs1MjMsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dp
dGhPcAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQobV9tYWluV2Vi
Vmlldy0+cGFnZSgpLCAmcGFnZU5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiAKKworICAgIC8vIHRo
aXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8KKyAgICBXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudFYwIGluamVjdGVkQnVuZGxlQ2xpZW50ID0geworICAgICAgICB7IDAsIHRoaXMg
fSwKKyAgICAgICAgZGlkUmVjZWl2ZVBhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLAorICAg
ICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwK
Ky8vICAgICAgICAwIC8vIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YQor
ICAgIH07CisgICAgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UpOworCiAgICAgbV9tYWluV2Vi
Vmlldy0+ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKTsKIAogICAgIC8vIEdlbmVyYWxseSwgdGhlIHRl
c3RzIHNob3VsZCBkZWZhdWx0IHRvIHJ1bm5pbmcgYXQgMXguIHVwZGF0ZVdpbmRvd1NjYWxlRm9y
VGVzdCgpIHdpbGwgYWRqdXN0IHRoZSBzY2FsZSB0bwpAQCAtNjIxLDcgKzYzMyw3IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3QKICAgICB9CiAgICAgV0tEaWN0aW9u
YXJ5U2V0SXRlbShyZXNldE1lc3NhZ2VCb2R5LmdldCgpLCBhbGxvd2VkSG9zdHNLZXkuZ2V0KCks
IGFsbG93ZWRIb3N0c1ZhbHVlLmdldCgpKTsKIAotICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgcmVzZXRNZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tQYWdlUG9zdE1l
c3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCByZXNldE1lc3NhZ2VCb2R5LmdldCgp
KTsKIAogICAgIFdLQ29udGV4dFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgZmFsc2UpOwogCkBAIC05NDcsNiArOTU5LDE4IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm8KICAgICAqcmV0dXJuRGF0
YSA9IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1l
c3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkubGVha1JlZigpOwogfQogCisvLyBXS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudAorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUGFnZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBt
ZXNzYWdlQm9keSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJv
bm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVy
bkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgKnJldHVybkRhdGEgPSBzdGF0
aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFt
ZSwgbWVzc2FnZUJvZHkpLmxlYWtSZWYoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6bmV0
d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDYsNiArMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gV0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRh
LCBjb25zdCB2b2lkKik7CisKKyAgICAvLyBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudAorICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1Bh
Z2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNv
bnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9p
ZCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAgICAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24g
MTgyMjQxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZv
a2UoKQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB0aW1lb3V0VmFsdWUgPSBhZG9wdFdL
KFdLVUludDY0Q3JlYXRlKG1fdGltZW91dCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oYmVn
aW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIHRpbWVvdXRLZXkuZ2V0KCksIHRpbWVvdXRWYWx1ZS5n
ZXQoKSk7CiAKLSAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGJlZ2lu
VGVzdE1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ydW5VbnRpbChtX2dvdEluaXRpYWxSZXNwb25zZSwg
VGVzdENvbnRyb2xsZXI6OnNob3J0VGltZW91dCk7CiAgICAgaWYgKCFtX2dvdEluaXRpYWxSZXNw
b25zZSkgewpAQCAtMzY5LDIxICszNjksMjEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcgogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKSB7CiAgICAgICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5hZGRDaHJvbWVJbnB1dEZpZWxkKCk7CiAgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxBZGRDaHJvbWVJbnB1dEZpZWxkQ2FsbGJhY2si
KSk7Ci0gICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cisg
ICAgICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUNocm9tZUlucHV0RmllbGQiKSkgewogICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCgpOwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsUmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZENhbGxiYWNrIikpOwotICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRm9jdXNXZWJW
aWV3IikpIHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3
KCktPm1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiQ2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrIikpOwotICAgICAgICBXS0NvbnRleHRQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRl
eHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcgogICAgICAgICBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgYmFja2luZ1NjYWxlRmFj
dG9yKTsKIAogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsU2V0QmFja2luZ1NjYWxl
RmFjdG9yQ2FsbGJhY2siKSk7Ci0gICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgMCk7CisgICAgICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUyMiw3ICs1MjIs
NyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJQcm9jZXNzV29ya1F1ZXVl
IikpIHsKICAgICAgICAgaWYgKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS53b3JrUXVldWVN
YW5hZ2VyKCkucHJvY2Vzc1dvcmtRdWV1ZSgpKSB7CiAgICAgICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJXb3JrUXVldWVQcm9jZXNzZWRDYWxsYmFjayIpKTsKLSAgICAgICAgICAgIFdLQ29u
dGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgICAgICBXS1BhZ2VQ
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw4
ICsyMDgsOCBAQCBzdGF0aWMgV0tNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVNb3VzCiAKIHZv
aWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VEb3duKGludCBidXR0b24sIEpTVmFsdWVS
ZWYgbW9kaWZpZXJBcnJheSkgCiB7Ci0gICAgYXV0byYgaW5qZWN0ZWRCdW5nbGUgPSBJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBpbmplY3Rl
ZEJ1bmdsZS5wYWdlKCktPnBhZ2UoKTsKKyAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IGluamVj
dGVkQnVuZGxlLnBhZ2UoKS0+cGFnZSgpOwogICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQg
PSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQoZnJhbWUpOwogICAgIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllckFycmF5KGNvbnRleHQsIG1vZGlmaWVy
QXJyYXkpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
bW91c2VEb3duKGkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5k
ZXIiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keShBZG9wdFdLLCBjcmVhdGVNb3VzZU1lc3NhZ2VCb2R5KE1vdXNlRG93biwg
YnV0dG9uLCBtb2RpZmllcnMpKTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZShpbmplY3RlZEJ1bmdsZS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShwYWdlLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250
cm9sbGVyOjptb3VzZVVwKGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkKQEAg
LTIzMCw3ICsyMzAsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlVXAoaW50
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOwogICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJv
ZHkoQWRvcHRXSywgY3JlYXRlTW91c2VNZXNzYWdlQm9keShNb3VzZVVwLCBidXR0b24sIG1vZGlm
aWVycykpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdl
KCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZVRv
KGludCB4LCBpbnQgeSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRy
b2xsZXI6Om1vdXNlTW92ZVRvCiAgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IHlSZWYoQWRv
cHRXSywgV0tEb3VibGVDcmVhdGUoeSkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CiAKLSAgICBX
S0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJN
ZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAK
IHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25k
cykKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmxlYXBG
b3J3YXJkCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHRpbWVSZWYoQWRvcHRXSywgV0tV
SW50NjRDcmVhdGUobWlsbGlzZWNvbmRzKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCB0aW1lS2V5LmdldCgpLCB0aW1lUmVmLmdldCgpKTsK
IAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91
c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAw
KTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91
c0NsaWNrKCkKQEAgLTI3OCwxMSArMjc4LDExIEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6c2NoZWR1bGVBc3kKIAogICAgIC8vIEFzeW5jaHJvbm91cyBtb3VzZSBkb3duLgogICAgIFdL
UmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1vdXNlRG93bk1lc3NhZ2VCb2R5KEFk
b3B0V0ssIGNyZWF0ZU1vdXNlTWVzc2FnZUJvZHkoTW91c2VEb3duLCBidXR0b24sIG1vZGlmaWVy
cykpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBtb3VzZURvd25NZXNzYWdl
Qm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgp
LCBtb3VzZURvd25NZXNzYWdlQm9keS5nZXQoKSk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgbW91
c2UgdXAuCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gbW91c2VVcE1l
c3NhZ2VCb2R5KEFkb3B0V0ssIGNyZWF0ZU1vdXNlTWVzc2FnZUJvZHkoTW91c2VVcCwgYnV0dG9u
LCBtb2RpZmllcnMpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgbW91c2VV
cE1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5h
bWUuZ2V0KCksIG1vdXNlVXBNZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBXS1JldGFp
blB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoSlNT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQpA
QCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihK
U1MKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CiAg
ICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4ga2V5RG93bk1lc3NhZ2VCb2R5
ID0gY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgbW9kaWZpZXJzLCBsb2NhdGlvbik7CiAK
LSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVz
c2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihK
U1N0cmluZ1JlZiBrZXkpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250
cm9sbGVyOjpzY2hlZHVsZUFzeQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJF
dmVudFNlbmRlciIpKTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBr
ZXlEb3duTWVzc2FnZUJvZHkgPSBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwIC8qIG1v
ZGlmaWVycyAqLywgMCAvKiBsb2NhdGlvbiAqLyk7CiAKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
TmFtZS5nZXQoKSwga2V5RG93bk1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQ
b3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIGtleURvd25NZXNzYWdlQm9keS5nZXQoKSk7CiB9
CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50
IHkpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3Vz
ZVNjcm9sbAogICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB5UmVmKEFkb3B0V0ssIFdLRG91
YmxlQ3JlYXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUu
Z2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhpbnQgeCwgaW50IHksIEpTU3RyaW5nUmVmIHBoYXNlU3RyLCBKU1N0cmluZ1JlZiBtb21lbnR1
bVN0ciwgYm9vbCBhc3luY1Njcm9sbGluZykKQEAgLTM5OCw5ICszOTgsOSBAQCB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsCiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBtb21lbnR1bUtleS5nZXQoKSwgbW9tZW50dW1S
ZWYuZ2V0KCkpOwogCiAgICAgaWYgKGFzeW5jU2Nyb2xsaW5nKQotICAgICAgICBXS0J1bmRsZVBv
c3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5k
ZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSk7CisgICAg
ICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5w
YWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsK
KyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0
KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSwgYm9v
bCBwYWdlZCkKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
OmNvbnRpbnVvdXNNCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHBhZ2VkUmVmKEFkb3B0
V0ssIFdLVUludDY0Q3JlYXRlKHBhZ2VkKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBwYWdlZEtleS5nZXQoKSwgcGFnZWRSZWYuZ2V0KCkp
OwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IDApOwogfQogCiBKU1ZhbHVlUmVmIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRleHRDbGlj
aygpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjphZGRU
b3VjaFBvaQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5UmVmKEFkb3B0V0ssIFdLVUlu
dDY0Q3JlYXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUu
Z2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50
IHkpCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRh
dGVUb3VjaAogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5UmVmKEFkb3B0V0ssIFdLVUlu
dDY0Q3JlYXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUu
Z2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kaWZpZXIoY29uc3QgSlNTdHJpbmdSZWYgJm1v
ZGlmaWVyLCBib29sIGVuYWJsZSkKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGVu
YWJsZVJlZihBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShlbmFibGUpKTsKICAgICBXS0RpY3Rpb25h
cnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGVuYWJsZUtleS5nZXQoKSwg
ZW5hYmxlUmVmLmdldCgpKTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5h
bWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxl
UGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBh
Z2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1l
c3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIAogCkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaFBvaQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0
UmVmPiB5UmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKHJhZGl1c1kpKTsKICAgICBXS0RpY3Rp
b25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlS
ZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQo
KSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5w
YWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJv
ZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoU3Rh
cnQoKQpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91
Y2hTdGFydCgKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvdWNoU3RhcnQiKSk7CiAgICAg
V0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNz
YWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RT
eW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5n
ZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hNb3ZlKCkKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJUb3VjaE1vdmUiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1l
c3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQo
KSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQoKQpAQCAt
NjMwLDcgKzYzMCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hFbmQoKQog
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hFbmQiKSk7CiAgICAgV0tEaWN0aW9uYXJ5
U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgp
LCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBX
S0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6dG91Y2hDYW5jZWwoKQpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6dG91Y2hDYW5jZWwKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3Vi
TWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvdWNo
Q2FuY2VsIikpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOwogCi0g
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwog
fQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNsZWFyVG91Y2hQb2ludHMoKQpAQCAt
NjU0LDcgKzY1NCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2xlYXJUb3VjaFAK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNsZWFyVG91Y2hQb2ludHMiKSk7CiAgICAgV0tE
aWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdl
S2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAw
KTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQo
KSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KQpAQCAtNjcwLDcgKzY3
MCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWMKICAgICBXS1Jl
dGFpblB0cjxXS1VJbnQ2NFJlZj4gaW5kZXhSZWYoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoaW5k
ZXgpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIGluZGV4S2V5LmdldCgpLCBpbmRleFJlZi5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RT
eW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5n
ZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6Y2FuY2VsVG91Y2hQb2ludChpbnQgaW5kZXgpCkBAIC02ODYsNyAr
Njg2LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYW5jZWxUb3VjaAogICAgIFdL
UmV0YWluUHRyPFdLVUludDY0UmVmPiBpbmRleFJlZihBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShp
bmRleCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5n
ZXQoKSwgaW5kZXhLZXkuZ2V0KCksIGluZGV4UmVmLmdldCgpKTsKIAotICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1l
LmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KICNlbmRpZgogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlUHJpdmF0ZS5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmdDRi5oPgogI2luY2x1ZGUg
PFdlYktpdC9XZWJLaXQyX0MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTMzLDYgKzEzNCwxMyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpyZXNldExvY2FsU2V0dGluZ3MoCiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHkpCiB7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOworICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UobV9idW5kbGUsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2FnZUJv
ZHkuZ2V0KCkpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRv
UGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlw
ZVJlZiBtZXNzYWdlQm9keSkKK3sKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkJlZ2luVGVzdCIpKSB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlQm9k
eSk7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpOwpAQCAtMTQ5LDEyICsxNTcsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoVwogCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBhY2tNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
QWNrIikpOwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZUJvZHko
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKLSAg
ICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCks
IGFja01lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2Uo
cGFnZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAg
ICAgICBiZWdpblRlc3RpbmcobWVzc2FnZUJvZHlEaWN0aW9uYXJ5KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiUmVzZXQiKSkgewogICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOwogICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5
cGVJRCgpKTsKQEAgLTE4Myw3ICsxOTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZShXCiAgICAgICAgIHJlc2V0TG9jYWxTZXR0aW5ncygpOwogICAgICAgICBtX3Rl
c3RSdW5uZXItPnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICAg
ICAgcGFnZSgpLT5yZXNldEFmdGVyVGVzdCgpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6cGFn
ZSgpLT5yZXNldEFmdGVyVGVzdCgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDYs
MjQgKzIxNCwxNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZShXCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsU2V0
QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNh
bGxTZXRCYWNraW5nU2NhbGVGYWN0b3JDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47Ci0gICAg
fSAgIAorICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiV29ya1F1ZXVlUHJvY2Vzc2VkQ2FsbGJhY2siKSkgewogICAgICAgICBpZiAoIXRv
cExvYWRpbmdGcmFtZSgpICYmICFtX3Rlc3RSdW5uZXItPndhaXRUb0R1bXAoKSkKLSAgICAgICAg
ICAgIHBhZ2UoKS0+ZHVtcCgpOworICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnBhZ2UoKS0+
ZHVtcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGVycm9yTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkVycm9yIikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikp
OwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIGVycm9yTWVzc2FnZU5hbWUuZ2V0
KCksIGVycm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwotfQotCi12b2lkIEluamVjdGVkQnVuZGxlOjpk
aWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSkKLXsKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXJyb3IiKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9y
TWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVua25v
d24iKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgZXJyb3JNZXNzYWdlTmFt
ZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1l
c3NhZ2UocGFnZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQo
KSk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmJvb2xlYW5Gb3JLZXkoV0tEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKQEAgLTMxMCw3ICszMTEsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpkb25lKCkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVk
aW9SZXN1bHRLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdWRp
b1Jlc3VsdCIpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGRvbmVNZXNzYWdlQm9keS5nZXQo
KSwgYXVkaW9SZXN1bHRLZXkuZ2V0KCksIG1fYXVkaW9SZXN1bHQuZ2V0KCkpOwogCi0gICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgZG9uZU1lc3NhZ2VOYW1lLmdldCgpLCBkb25lTWVz
c2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFn
ZSgpLCBkb25lTWVzc2FnZU5hbWUuZ2V0KCksIGRvbmVNZXNzYWdlQm9keS5nZXQoKSk7CiAKICAg
ICBjbG9zZU90aGVyUGFnZXMoKTsKIApAQCAtMzQzLDY3ICszNDQsNjcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6b3V0cHV0VGV4dChjb25zdCBTdAogICAgICAgICByZXR1cm47CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJUZXh0T3V0cHV0IikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvdXRw
dXQudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9z
dE1lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5n
ZXQoKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1
cm5WYWx1ZShib29sIHZhbHVlKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVmb3JlVW5s
b2FkUmV0dXJuVmFsdWUiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdl
Qm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKLSAgICBXS0J1bmRsZVBvc3RN
ZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwor
ICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0
QWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBZGRDaHJv
bWVJbnB1dEZpZWxkIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBh
Z2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpw
b3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJS
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5k
bGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShw
YWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpwb3N0Rm9jdXNXZWJWaWV3KCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZv
Y3VzV2ViVmlldyIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdl
TmFtZS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSgpLT5wYWdl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9z
dFNldEJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUgYmFja2luZ1NjYWxlRmFjdG9yKQogewogICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0QmFja2luZ1NjYWxlRmFjdG9yIikpOwogICAgIFdLUmV0
YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZShi
YWNraW5nU2NhbGVGYWN0b3IpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBv
c3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0V2luZG93SXNLZXkoYm9v
bCBpc0tleSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdpbmRvd0lzS2V5IikpOwog
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29s
ZWFuQ3JlYXRlKGlzS2V5KSk7Ci0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKG1f
YnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdL
QnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGljayIpKTsKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbWVzc2FnZUJvZHkoQWRvcHRX
SywgV0tVSW50NjRDcmVhdGUobm90aWZpY2F0aW9uSUQpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAg
IFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0
QWRkc1Zpc2l0ZWRMaW5rcyhib29sIGFkZHNWaXNpdGVkTGlua3MpCiB7CiAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJTZXRBZGRzVmlzaXRlZExpbmtzIikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9v
bGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGFkZHNWaXNpdGVk
TGlua3MpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBh
Z2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFi
bGVkKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
IikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tCb29sZWFuQ3JlYXRlKGVuYWJsZWQpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVu
ZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxl
UGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlk
ZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRl
c0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVl
ZCkKQEAgLTQ1NiwyMCArNDU3LDIwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldE1vY2tHZW9s
b2NhdGlvblAKICAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4gc3BlZWRXSyhBZG9wdFdLLCBX
S0RvdWJsZUNyZWF0ZShzcGVlZCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obWVzc2FnZUJv
ZHkuZ2V0KCksIHNwZWVkS2V5V0suZ2V0KCksIHNwZWVkV0suZ2V0KCkpOwogCi0gICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5Lmdl
dCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdLU3RyaW5nUmVm
IGVycm9yTWVzc2FnZSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvciIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBXS0J1bmRs
ZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGVycm9y
TWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFVzZXJNZWRpYVBlcm1pc3Np
b24oYm9vbCBlbmFibGVkKQogewogICAgIGF1dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRVc2VyTWVkaWFQZXJtaXNzaW9uIikpOwogICAg
IGF1dG8gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShlbmFibGVkKSk7Ci0g
ICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBl
cm1pc3NpdmUpCkBAIC00ODYsNyArNDg3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q3Vz
dG9tUG9saWN5RGVsZQogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gcGVybWlzc2l2ZVdL
KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShwZXJtaXNzaXZlKSk7CiAgICAgV0tEaWN0aW9uYXJ5
U2V0SXRlbShtZXNzYWdlQm9keS5nZXQoKSwgcGVybWlzc2l2ZUtleVdLLmdldCgpLCBwZXJtaXNz
aXZlV0suZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVz
c2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
KTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SGlkZGVuKGJvb2wgaGlkZGVuKQpAQCAt
NDk4LDE0ICs0OTksMTQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SGlkZGVuKGJvb2wgaGlk
ZAogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gaXNJbml0aWFsV0soQWRvcHRXSywgV0tC
b29sZWFuQ3JlYXRlKGhpZGRlbikpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obWVzc2FnZUJv
ZHkuZ2V0KCksIGlzSW5pdGlhbEtleVdLLmdldCgpLCBpc0luaXRpYWxXSy5nZXQoKSk7CiAKLSAg
ICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRDYWNoZU1vZGVsKGludCBtb2RlbCkKIHsKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlNldENhY2hlTW9kZWwiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKG1vZGVsKSk7Ci0gICAgV0tCdW5kbGVQ
b3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6
c2hvdWxkUHJvY2Vzc1dvcmtRdWV1ZSgpIGNvbnN0CkBAIC01MTUsNyArNTE2LDcgQEAgYm9vbCBJ
bmplY3RlZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtRdQogCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJJc1dvcmtRdWV1ZUVtcHR5IikpOwogICAgIFdLVHlwZVJlZiByZXN1bHRUb1Bhc3MgPSAw
OwotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5h
bWUuZ2V0KCksIDAsICZyZXN1bHRUb1Bhc3MpOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCAmcmVzdWx0
VG9QYXNzKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGlzRW1wdHkoQWRvcHRXSywg
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHRUb1Bhc3MpKTsKIAogICAgIHJldHVybiAh
V0tCb29sZWFuR2V0VmFsdWUoaXNFbXB0eS5nZXQoKSk7CkBAIC01MjQsNyArNTI1LDcgQEAgYm9v
bCBJbmplY3RlZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtRdQogdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cHJvY2Vzc1dvcmtRdWV1ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQcm9jZXNz
V29ya1F1ZXVlIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VO
YW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1
ZUJhY2tOYXZpZ2F0aW9uKHVuc2lnbmVkIGhvd0ZhckJhY2t3YXJkKQpAQCAtNTMzLDcgKzUzNCw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlQmFja05hdmlnYXRpb24KIAogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiUXVldWVCYWNrTmF2aWdhdGlvbiIpKTsKICAgICBXS1JldGFpblB0cjxX
S1VJbnQ2NFJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoaG93RmFyQmFj
a3dhcmQpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBh
Z2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKHVuc2lnbmVkIGhv
d0ZhckZvcndhcmQpCkBAIC01NDIsNyArNTQzLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVl
dWVGb3J3YXJkTmF2aWdhdAogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJRdWV1ZUZvcndhcmRO
YXZpZ2F0aW9uIikpOwogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBtZXNzYWdlQm9keShB
ZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShob3dGYXJGb3J3YXJkKSk7Ci0gICAgV0tCdW5kbGVQb3N0
TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsK
KyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVl
dWVMb2FkKFdLU3RyaW5nUmVmIHVybCwgV0tTdHJpbmdSZWYgdGFyZ2V0KQpAQCAtNTU5LDcgKzU2
MCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9hZChXS1N0cmluZ1IKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gdGFyZ2V0S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJ0YXJnZXQiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShsb2FkRGF0
YS5nZXQoKSwgdGFyZ2V0S2V5LmdldCgpLCB0YXJnZXQpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVz
c2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRhLmdldCgpKTsKKyAgICBX
S0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IGxvYWREYXRhLmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2FkSFRN
TFN0cmluZyhXS1N0cmluZ1JlZiBjb250ZW50LCBXS1N0cmluZ1JlZiBiYXNlVVJMLCBXS1N0cmlu
Z1JlZiB1bnJlYWNoYWJsZVVSTCkKQEAgLTU4Myw3ICs1ODQsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpxdWV1ZUxvYWRIVE1MU3RyaW5nCiAgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obG9h
ZERhdGEuZ2V0KCksIHVucmVhY2hhYmxlVVJMS2V5LmdldCgpLCB1bnJlYWNoYWJsZVVSTCk7CiAg
ICAgfQogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0
KCksIGxvYWREYXRhLmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRhLmdldCgpKTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6cXVldWVSZWxvYWQoKQpAQCAtNTkxLDcgKzU5Miw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OnF1ZXVlUmVsb2FkKCkKICAgICBtX3VzZVdvcmtRdWV1ZSA9IHRydWU7CiAK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlF1ZXVlUmVsb2FkIikpOwotICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBh
Z2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1ZUxvYWRpbmdTY3JpcHQoV0tTdHJpbmdSZWYgc2Ny
aXB0KQpAQCAtNTk5LDcgKzYwMCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9hZGlu
Z1NjcmlwdCgKICAgICBtX3VzZVdvcmtRdWV1ZSA9IHRydWU7CiAKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlF1ZXVlTG9hZGluZ1NjcmlwdCIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1f
YnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgc2NyaXB0KTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0
TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIHNjcmlwdCk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTm9uTG9hZGluZ1NjcmlwdChXS1N0cmluZ1JlZiBz
Y3JpcHQpCkBAIC02MDcsNyArNjA4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVOb25M
b2FkaW5nU2NyaQogICAgIG1fdXNlV29ya1F1ZXVlID0gdHJ1ZTsKIAogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiUXVldWVOb25Mb2FkaW5nU2NyaXB0IikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3Nh
Z2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBzY3JpcHQpOworICAgIFdLQnVuZGxlUGFn
ZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgc2NyaXB0KTsK
IH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aXNBbGxvd2VkSG9zdChXS1N0cmluZ1JlZiBob3N0
KQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQs
MjEgKzgwNCwyMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEhhbmRsZXNBdXRoZW50aWNhdGlvCiB7
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdL
LCBXS0Jvb2xlYW5DcmVhdGUoaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykpOwotICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFn
ZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmIHVzZXJuYW1lKQogewog
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSIpKTsKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoSlNTdHJpbmcodXNlcm5hbWUpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aGVudGljYXRpb25Q
YXNzd29yZChKU1N0cmluZ1JlZiBwYXNzd29yZCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKHBhc3N3
b3JkKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CisgICAg
V0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2Uo
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiBi
b29sIFRlc3RSdW5uZXI6OnNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQoKSBjb25zdApAQCAtODI2
LDcgKzgyNiw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6c2VjdXJlRXZlbnRJbnB1dElzRW5hYmwKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQiKSk7CiAgICAg
V0tUeXBlUmVmIHJldHVybkRhdGEgPSAwOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIDAsICZyZXR1cm5EYXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDAsICZyZXR1cm5EYXRhKTsKICAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSk7CiB9CiAKQEAgLTgzNCw3
ICs4MzQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEJsb2NrQWxsUGx1Z2lucyhib29sCiB7CiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRCbG9ja0FsbFBsdWdpbnMiKSk7CiAgICAgV0tSZXRh
aW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUo
c2hvdWxkQmxvY2spKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7
CiB9CiAKIEpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZERkdDb21waWxlcyhKU1ZhbHVl
UmVmIHRoZUZ1bmN0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249949</attachid>
            <date>2015-04-01 15:32:18 -0700</date>
            <delta_ts>2015-04-01 15:47:05 -0700</delta_ts>
            <desc>Patch3</desc>
            <filename>pagelevelbundlemessages.txt</filename>
            <type>text/plain</type>
            <size>72485</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTAzLTMxICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG1l
c3NhZ2VzIHNob3VsZCBiZSBhdCB0aGUgcGFnZSBsZXZlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCB0aGUgbWVzc2FnZXMgYmV0d2VlbiB0aGUg
aW5qZWN0ZWQgYnVuZGxlIGFuZCB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBzaG91bGQgYmUgcGFn
ZSBsZXZlbCBtZXNzYWdlcyBpbnN0ZWFkIG9mIGNvbnRleHQuCisgICAgICAgIFRoZSBhdXRob3Ig
b2YgdGhpcyBwYXRjaCBpcyBUaW0gSG9ydG9uLCBJIGp1c3QgZmluaXNoZWQgaXQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluamVjdGVkQnVuZGxlQ2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UpOgorICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNS0wNC0wMSAgVGltb3RoeSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU21hcnQgbWFnbmlmaWNhdGlvbiBn
ZXN0dXJlIHNvbWV0aW1lcyBzaG9vdHMgdG8gdGhlIG1pZGRsZSBvZiB0aGUgcGFnZQpJbmRleDog
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4MjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDcgQEAgc2V0KFdlYktp
dDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwCiAgICAgVUlQ
cm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKKyAgICBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCiAgICAgVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKK3sKKyAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSShw
YWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBt
ZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKK3sKKyAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
CisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhUmVmID0gMDsKKyAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9k
eSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIHJldHVy
bkRhdGEgPSBhZG9wdFJlZih0b0ltcGwocmV0dXJuRGF0YVJlZikpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50X2gKKyNkZWZpbmUgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKKwor
I2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgT2JqZWN0OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjA+IFZl
cnNpb25zOworfTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4geworcHVibGljOgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJ
OjpPYmplY3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZp
c2lvbiAxODIyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDYgKzYwNCwzNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q29udGV4dE1lbnVDbGllbnQoCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSogY2xpZW50KQoreworICAgIGlmICghY2xpZW50KSB7CisgICAgICAgIG1faW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbmpl
Y3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmluaXRpYWxpemUoY2xpZW50
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBXZWJLaXQ6OlVz
ZXJEYXRhJiBtZXNzYWdlQm9keSkKK3sKKyAgICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKCZjb25uZWN0aW9uKTsKKyAgICBpZiAoIXdlYlBy
b2Nlc3NQcm94eSB8fCAhbV9pbmplY3RlZEJ1bmRsZUNsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2JqZWN0KCkpLmdldCgpKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdl
Qm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKQoreworICAgIGF1dG8qIHdlYlByb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24pOworICAg
IGlmICghd2ViUHJvY2Vzc1Byb3h5IHx8ICFtX2luamVjdGVkQnVuZGxlQ2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7CisgICAgbV9p
bmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwgd2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgcmV0dXJuRGF0YSk7
CisgICAgcmV0dXJuVXNlckRhdGEgPSBVc2VyRGF0YSh3ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXMocmV0dXJuRGF0YS5nZXQoKSkpOworfQorCisKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2Vk
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9u
IDE4MjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPiAvLyBGSVhNRTogTmVlZGVkIGJ5IFdlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmggZm9yIERJQ1RBVElPTl9BTFRFUk5BVElWRVMuCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTMzMCw2ICszMzEsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+KTsK
ICAgICB2b2lkIHNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGll
bnQ+KTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xp
Y3lDbGllbnQ+KTsKKyAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSopOworICAgIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudCogaW5qZWN0ZWRCdW5kbGVDbGllbnQoKSB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50LmdldCgpOyB9CiAKICAgICBBUEk6OlVJQ2xpZW50JiB1aUNsaWVudCgpIHsgcmV0dXJuICpt
X3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpV
SUNsaWVudD4pOwpAQCAtMTQxNCw2ICsxNDE3LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFu
ZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYpOwogCisgICAgdm9pZCBoYW5k
bGVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNv
bnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSk7CisgICAgdm9pZCBoYW5kbGVTeW5jaHJvbm91c01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3Qg
VXNlckRhdGEmIG1lc3NhZ2VCb2R5LCBVc2VyRGF0YSYgcmV0dXJuVXNlckRhdGEpOworCiAgICAg
UGFnZUNsaWVudCYgbV9wYWdlQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRl
ckNsaWVudD4gbV9sb2FkZXJDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5
Q2xpZW50PiBtX3BvbGljeUNsaWVudDsKQEAgLTE0MzAsNiArMTQzNiw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4
dE1lbnVDbGllbnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PiBtX2luamVjdGVkQnVuZGxlQ2xpZW50
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYk5hdmlnYXRpb25TdGF0ZT4gbV9uYXZpZ2F0aW9u
U3RhdGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTgyMjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDI2LDYg
KzQyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIERpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpBY3Rpb25NZW51
SGl0VGVzdFJlc3VsdCByZXN1bHQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogI2VuZGlmCisgICAgSGFuZGxlTWVzc2FnZShTdHJpbmcgbWVzc2Fn
ZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2FnZUJvZHkpIFdhbnRzQ29ubmVjdGlvbgorICAg
IEhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNl
ckRhdGEgbWVzc2FnZUJvZHkpIC0+IChXZWJLaXQ6OlVzZXJEYXRhIHJldHVybkRhdGEpIFdhbnRz
Q29ubmVjdGlvbgogCiAgICAgSGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxODIyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE0LDcgKzEzMTQsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZXNzYWdlKElQQzo6CiAgICAgYXV0byogd2Vi
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbigmY29ubmVjdGlv
bik7CiAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHkpCiAgICAgICAgIHJldHVybjsKLQogICAgIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
dGhpcywgbWVzc2FnZU5hbWUsIHdlYlByb2Nlc3NQcm94eS0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTgyMjU2KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg4MSw2ICs4ODEsMTEgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQ
YQogICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUZpbmRNYXRjaGVzQ2xpZW50KHdrQ2xp
ZW50KTsKIH0KIAordm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGll
bnQpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudCh3a0Ns
aWVudCk7Cit9CisKIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3
a0NsaWVudCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAko
cmV2aXNpb24gMTgyMjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dL
UGFnZUZpbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlRmluZE1hdGNoZXNDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlRm9ybUNsaWVudC5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Bh
Z2VMb2FkVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlTG9hZGVyQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaD4KQEAgLTIxNCw2ICsyMTUs
NyBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXCiBXS19FWFBPUlQg
dm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VGb3JtQ2xp
ZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiBjbGllbnQpOworV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdl
LCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIGNsaWVudCk7CiAKIC8vIEEg
Y2xpZW50IGNhbiBpbXBsZW1lbnQgZWl0aGVyIGEgbmF2aWdhdGlvbiBjbGllbnQgb3IgbG9hZGVy
IGFuZCBwb2xpY3kgY2xpZW50cywgYnV0IG5ldmVyIGJvdGguCiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlKiBjbGllbnQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudF9oCisjZGVmaW5lIFdLUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50X2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKwordHlwZWRl
ZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5
cGVkZWYgV0tUeXBlUmVmICgqV0tQYWdlR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
KwordHlwZWRlZiBzdHJ1Y3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlIHsKKyAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS1BhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50VjAgeworICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4K
KyAgICBXS1BhZ2VEaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdL
UGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFj
ayAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKK30g
V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMDsKKworI2VuZGlmIC8vIFdLUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODIyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIwLDYg
KzYyMCwxMSBAQCAtICh2b2lkKXNldEN1c3RvbVVzZXJBZ2VudDooTlNTdHJpbmcgKiljCiAgICAg
X3BhZ2UtPnNldEN1c3RvbVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpOwogfQogCistIChXS1Bh
Z2VSZWYpX3BhZ2VGb3JUZXN0aW5nCit7CisgICAgcmV0dXJuIHRvQVBJKF9wYWdlLmdldCgpKTsK
K30KKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9STShJ
T1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAxODIyNTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDggQEAKICNkZWZpbmUgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTCiAjZW5kaWYK
IAordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgVmlld1NuYXBzaG90OwogY2xhc3MgV2ViUGFnZVByb3h5OwpA
QCAtMTA2LDYgKzEwOCw4IEBAIHN0cnVjdCBQcmludEluZm87CiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRJZ25vcmVzTm9uV2hlZWxFdmVudHM6KSBCT09MIF9pZ25vcmVzTm9uV2hl
ZWxFdmVudHM7CiAjZW5kaWYKIAorLSAoV0tQYWdlUmVmKV9wYWdlRm9yVGVzdGluZzsKKwogQGVu
ZAogCiBXS1dlYlZpZXcqIGZyb21XZWJQYWdlUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE4MjI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM4LDYgKzYzOCw5IEBACiAJ
CTJEODcxMDE3MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODcxMDE1
MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCAqLzsgfTsK
IAkJMkQ4OTQ5RjAxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDg5NDlFRTE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmNwcCAqLzsgfTsKIAkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ4OTQ5RUYxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FM
YXllclJlbW90ZVRpbGVkQmFja2luZy5oICovOyB9OworCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4
MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1Bh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTJEOUVBMzBGMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEOUVBMzBFMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCAqLzsgfTsKKwkJMkQ5RUEzMTExQTk2RDlFQjAwMkQyODA3IC8qIFdlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRDlFQTMxMDFBOTZEOUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50LmNwcCAqLzsgfTsKIAkJMkRBMDQ5QjMxODBDQ0NEMzAwQUFGQTlFIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREEwNDlCMTE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcCAqLzsgfTsKIAkJMkRBMDQ5QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5o
ICovOyB9OwogCQkyREEwNDlCNzE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVt
b3RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwICovOyB9
OwpAQCAtMjc5Nyw2ICsyODAwLDkgQEAKIAkJMkQ4NzEwMTUxODI4NDE1RDAwMThGQTAxIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ4OTQ5RUUxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90
ZVRpbGVkQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDg5NDlFRjE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ5RUEzMEUxQTk2Q0JG
RjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ5RUEzMTAxQTk2RDlFQjAwMkQyODA3IC8qIFdlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREEwNDlCMTE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTA0OUIy
MTgwQ0NDRDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEQTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xh
eWVyQ0FSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3Jh
cGhpY3NMYXllckNBUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
MzYsNiArNjI0Miw4IEBACiAJCQkJODM3MkRCMjcxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRB
NCAvKiBXZWJQYWdlR3JvdXAuY3BwICovLAogCQkJCUJDN0I2MjA0MTI5QTBBNjcwMEQxNzRBNCAv
KiBXZWJQYWdlR3JvdXAuaCAqLywKKwkJCQkyRDlFQTMxMDFBOTZEOUVCMDAyRDI4MDcgLyogV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLywKKwkJCQkyRDlFQTMwRTFBOTZDQkZGMDAy
RDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFCMEIx
MTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJEQ0IxMEY0
Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oICovLAogCQkJCUJDQkQzOEZBMTI1QkFCOUEw
MEQyQzI5RiAvKiBXZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC02NDA1LDYgKzY0MTMs
NyBAQAogCQkJCTFBQjhBMUVGMTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50Lmgg
Ki8sCiAJCQkJQkM3QjYzMzYxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCAqLywK
IAkJCQlCQzdCNjMzNTEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCAqLywKKwkJCQky
RDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAq
LywKIAkJCQkxQUI4QTFFQjE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50Lmgg
Ki8sCiAJCQkJMkQ3MzAzNzgxQTdDMkI3NTAwRjhGNDg3IC8qIFdLUGFnZU5hdmlnYXRpb25DbGll
bnQuaCAqLywKIAkJCQkxQUI4QTFFRDE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xp
ZW50LmggKi8sCkBAIC03NjM5LDYgKzc2NDgsNyBAQAogCQkJCTUxQkEyNDQ0MTg1OEVFMzAwMEVB
MjgxMSAvKiBBc3luY1Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUU5NjZEMTEyRkFGNTcw
MDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEzMTczMjEzNENF
QTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ5
RUEzMEYxQTk2Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODk5MTJBODgzODgw
MDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxOEU4RUY5MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtODE3OSw2ICs4MTg5LDcgQEAKIAkJCQk4MzcyREIyRjFBNjc3
RDRBMDBDNjk3QzUgLyogV0tEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQjQ3NEU0MTg0RDQ0OTgwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RTgxODRENDREMDAwNTFCNjIy
IC8qIFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMkJDMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tV
c2VyQ29udGVudEZpbHRlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFMDE4
NEQ0NDZBMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUI0NzRFMjE4NEQ0NDgwMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlRm9ybUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTE5LDYgKzk5MzAsNyBAQAogCQkJCTUxRkIwOEZGMTYz
OURFMUEwMEVDMzI0QSAvKiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQ5RUEzMTExQTk2RDlF
QjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTUzQzJBOTFBMzI1NzJCMDA0RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRURCQTg0NzE5RkRBMDBBMDA2ODY2QTUgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTJDMEY3MUEzOENEQzcw
MDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAxODIyNTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MiwzICs1NzIsMTcgQEAgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRVc2VUZXN0aW5nVmlld3BvcnRDbwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNl
VGVzdGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlvbih1c2VUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0
aW9uKTsKIH0KICNlbmRpZgorCit2b2lkIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5UmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9zdE1lc3NhZ2UodG9XVEZT
dHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsKK30KKwordm9p
ZCBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5UmVm
LCBXS1R5cGVSZWYqIHJldHVybkRhdGFSZWYpCit7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBy
ZXR1cm5EYXRhOworICAgIHRvSW1wbChwYWdlUmVmKS0+cG9zdFN5bmNocm9ub3VzTWVzc2FnZSh0
b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiksIHRvSW1wbChtZXNzYWdlQm9keVJlZiksIHJldHVy
bkRhdGEpOworICAgIGlmIChyZXR1cm5EYXRhUmVmKQorICAgICAgICAqcmV0dXJuRGF0YVJlZiA9
IHRvQVBJKHJldHVybkRhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNpb24gMTgyMjU2KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA5LDYgKzEwOSw5IEBAIFdLX0VYUE9SVCBXS0J1bmRsZUluc3BlY3RvclJlZiBX
S0J1bmRsZVAKIAogV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSXNVc2luZ0VwaGVtZXJhbFNl
c3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VQb3N0TWVzc2FnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEp
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTgyMjU2KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00ODMyLDQgKzQ4MzIsMjAgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxP
ZmZzZXRGb3JGcgogICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBB
UEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkpKTsKK30KKwor
dm9pZCBXZWJQYWdlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0
dXJuRGF0YSkKK3sKKyAgICBVc2VyRGF0YSByZXR1cm5Vc2VyRGF0YTsKKworICAgIGF1dG8mIHdl
YlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoIXNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShtZXNzYWdlTmFt
ZSwgVXNlckRhdGEod2ViUHJvY2Vzcy50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VC
b2R5KSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVTeW5jaHJvbm91c01lc3NhZ2U6
OlJlcGx5KHJldHVyblVzZXJEYXRhKSkpCisgICAgICAgIHJldHVybkRhdGEgPSBudWxscHRyOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuRGF0YSA9IHdlYlByb2Nlc3MudHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyhyZXR1cm5Vc2VyRGF0YS5vYmplY3QoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAxODIyNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NjUsNiArODY1LDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpQYWdlQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpOworICAgIHZvaWQgcG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJv
ZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpOworCiBwcml2YXRlOgogICAgIFdl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7
CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4MjI1NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDgwIEBACisyMDE1LTAzLTMxICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG1lc3NhZ2VzIHNob3VsZCBiZSBhdCB0aGUg
cGFnZSBsZXZlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0aW5nIFdlYktpdFRlc3RSdW5uZXIgdG8gdXNlIHRoZSBuZXcgcGFnZSBsZXZlbCBt
ZXNzYWdpbmcuCisgICAgICAgIFRoZSBhdXRob3Igb2YgdGhpcyBwYXRjaCBpcyBUaW0gSG9ydG9u
LCBJIGp1c3QgZmluaXNoZWQgaXQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRp
bmdDb250cm9sbGVyOjptb3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVy
OjpsZWFwRm9yd2FyZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNj
aGVkdWxlQXN5bmNocm9ub3VzQ2xpY2spOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250
cm9sbGVyOjprZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6bW91c2VTY3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6YWRkVG91Y2hQb2ludCk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVRvdWNoUG9pbnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaE1vZGlmaWVy
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2V0VG91Y2hQb2ludFJh
ZGl1cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoU3RhcnQp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaE1vdmUpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjp0b3VjaEVuZCk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FuY2VsVG91Y2hQb2ludCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpkb25lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
Om91dHB1dFRleHQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdE5ld0JlZm9y
ZVVubG9hZFJldHVyblZhbHVlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RB
ZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RS
ZW1vdmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBv
c3RGb2N1c1dlYlZpZXcpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdFNldEJh
Y2tpbmdTY2FsZUZhY3Rvcik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0U2V0
V2luZG93SXNLZXkpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cG9z
dFNldEFkZHNWaXNpdGVkTGlua3MpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKToKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGU6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKToKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGU6OnNldEhpZGRlbik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNob3Vs
ZFByb2Nlc3NXb3JrUXVldWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cHJvY2Vz
c1dvcmtRdWV1ZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpxdWV1ZUJhY2tOYXZp
Z2F0aW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnF1ZXVlRm9yd2FyZE5hdmln
YXRpb24pOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2FkKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZTo6cXVldWVSZWxvYWQpOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZTo6cXVldWVMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUpOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2VjdXJlRXZlbnRJbnB1dElzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OnNldEJsb2NrQWxsUGx1Z2lucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3
V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRv
Q29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNl
aXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTUtMDQtMDEgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxODIxNzQgYW5kIHIxODIxNzcuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTgyMjU2KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEw
ICs0NCwxMiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
UGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9u
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJL
aXQvV0tTdHJpbmdDRi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjc3RkaW8+
CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTUyMSw2ICs1MjMsMTUgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZU5hdmln
YXRpb25DbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZU5hdmlnYXRpb25DbGllbnQu
YmFzZSk7CiAKKworICAgIC8vIHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8K
KyAgICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwIGluamVjdGVkQnVuZGxlQ2xpZW50ID0g
eworICAgICAgICB7IDAsIHRoaXMgfSwKKyAgICAgICAgZGlkUmVjZWl2ZVBhZ2VNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLAorICAgICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZQorICAgIH07CisgICAgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJh
c2UpOworCiAgICAgbV9tYWluV2ViVmlldy0+ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKTsKIAogICAg
IC8vIEdlbmVyYWxseSwgdGhlIHRlc3RzIHNob3VsZCBkZWZhdWx0IHRvIHJ1bm5pbmcgYXQgMXgu
IHVwZGF0ZVdpbmRvd1NjYWxlRm9yVGVzdCgpIHdpbGwgYWRqdXN0IHRoZSBzY2FsZSB0bwpAQCAt
NjIxLDcgKzYzMiw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3QK
ICAgICB9CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShyZXNldE1lc3NhZ2VCb2R5LmdldCgpLCBh
bGxvd2VkSG9zdHNLZXkuZ2V0KCksIGFsbG93ZWRIb3N0c1ZhbHVlLmdldCgpKTsKIAotICAgIFdL
Q29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgcmVzZXRNZXNzYWdlQm9keS5nZXQo
KSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBy
ZXNldE1lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAgIFdLQ29udGV4dFNldFNob3VsZFVzZUZvbnRT
bW9vdGhpbmcoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgZmFsc2UpOwog
CkBAIC05NDcsNiArOTU4LDE4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5j
aHJvbm8KICAgICAqcmV0dXJuRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkubGVha1JlZigpOwog
fQogCisvLyBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudAorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgKnJldHVybkRhdGEgPSBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpLmxlYWtSZWYoKTsKK30KKwogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYgY29u
dGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2FzdDxUZXN0Q29u
dHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bmV0d29ya1Byb2Nlc3NE
aWRDcmFzaCgpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAko
cmV2aXNpb24gMTgyMjU2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8g
V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29u
dGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwg
V0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKik7CisKKyAgICAvLyBXS1BhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudAorICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiog
cmV0dXJuRGF0YSwgY29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSk7CiAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAkocmV2aXNpb24gMTgyMjU2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lk
IFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB0
aW1lb3V0VmFsdWUgPSBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1fdGltZW91dCkpOwogICAgIFdL
RGljdGlvbmFyeVNldEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIHRpbWVvdXRLZXku
Z2V0KCksIHRpbWVvdXRWYWx1ZS5nZXQoKSk7CiAKLSAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS1BhZ2VQ
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1lc3NhZ2VC
b2R5LmdldCgpKTsKIAogICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ydW5VbnRpbCht
X2dvdEluaXRpYWxSZXNwb25zZSwgVGVzdENvbnRyb2xsZXI6OnNob3J0VGltZW91dCk7CiAgICAg
aWYgKCFtX2dvdEluaXRpYWxSZXNwb25zZSkgewpAQCAtMzY5LDIxICszNjksMjEgQEAgdm9pZCBU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgogICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkQ2hyb21lSW5wdXRGaWVsZCIpKSB7CiAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5hZGRDaHJv
bWVJbnB1dEZpZWxkKCk7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxBZGRDaHJv
bWVJbnB1dEZpZWxkQ2FsbGJhY2siKSk7Ci0gICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUNocm9tZUlu
cHV0RmllbGQiKSkgewogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpOwogICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJDYWxsUmVtb3ZlQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrIikpOwotICAgICAgICBX
S0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICBXS1BhZ2VQ
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiRm9jdXNXZWJWaWV3IikpIHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPm1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKTsKICAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbEZvY3VzV2ViVmlld0NhbGxiYWNrIikpOwot
ICAgICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAg
ICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgogICAgICAgICBXS1BhZ2VTZXRDdXN0b21CYWNraW5n
U2NhbGVGYWN0b3IoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBh
Z2UoKSwgYmFja2luZ1NjYWxlRmFjdG9yKTsKIAogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDYWxsU2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2siKSk7Ci0gICAgICAgIFdLQ29udGV4
dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
Y29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgICAgIFdLUGFnZVBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJQcm9jZXNzV29ya1F1ZXVlIikpIHsKICAgICAgICAgaWYgKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS53b3JrUXVldWVNYW5hZ2VyKCkucHJvY2Vzc1dvcmtRdWV1ZSgpKSB7CiAgICAg
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXb3JrUXVldWVQcm9jZXNzZWRDYWxsYmFjayIp
KTsKLSAgICAgICAgICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7
CisgICAgICAgICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIDApOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4MjI1NikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwOCw4ICsyMDgsOCBAQCBzdGF0aWMgV0tNdXRhYmxlRGljdGlvbmFy
eVJlZiBjcmVhdGVNb3VzCiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VEb3du
KGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkgCiB7Ci0gICAgYXV0byYgaW5q
ZWN0ZWRCdW5nbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UgPSBpbmplY3RlZEJ1bmdsZS5wYWdlKCktPnBhZ2UoKTsKKyAgICBhdXRvJiBp
bmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKKyAgICBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSA9IGluamVjdGVkQnVuZGxlLnBhZ2UoKS0+cGFnZSgpOwogICAgIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CiAgICAg
SlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQo
ZnJhbWUpOwogICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllckFy
cmF5KGNvbnRleHQsIG1vZGlmaWVyQXJyYXkpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VEb3duKGkKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXZlbnRTZW5kZXIiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJNZXNzYWdlQm9keShBZG9wdFdLLCBjcmVhdGVNb3VzZU1l
c3NhZ2VCb2R5KE1vdXNlRG93biwgYnV0dG9uLCBtb2RpZmllcnMpKTsKIAotICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShpbmplY3RlZEJ1bmdsZS5idW5kbGUoKSwgRXZlbnRTZW5k
ZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cisg
ICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShwYWdlLCBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIAog
dm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZVVwKGludCBidXR0b24sIEpTVmFsdWVS
ZWYgbW9kaWZpZXJBcnJheSkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6Om1vdXNlVXAoaW50CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50
U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkV2ZW50U2VuZGVyIikpOwogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+
IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRXSywgY3JlYXRlTW91c2VNZXNzYWdlQm9keShN
b3VzZVVwLCBidXR0b24sIG1vZGlmaWVycykpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5k
ZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7Cisg
ICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2
ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZVRvCiAgICAgV0tSZXRhaW5QdHI8
V0tEb3VibGVSZWY+IHlSZWYoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoeSkpOwogICAgIFdLRGlj
dGlvbmFyeVNldEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgeUtleS5nZXQoKSwg
eVJlZi5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdl
dCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bGVhcEZv
cndhcmQoaW50IG1pbGxpc2Vjb25kcykKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OmxlYXBGb3J3YXJkCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+
IHRpbWVSZWYoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUobWlsbGlzZWNvbmRzKSk7CiAgICAgV0tE
aWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCB0aW1lS2V5Lmdl
dCgpLCB0aW1lUmVmLmdldCgpKTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2Fn
ZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
OjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKCkKQEAgLTI3OCwxMSArMjc4LDExIEBAIHZvaWQg
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2NoZWR1bGVBc3kKIAogICAgIC8vIEFzeW5jaHJvbm91
cyBtb3VzZSBkb3duLgogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1v
dXNlRG93bk1lc3NhZ2VCb2R5KEFkb3B0V0ssIGNyZWF0ZU1vdXNlTWVzc2FnZUJvZHkoTW91c2VE
b3duLCBidXR0b24sIG1vZGlmaWVycykpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdl
dCgpLCBtb3VzZURvd25NZXNzYWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNl
bmRlck1lc3NhZ2VOYW1lLmdldCgpLCBtb3VzZURvd25NZXNzYWdlQm9keS5nZXQoKSk7CiAKICAg
ICAvLyBBc3luY2hyb25vdXMgbW91c2UgdXAuCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gbW91c2VVcE1lc3NhZ2VCb2R5KEFkb3B0V0ssIGNyZWF0ZU1vdXNlTWVzc2Fn
ZUJvZHkoTW91c2VVcCwgYnV0dG9uLCBtb2RpZmllcnMpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlTmFtZS5nZXQoKSwgbW91c2VVcE1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBh
Z2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCks
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIG1vdXNlVXBNZXNzYWdlQm9keS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVL
ZXlEb3duTWVzc2FnZUJvZHkoSlNTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgaW50IGxvY2F0aW9uKQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6a2V5RG93bihKU1MKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZl
bnRTZW5kZXJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRXZlbnRTZW5kZXIiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJl
Zj4ga2V5RG93bk1lc3NhZ2VCb2R5ID0gY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgbW9k
aWZpZXJzLCBsb2NhdGlvbik7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VO
YW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFn
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2Uo
KS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBrZXlEb3duTWVzc2FnZUJv
ZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxl
QXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpCkBAIC0zMjUsNyArMzI1LDcgQEAg
dm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeQogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKICAgICBXS1JldGFpblB0cjxXS011
dGFibGVEaWN0aW9uYXJ5UmVmPiBrZXlEb3duTWVzc2FnZUJvZHkgPSBjcmVhdGVLZXlEb3duTWVz
c2FnZUJvZHkoa2V5LCAwIC8qIG1vZGlmaWVycyAqLywgMCAvKiBsb2NhdGlvbiAqLyk7CiAKLSAg
ICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwga2V5RG93bk1lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIGtleURvd25N
ZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91
c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjptb3VzZVNjcm9sbAogICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVm
PiB5UmVmKEFkb3B0V0ssIFdLRG91YmxlQ3JlYXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkp
OwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQgeCwgaW50IHksIEpTU3RyaW5nUmVmIHBoYXNlU3Ry
LCBKU1N0cmluZ1JlZiBtb21lbnR1bVN0ciwgYm9vbCBhc3luY1Njcm9sbGluZykKQEAgLTM5OCw5
ICszOTgsOSBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsCiAgICAg
V0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBtb21lbnR1
bUtleS5nZXQoKSwgbW9tZW50dW1SZWYuZ2V0KCkpOwogCiAgICAgaWYgKGFzeW5jU2Nyb2xsaW5n
KQotICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSk7CisgICAgICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFt
ZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSk7CiAgICAgZWxzZQotICAgICAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1l
c3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50
U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDAp
OwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9s
bEJ5KGludCB4LCBpbnQgeSwgYm9vbCBwYWdlZCkKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNvbnRpbnVvdXNNCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50
NjRSZWY+IHBhZ2VkUmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKHBhZ2VkKSk7CiAgICAgV0tE
aWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBwYWdlZEtleS5n
ZXQoKSwgcGFnZWRSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tC
dW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiBKU1ZhbHVlUmVmIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OmNvbnRleHRDbGljaygpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjphZGRUb3VjaFBvaQogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVm
PiB5UmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkp
OwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVRvdWNoUG9pbnQo
aW50IGluZGV4LCBpbnQgeCwgaW50IHkpCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjp1cGRhdGVUb3VjaAogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVm
PiB5UmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKHkpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkp
OwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kaWZpZXIo
Y29uc3QgSlNTdHJpbmdSZWYgJm1vZGlmaWVyLCBib29sIGVuYWJsZSkKQEAgLTU3Myw3ICs1NzMs
NyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNldFRvdWNoTW9kCiAgICAgV0tSZXRh
aW5QdHI8V0tVSW50NjRSZWY+IGVuYWJsZVJlZihBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShlbmFi
bGUpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIGVuYWJsZUtleS5nZXQoKSwgZW5hYmxlUmVmLmdldCgpKTsKIAotICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1l
LmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKIH0KIAogCkBAIC01OTQs
NyArNTk0LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzZXRUb3VjaFBvaQogICAg
IFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiB5UmVmKEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKHJh
ZGl1c1kpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIHlLZXkuZ2V0KCksIHlSZWYuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCks
IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OnRvdWNoU3RhcnQoKQpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hTdGFydCgKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlRvdWNoU3RhcnQiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7
CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNp
bmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZl
bnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
MCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hNb3ZlKCkKQEAgLTYx
OCw3ICs2MTgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRvdWNoTW92ZSgpCiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUb3VjaE1vdmUiKSk7CiAgICAgV0tEaWN0aW9uYXJ5
U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgp
LCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBX
S0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6dG91Y2hFbmQoKQpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6dG91Y2hFbmQoKQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG91Y2hFbmQi
KSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAKLSAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9CiAKIHZv
aWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hDYW5jZWwoKQpAQCAtNjQyLDcgKzY0Miw3
IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dG91Y2hDYW5jZWwKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlRvdWNoQ2FuY2VsIikpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0o
RXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVz
c2FnZU5hbWUuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFt
ZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQ
YWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFn
ZSgpLT5wYWdlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVz
c2FnZUJvZHkuZ2V0KCksIDApOwogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNs
ZWFyVG91Y2hQb2ludHMoKQpAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6Y2xlYXJUb3VjaFAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNsZWFyVG91
Y2hQb2ludHMiKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CiAK
LSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7
CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmVsZWFzZVRvdWNoUG9pbnQoaW50
IGluZGV4KQpAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
cmVsZWFzZVRvdWMKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gaW5kZXhSZWYoQWRvcHRX
SywgV0tVSW50NjRDcmVhdGUoaW5kZXgpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKEV2ZW50
U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGluZGV4S2V5LmdldCgpLCBpbmRleFJlZi5nZXQoKSk7
CiAKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNp
bmdsZXRvbigpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgRXZl
bnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
MCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FuY2VsVG91Y2hQb2ludChp
bnQgaW5kZXgpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
OjpjYW5jZWxUb3VjaAogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBpbmRleFJlZihBZG9w
dFdLLCBXS1VJbnQ2NENyZWF0ZShpbmRleCkpOwogICAgIFdLRGljdGlvbmFyeVNldEl0ZW0oRXZl
bnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgaW5kZXhLZXkuZ2V0KCksIGluZGV4UmVmLmdldCgp
KTsKIAotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50
U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCAwKTsKIH0KICNlbmRpZgogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMTgyMjU2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQv
V0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVByaXZhdGUu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tT
dHJpbmdDRi5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAt
MTMzLDYgKzEzNCwxMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldExvY2FsU2V0dGluZ3Mo
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7CisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGVycm9yTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkVycm9yIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3du
IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIGVycm9yTWVzc2FnZU5hbWUu
Z2V0KCksIGVycm9yTWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSkKK3sKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkJlZ2luVGVzdCIpKSB7CiAgICAg
ICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNz
YWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwpAQCAtMTQ5LDEyICsxNTcsMTIg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoVwogCiAgICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhY2tNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNrIikpOwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gYWNrTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkJlZ2luVGVzdCIpKTsKLSAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwg
YWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICAgICAgV0tC
dW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3Nh
Z2VCb2R5LmdldCgpKTsKIAogICAgICAgICBiZWdpblRlc3RpbmcobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVzZXQiKSkgewogICAgICAgICBBU1NF
UlQobWVzc2FnZUJvZHkpOwogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkp
ID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKQEAgLTE4Myw3ICsxOTEsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZShXCiAgICAgICAgIHJlc2V0TG9jYWxTZXR0
aW5ncygpOwogICAgICAgICBtX3Rlc3RSdW5uZXItPnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CiAKLSAgICAgICAgcGFnZSgpLT5yZXNldEFmdGVyVGVzdCgpOworICAgICAg
ICBJbmplY3RlZEJ1bmRsZTo6cGFnZSgpLT5yZXNldEFmdGVyVGVzdCgpOwogCiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0yMDYsMjQgKzIxNCwxNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpk
aWRSZWNlaXZlTWVzc2FnZShXCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJDYWxsU2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2siKSkgewogICAg
ICAgICBtX3Rlc3RSdW5uZXItPmNhbGxTZXRCYWNraW5nU2NhbGVGYWN0b3JDYWxsYmFjaygpOwog
ICAgICAgICByZXR1cm47Ci0gICAgfSAgIAorICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV29ya1F1ZXVlUHJvY2Vzc2VkQ2FsbGJhY2si
KSkgewogICAgICAgICBpZiAoIXRvcExvYWRpbmdGcmFtZSgpICYmICFtX3Rlc3RSdW5uZXItPndh
aXRUb0R1bXAoKSkKLSAgICAgICAgICAgIHBhZ2UoKS0+ZHVtcCgpOworICAgICAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnBhZ2UoKS0+ZHVtcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpOwogICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJVbmtub3duIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUs
IGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2FnZUJvZHkuZ2V0KCkpOwotfQotCi12
b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSkK
LXsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSk7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlVua25vd24iKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1
bmRsZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7Cisg
ICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwg
ZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmJvb2xl
YW5Gb3JLZXkoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKQEAg
LTMxMCw3ICszMTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkb25lKCkKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJBdWRpb1Jlc3VsdCIpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVt
KGRvbmVNZXNzYWdlQm9keS5nZXQoKSwgYXVkaW9SZXN1bHRLZXkuZ2V0KCksIG1fYXVkaW9SZXN1
bHQuZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgZG9uZU1lc3Nh
Z2VOYW1lLmdldCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBv
c3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBkb25lTWVzc2FnZU5hbWUuZ2V0KCksIGRvbmVNZXNz
YWdlQm9keS5nZXQoKSk7CiAKICAgICBjbG9zZU90aGVyUGFnZXMoKTsKIApAQCAtMzQzLDY3ICsz
NDQsNjcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6b3V0cHV0VGV4dChjb25zdCBTdAogICAgICAg
ICByZXR1cm47CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUZXh0T3V0cHV0IikpOwogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhvdXRwdXQudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBv
c3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKQogewogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUp
KTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlOjpwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJBZGRDaHJvbWVJbnB1dEZpZWxkIikpOwotICAgIFdLQnVuZGxlUG9zdE1l
c3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQ
b3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0UmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCiB7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVDaHJvbWVJbnB1dEZpZWxkIikpOwotICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1
bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAp
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0Rm9jdXNXZWJWaWV3KCkKIHsKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkZvY3VzV2ViVmlldyIpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisgICAgV0tCdW5kbGVQYWdlUG9z
dE1lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldEJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUgYmFja2lu
Z1NjYWxlRmFjdG9yKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0QmFja2luZ1NjYWxl
RmFjdG9yIikpOwogICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keShBZG9w
dFdLLCBXS0RvdWJsZUNyZWF0ZShiYWNraW5nU2NhbGVGYWN0b3IpKTsKLSAgICBXS0J1bmRsZVBv
c3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkp
OworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpw
b3N0U2V0V2luZG93SXNLZXkoYm9vbCBpc0tleSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlNldFdpbmRvd0lzS2V5IikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGlzS2V5KSk7Ci0gICAgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJv
ZHkuZ2V0KCksIDApOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UocGFn
ZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2lt
dWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIpKTsKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJl
Zj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUobm90aWZpY2F0aW9uSUQpKTsK
LSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVz
c2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlOjpwb3N0U2V0QWRkc1Zpc2l0ZWRMaW5rcyhib29sIGFkZHNWaXNpdGVkTGlu
a3MpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRBZGRzVmlzaXRlZExpbmtzIikpOwog
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29s
ZWFuQ3JlYXRlKGFkZHNWaXNpdGVkTGlua3MpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1f
YnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVz
c2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uIikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4g
bWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGVuYWJsZWQpKTsKLSAgICBXS0J1
bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUg
YWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVB
Y2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3Zp
ZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKQEAgLTQ1NiwyMCArNDU3LDIwIEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldE1vY2tHZW9sb2NhdGlvblAKICAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJl
Zj4gc3BlZWRXSyhBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZShzcGVlZCkpOwogICAgIFdLRGljdGlv
bmFyeVNldEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIHNwZWVkS2V5V0suZ2V0KCksIHNwZWVkV0su
Z2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShw
YWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKFdLU3RyaW5nUmVmIGVycm9yTWVzc2FnZSkKIHsKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvciIpKTsKLSAg
ICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldFVzZXJNZWRpYVBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIGF1dG8gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRVc2VyTWVk
aWFQZXJtaXNzaW9uIikpOwogICAgIGF1dG8gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVh
bkNyZWF0ZShlbmFibGVkKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVz
c2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0
TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5Lmdl
dCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUo
Ym9vbCBlbmFibGVkLCBib29sIHBlcm1pc3NpdmUpCkBAIC00ODYsNyArNDg3LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0Q3VzdG9tUG9saWN5RGVsZQogICAgIFdLUmV0YWluUHRyPFdLQm9v
bGVhblJlZj4gcGVybWlzc2l2ZVdLKEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZShwZXJtaXNzaXZl
KSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtZXNzYWdlQm9keS5nZXQoKSwgcGVybWlzc2l2
ZUtleVdLLmdldCgpLCBwZXJtaXNzaXZlV0suZ2V0KCkpOwogCi0gICAgV0tCdW5kbGVQb3N0TWVz
c2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAg
ICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SGlk
ZGVuKGJvb2wgaGlkZGVuKQpAQCAtNDk4LDE0ICs0OTksMTQgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0SGlkZGVuKGJvb2wgaGlkZAogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gaXNJ
bml0aWFsV0soQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGhpZGRlbikpOwogICAgIFdLRGljdGlv
bmFyeVNldEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGlzSW5pdGlhbEtleVdLLmdldCgpLCBpc0lu
aXRpYWxXSy5nZXQoKSk7CiAKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RN
ZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0
KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDYWNoZU1vZGVsKGludCBtb2RlbCkK
IHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldENhY2hlTW9kZWwiKSk7CiAgICAgV0tSZXRh
aW5QdHI8V0tVSW50NjRSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKG1v
ZGVsKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdl
KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAog
Ym9vbCBJbmplY3RlZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtRdWV1ZSgpIGNvbnN0CkBAIC01
MTUsNyArNTE2LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtRdQog
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1dvcmtRdWV1ZUVtcHR5IikpOwogICAgIFdLVHlw
ZVJlZiByZXN1bHRUb1Bhc3MgPSAwOwotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsICZyZXN1bHRUb1Bhc3MpOworICAgIFdL
QnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCAwLCAmcmVzdWx0VG9QYXNzKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5S
ZWY+IGlzRW1wdHkoQWRvcHRXSywgc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHRUb1Bh
c3MpKTsKIAogICAgIHJldHVybiAhV0tCb29sZWFuR2V0VmFsdWUoaXNFbXB0eS5nZXQoKSk7CkBA
IC01MjQsNyArNTI1LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6c2hvdWxkUHJvY2Vzc1dvcmtR
dQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cHJvY2Vzc1dvcmtRdWV1ZSgpCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJQcm9jZXNzV29ya1F1ZXVlIikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3Nh
Z2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0
TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlOjpxdWV1ZUJhY2tOYXZpZ2F0aW9uKHVuc2lnbmVkIGhvd0ZhckJhY2t3
YXJkKQpAQCAtNTMzLDcgKzUzNCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlQmFja05h
dmlnYXRpb24KIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUXVldWVCYWNrTmF2aWdhdGlvbiIp
KTsKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tV
SW50NjRDcmVhdGUoaG93RmFyQmFja3dhcmQpKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1f
YnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVz
c2FnZUJvZHkuZ2V0KCkpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1ZUZvcndhcmRO
YXZpZ2F0aW9uKHVuc2lnbmVkIGhvd0ZhckZvcndhcmQpCkBAIC01NDIsNyArNTQzLDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVGb3J3YXJkTmF2aWdhdAogCiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJRdWV1ZUZvcndhcmROYXZpZ2F0aW9uIikpOwogICAgIFdLUmV0YWluUHRyPFdLVUlu
dDY0UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShob3dGYXJGb3J3YXJk
KSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVMb2FkKFdLU3RyaW5nUmVmIHVybCwgV0tTdHJpbmdSZWYg
dGFyZ2V0KQpAQCAtNTU5LDcgKzU2MCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTG9h
ZChXS1N0cmluZ1IKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGFyZ2V0S2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0YXJnZXQiKSk7CiAgICAgV0tEaWN0
aW9uYXJ5U2V0SXRlbShsb2FkRGF0YS5nZXQoKSwgdGFyZ2V0S2V5LmdldCgpLCB0YXJnZXQpOwog
Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxv
YWREYXRhLmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRhLmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cXVldWVMb2FkSFRNTFN0cmluZyhXS1N0cmluZ1JlZiBjb250ZW50LCBXS1N0cmlu
Z1JlZiBiYXNlVVJMLCBXS1N0cmluZ1JlZiB1bnJlYWNoYWJsZVVSTCkKQEAgLTU4Myw3ICs1ODQs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1ZUxvYWRIVE1MU3RyaW5nCiAgICAgICAgIFdL
RGljdGlvbmFyeVNldEl0ZW0obG9hZERhdGEuZ2V0KCksIHVucmVhY2hhYmxlVVJMS2V5LmdldCgp
LCB1bnJlYWNoYWJsZVVSTCk7CiAgICAgfQogCi0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1
bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRhLmdldCgpKTsKKyAgICBXS0J1bmRsZVBh
Z2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGxvYWREYXRh
LmdldCgpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVSZWxvYWQoKQpAQCAtNTkx
LDcgKzU5Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlUmVsb2FkKCkKICAgICBtX3Vz
ZVdvcmtRdWV1ZSA9IHRydWU7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlF1ZXVlUmVsb2Fk
IikpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgp
LCAwKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIDApOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpxdWV1ZUxvYWRpbmdT
Y3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQpAQCAtNTk5LDcgKzYwMCw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnF1ZXVlTG9hZGluZ1NjcmlwdCgKICAgICBtX3VzZVdvcmtRdWV1ZSA9IHRydWU7
CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlF1ZXVlTG9hZGluZ1NjcmlwdCIpKTsKLSAgICBX
S0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgc2NyaXB0KTsK
KyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIHNjcmlwdCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTm9uTG9hZGlu
Z1NjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpCkBAIC02MDcsNyArNjA4LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6cXVldWVOb25Mb2FkaW5nU2NyaQogICAgIG1fdXNlV29ya1F1ZXVlID0gdHJ1
ZTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUXVldWVOb25Mb2FkaW5nU2NyaXB0IikpOwot
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBzY3Jp
cHQpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgc2NyaXB0KTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aXNBbGxvd2Vk
SG9zdChXS1N0cmluZ1JlZiBob3N0KQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAxODIyNTYpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MDQsMjEgKzgwNCwyMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEhh
bmRsZXNBdXRoZW50aWNhdGlvCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRIYW5kbGVz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVm
PiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUoaGFuZGxlc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlcykpOwotICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0
KCkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3Ry
aW5nUmVmIHVzZXJuYW1lKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0QXV0aGVudGlj
YXRpb25Vc2VybmFtZSIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJv
ZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcodXNlcm5hbWUpKTsKLSAgICBX
S0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQ
b3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXV0aGVudGljYXRpb25QYXNzd29yZChKU1N0cmluZ1JlZiBwYXNzd29yZCkKIHsKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQiKSk7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aEpTU3RyaW5nKHBhc3N3b3JkKSk7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RSdW5uZXI6OnNlY3VyZUV2ZW50SW5wdXRJc0Vu
YWJsZWQoKSBjb25zdApAQCAtODI2LDcgKzgyNiw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6c2VjdXJl
RXZlbnRJbnB1dElzRW5hYmwKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNlY3VyZUV2ZW50SW5w
dXRJc0VuYWJsZWQiKSk7CiAgICAgV0tUeXBlUmVmIHJldHVybkRhdGEgPSAwOwogCi0gICAgV0tC
dW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsICZyZXR1cm5EYXRhKTsKKyAgICBXS0J1bmRs
ZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5w
YWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsICZyZXR1cm5EYXRhKTsKICAgICBy
ZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5E
YXRhKSk7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEJsb2Nr
QWxsUGx1Z2lucyhib29sCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRCbG9ja0FsbFBs
dWdpbnMiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9w
dFdLLCBXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkQmxvY2spKTsKLSAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKIEpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6bnVtYmVy
T2ZERkdDb21waWxlcyhKU1ZhbHVlUmVmIHRoZUZ1bmN0aW9uKQo=
</data>
<flag name="review"
          id="274788"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>