<?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>148001</bug_id>
          
          <creation_ts>2015-08-13 16:17:23 -0700</creation_ts>
          <short_desc>[Win] Replace the MIDL comments ([in], [inout]) in interface code with equivalent SAL declarations</short_desc>
          <delta_ts>2015-08-20 14:37:26 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148240</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117449</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-13 16:17:23 -0700</bug_when>
    <thetext>Our Windows COM interfaces are peppered with old, possibly invalid comments based on the IDL used to generate the original Windows headers years ago.

Instead, we should have the MIDL compiler generate output with appropriate SAL declarations, and modify our Windows code to use the right SAL declarations instead of these comments.

While this won&apos;t make the code any prettier on Windows, it has the advantage of allowing the compiler tell us if any of our implementations deviate from the interface declarations, and will help Microsoft&apos;s static analyzer do a better job of analyzing our Windows code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118928</commentid>
    <comment_count>1</comment_count>
      <attachid>259380</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-19 11:04:41 -0700</bug_when>
    <thetext>Created attachment 259380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118930</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 11:07:45 -0700</bug_when>
    <thetext>Attachment 259380 did not pass style-queue:


ERROR: Source/WebKit/win/WebDataSource.cpp:53:  IID_WebDataSource is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/Interfaces/Accessible2/AccessibleEditableText.idl:54:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/WebKit/win/WebArchive.h:55:  The parameter name &quot;subResources&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebArchive.h:56:  The parameter name &quot;subFrameArchives&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/AccessibleBase.h:51:  The parameter name &quot;targets&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/AccessibleBase.h:65:  The parameter name &quot;extendedStates&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/AccessibleBase.h:66:  The parameter name &quot;localizedExtendedStates&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/Interfaces/Accessible2/AccessibleText2.idl:54:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/WebKit/win/WebHTMLRepresentation.h:61:  The parameter name &quot;labels&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebHTMLRepresentation.h:62:  The parameter name &quot;labels&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebHTMLRepresentation.h:63:  The parameter name &quot;labels&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/DOMHTMLClasses.h:154:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/win/DOMHTMLClasses.h:912:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/win/DOMHTMLClasses.cpp:390:  DOMHTMLDocument::getElementById_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:141:  AccessibleBase::get_attribute is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:153:  AccessibleBase::get_accessibleWithCaret is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:163:  AccessibleBase::get_relationTargetsOfType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:170:  AccessibleBase::get_nRelations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:182:  AccessibleBase::get_relation is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:193:  AccessibleBase::get_relations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:230:  AccessibleBase::get_groupPosition is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:236:  AccessibleBase::get_states is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:249:  AccessibleBase::get_extendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:261:  AccessibleBase::get_localizedExtendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:273:  AccessibleBase::get_nExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:286:  AccessibleBase::get_extendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:292:  AccessibleBase::get_localizedExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:298:  AccessibleBase::get_uniqueID is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:310:  AccessibleBase::get_windowHandle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:316:  AccessibleBase::get_indexInParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:321:  AccessibleBase::get_locale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:334:  AccessibleBase::get_attributes is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:347:  AccessibleBase::get_accParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:371:  AccessibleBase::get_accChildCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:381:  AccessibleBase::get_accChild is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:399:  AccessibleBase::get_accName is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:417:  AccessibleBase::get_accValue is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:543:  AccessibleBase::get_accState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:562:  AccessibleBase::get_accHelp is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/AccessibleBase.cpp:580:  AccessibleBase::get_accKeyboardShortcut is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:4722:  WebView::delete_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:6543:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:6544:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:6563:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:6564:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:6587:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.cpp:6593:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/Interfaces/Accessible2/AccessibleText.idl:54:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/WebKit/win/WebView.h:118:  The parameter name &quot;mimeTypes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:169:  The parameter name &quot;types&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:171:  The parameter name &quot;withPasteboardTypes&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:345:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.h:345:  The parameter name &quot;whitelist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:346:  The parameter name &quot;blacklist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:348:  The parameter name &quot;whitelist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:348:  The parameter name &quot;blacklist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:348:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.h:368:  The parameter name &quot;position&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:369:  The parameter name &quot;error&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:389:  The parameter name &quot;whitelist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:389:  The parameter name &quot;blacklist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:389:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/win/WebView.h:391:  The parameter name &quot;whitelist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:391:  The parameter name &quot;blacklist&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/win/WebView.h:391:  __inout_ecount_full is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 71 in 134 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118931</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-19 11:11:55 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 259380 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/win/WebDataSource.cpp:53:  IID_WebDataSource is
&gt; incorrectly named. Don&apos;t use underscores in your identifier names. 
&gt; [readability/naming/underscores] [4]
&gt; ERROR:
&gt; Source/WebKit/win/Interfaces/Accessible2/AccessibleEditableText.idl:54:  One

[ ... ]

&gt; named. Don&apos;t use underscores in your identifier names. 
&gt; [readability/naming/underscores] [4]
&gt; Total errors found: 71 in 134 files
&gt; 

These are all required names due to various COM interfaces defined by Microsoft and the Accessibility specifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118934</commentid>
    <comment_count>4</comment_count>
      <attachid>259380</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-19 11:17:36 -0700</bug_when>
    <thetext>Comment on attachment 259380
Patch

yikes. rs=me, but please test carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119096</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-19 17:00:51 -0700</bug_when>
    <thetext>Committed r188662: &lt;http://trac.webkit.org/changeset/188662&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259380</attachid>
            <date>2015-08-19 11:04:41 -0700</date>
            <delta_ts>2015-08-19 11:17:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148001-20150819111947.patch</filename>
            <type>text/plain</type>
            <size>1360470</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODg2NDApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA4LTE5ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFJlcGxhY2UgTUlETCBb
aW4vb3V0XSBjb21tZW50cyB3aXRoIGVxdWl2YWxlbnQgU0FMCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMv
SW50ZXJmYWNlc0NvbW1vbi5wcm9wczogVHVybgorICAgICAgICBvbiBTQUwgZGVjbGFyYXRpb25z
IGluIE1JREwgb3V0cHV0LgorCiAyMDE1LTA4LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBhbGwgcmVtYWluaW5nIHVzZXMgb2YgV1RGOjpNdXRl
eCB3aXRoIFdURjo6TG9jawpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRl
cmZhY2VzL0ludGVyZmFjZXNDb21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFjZXNDb21tb24ucHJvcHMJKHJldmlz
aW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9J
bnRlcmZhY2VzQ29tbW9uLnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiwxNCBAQAog
ICAgICAgPERsbERhdGFGaWxlTmFtZT5kbGxkYXRhLmM8L0RsbERhdGFGaWxlTmFtZT4KICAgICAg
IDxUeXBlTGlicmFyeU5hbWU+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXFdlYktpdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxWYWxpZGF0
ZUFsbFBhcmFtZXRlcnM+dHJ1ZTwvVmFsaWRhdGVBbGxQYXJhbWV0ZXJzPgorICAgICAgPEVuYWJs
ZUVycm9yQ2hlY2tzPkFsbDwvRW5hYmxlRXJyb3JDaGVja3M+CisgICAgICA8RXJyb3JDaGVja0Fs
bG9jYXRpb25zPnRydWU8L0Vycm9yQ2hlY2tBbGxvY2F0aW9ucz4KKyAgICAgIDxFcnJvckNoZWNr
Qm91bmRzPnRydWU8L0Vycm9yQ2hlY2tCb3VuZHM+CisgICAgICA8RXJyb3JDaGVja0VudW1SYW5n
ZT50cnVlPC9FcnJvckNoZWNrRW51bVJhbmdlPgorICAgICAgPEVycm9yQ2hlY2tSZWZQb2ludGVy
cz50cnVlPC9FcnJvckNoZWNrUmVmUG9pbnRlcnM+CisgICAgICA8RXJyb3JDaGVja1N0dWJEYXRh
PnRydWU8L0Vycm9yQ2hlY2tTdHViRGF0YT4KKyAgICAgIDxXYXJuQXNFcnJvcj5mYWxzZTwvV2Fy
bkFzRXJyb3I+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L3NhbCAlKEFkZGl0aW9uYWxPcHRp
b25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CiAgICAgPC9NaWRsPgogICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CiAgIDxJdGVtR3JvdXAgLz4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
ODY0MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwMzggQEAKKzIwMTUtMDgtMTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVwbGFjZSBNSURMIFtpbi9vdXRdIGNvbW1lbnRzIHdp
dGggZXF1aXZhbGVudCBTQUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0ODAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0aGUgbWFueSAiLypbaW5dKi8iIGFuZCAiLypbb3V0XSovIiBjb21t
ZW50cyBpbiB0aGUKKyAgICAgICAgV2luZG93cyBpbnRlcmZhY2UgY29kZSB0byB1c2UgdGhlIGVx
dWl2YWxlbnQgU0FMIG1hY3Jvcy4gVGhpcworICAgICAgICB3aWxsIGFsbG93IE1TVkMgc3RhdGlj
IGFuYWx5c2lzIHRvIGFjdHVhbGx5IGVuZm9yY2UgdGhhdCB0aGVzZQorICAgICAgICBzZW1hbnRp
Y3MgYXJlIGJlaW5nIGhvbm9yZWQsIGFuZCBwcm92aWRlIGJldHRlciBjb21waWxlLXRpbWUKKyAg
ICAgICAgc3VwcG9ydCBmb3IgYXZvaWRpbmcgQVBJIG1pc3VzZS4KKworICAgICAgICBXaGlsZSBt
YWtpbmcgdGhlc2UgY2hhbmdlcywgSSBhbHNvIGNvcnJlY3RlZCBhIG51bWJlciBvZiBiYWQKKyAg
ICAgICAgc3R5bGUgaXNzdWVzIGluIHRoZSBXaW5kb3dzIGNvZGU6CisgICAgICAgIC0gVXNlICdu
dWxscHRyJyBpbnN0ZWFkIG9mIDAKKyAgICAgICAgLSBDaGVjayBmb3IgbnVsbCBpbnB1dCBwb2lu
dGVycyBpbnN0ZWFkIG9mIGJsaW5kbHkgZGVyZWZlcmVuY2luZworICAgICAgICB0aGVtLgorICAg
ICAgICAtIEVuZm9yY2UgdGhlIG51bGwtb24tZXJyb3IgYmVoYXZpb3IgZXhwZWN0ZWQgb24gQ09N
IGludGVyZmFjZXMuCisKKyAgICAgICAgKiBBY2Nlc3NpYmxlQmFzZS5jcHA6CisgICAgICAgIChB
Y2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJhc2UpOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6
OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpRdWVyeVNlcnZpY2Up
OgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKEFj
Y2Vzc2libGVCYXNlOjpSZWxlYXNlKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0
cmlidXRlKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjZXNzaWJsZVdpdGhDYXJl
dCk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X3JlbGF0aW9uVGFyZ2V0c09mVHlwZSk6
CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X25SZWxhdGlvbnMpOgorICAgICAgICAoQWNj
ZXNzaWJsZUJhc2U6OmdldF9yZWxhdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0
X3JlbGF0aW9ucyk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6cm9sZSk6CisgICAgICAgIChB
Y2Nlc3NpYmxlQmFzZTo6c2Nyb2xsVG9Qb2ludCk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6
Z2V0X2dyb3VwUG9zaXRpb24pOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9zdGF0ZXMp
OgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9leHRlbmRlZFJvbGUpOgorICAgICAgICAo
QWNjZXNzaWJsZUJhc2U6OmdldF9sb2NhbGl6ZWRFeHRlbmRlZFJvbGUpOgorICAgICAgICAoQWNj
ZXNzaWJsZUJhc2U6OmdldF9uRXh0ZW5kZWRTdGF0ZXMpOgorICAgICAgICAoQWNjZXNzaWJsZUJh
c2U6OmdldF9leHRlbmRlZFN0YXRlcyk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2xv
Y2FsaXplZEV4dGVuZGVkU3RhdGVzKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfdW5p
cXVlSUQpOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF93aW5kb3dIYW5kbGUpOgorICAg
ICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9pbmRleEluUGFyZW50KToKKyAgICAgICAgKEFjY2Vz
c2libGVCYXNlOjpnZXRfbG9jYWxlKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0
cmlidXRlcyk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY1BhcmVudCk6CisgICAg
ICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0NoaWxkQ291bnQpOgorICAgICAgICAoQWNjZXNz
aWJsZUJhc2U6OmdldF9hY2NDaGlsZCk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2Fj
Y05hbWUpOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NWYWx1ZSk6CisgICAgICAg
IChBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKEFjY2Vzc2li
bGVCYXNlOjpnZXRfYWNjUm9sZSk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6c3RhdGUpOgor
ICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NTdGF0ZSk6CisgICAgICAgIChBY2Nlc3Np
YmxlQmFzZTo6Z2V0X2FjY0hlbHApOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NL
ZXlib2FyZFNob3J0Y3V0KToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjphY2NTZWxlY3QpOgor
ICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NTZWxlY3Rpb24pOgorICAgICAgICAoQWNj
ZXNzaWJsZUJhc2U6OmdldF9hY2NGb2N1cyk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6Z2V0
X2FjY0RlZmF1bHRBY3Rpb24pOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmFjY0xvY2F0aW9u
KToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjphY2NOYXZpZ2F0ZSk6CisgICAgICAgIChBY2Nl
c3NpYmxlQmFzZTo6YWNjSGl0VGVzdCk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6YWNjRG9E
ZWZhdWx0QWN0aW9uKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjp3cmFwcGVyKToKKyAgICAg
ICAgKEFjY2Vzc2libGVCYXNlOjppc1NhbWVPYmplY3QpOgorICAgICAgICAqIEFjY2Vzc2libGVC
YXNlLmg6CisgICAgICAgICogQWNjZXNzaWJsZVRleHRJbXBsLmNwcDoKKyAgICAgICAgKEFjY2Vz
c2libGVUZXh0OjpnZXRfYXR0cmlidXRlcyk6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6UXVl
cnlJbnRlcmZhY2UpOgorICAgICAgICAqIEFjY2Vzc2libGVUZXh0SW1wbC5oOgorICAgICAgICAo
QWNjZXNzaWJsZVRleHQ6OkFkZFJlZik6CisgICAgICAgICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuY3BwOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVBy
b3BlcnR5QmFnKToKKyAgICAgICAgKENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpRdWVyeUludGVy
ZmFjZSk6CisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6QWRkUmVmKToKKyAgICAg
ICAgKENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpSZWFkKToKKyAgICAgICAgKENGRGljdGlvbmFy
eVByb3BlcnR5QmFnOjpXcml0ZSk6CisgICAgICAgICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
aDoKKyAgICAgICAgKiBDT01FbnVtVmFyaWFudC5oOgorICAgICAgICAoQ09NRW51bVZhcmlhbnQ6
OkNPTUVudW1WYXJpYW50KToKKyAgICAgICAgKENPTUVudW1WYXJpYW50Ojp+Q09NRW51bVZhcmlh
bnQpOgorICAgICAgICAoQ09NRW51bVZhcmlhbnQ8Q29udGFpbmVyVHlwZT46OlF1ZXJ5SW50ZXJm
YWNlKToKKyAgICAgICAgKENPTUVudW1WYXJpYW50PENvbnRhaW5lclR5cGU+OjpSZXNldCk6Cisg
ICAgICAgIChDT01FbnVtVmFyaWFudDxDb250YWluZXJUeXBlPjo6Q2xvbmUpOgorICAgICAgICAq
IENPTVByb3BlcnR5QmFnLmg6CisgICAgICAgIChDT01Qcm9wZXJ0eUJhZzo6Q09NUHJvcGVydHlC
YWcpOgorICAgICAgICAoQ09NUHJvcGVydHlCYWc6On5DT01Qcm9wZXJ0eUJhZyk6CisgICAgICAg
IChIYXNoVHlwZT46OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKEhhc2hUeXBlPjo6UmVhZCk6
CisgICAgICAgIChIYXNoVHlwZT46OldyaXRlKToKKyAgICAgICAgKEhhc2hUeXBlPjo6Q291bnRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKEhhc2hUeXBlPjo6R2V0UHJvcGVydHlJbmZvKToKKyAgICAg
ICAgKEhhc2hUeXBlPjo6TG9hZE9iamVjdCk6CisgICAgICAgICogRE9NQ1NTQ2xhc3Nlcy5jcHA6
CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpET01DU1NTdHlsZURlY2xhcmF0aW9u
KToKKyAgICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OmNyZWF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAg
KERPTUNTU1N0eWxlRGVjbGFyYXRpb246OmNzc1RleHQpOgorICAgICAgICAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVt
b3ZlUHJvcGVydHkpOgorICAgICAgICAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlQcmlvcml0eSk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0
eSk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpsZW5ndGgpOgorICAgICAgICAo
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xh
cmF0aW9uOjpwYXJlbnRSdWxlKToKKyAgICAgICAgKiBET01DU1NDbGFzc2VzLmg6CisgICAgICAg
IChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpBZGRSZWYpOgorICAgICAgICAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6UmVsZWFzZSk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjp0
aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpjYWxsV2Vi
U2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OmV2YWx1YXRl
V2ViU2NyaXB0KToKKyAgICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVdlYlNj
cmlwdEtleSk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzdHJpbmdSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjp3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgpOgorICAgICAgICAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0V2ViU2NyaXB0
VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OnNldEV4Y2Vw
dGlvbik6CisgICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAoRE9NT2JqZWN0
OjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01Ob2RlOjpRdWVyeUludGVyZmFjZSk6Cisg
ICAgICAgIChET01Ob2RlOjpub2RlTmFtZSk6CisgICAgICAgIChET01Ob2RlOjpub2RlVmFsdWUp
OgorICAgICAgICAoRE9NTm9kZTo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTU5vZGU6Om5v
ZGVUeXBlKToKKyAgICAgICAgKERPTU5vZGU6OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NTm9k
ZTo6Y2hpbGROb2Rlcyk6CisgICAgICAgIChET01Ob2RlOjpmaXJzdENoaWxkKToKKyAgICAgICAg
KERPTU5vZGU6Omxhc3RDaGlsZCk6CisgICAgICAgIChET01Ob2RlOjpwcmV2aW91c1NpYmxpbmcp
OgorICAgICAgICAoRE9NTm9kZTo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoRE9NTm9kZTo6YXR0
cmlidXRlcyk6CisgICAgICAgIChET01Ob2RlOjpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERP
TU5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01Ob2RlOjpyZXBsYWNlQ2hpbGQpOgor
ICAgICAgICAoRE9NTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoRE9NTm9kZTo6YXBwZW5k
Q2hpbGQpOgorICAgICAgICAoRE9NTm9kZTo6aGFzQ2hpbGROb2Rlcyk6CisgICAgICAgIChET01O
b2RlOjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NTm9kZTo6bm9ybWFsaXplKToKKyAgICAgICAg
KERPTU5vZGU6OmlzU3VwcG9ydGVkKToKKyAgICAgICAgKERPTU5vZGU6Om5hbWVzcGFjZVVSSSk6
CisgICAgICAgIChET01Ob2RlOjpwcmVmaXgpOgorICAgICAgICAoRE9NTm9kZTo6c2V0UHJlZml4
KToKKyAgICAgICAgKERPTU5vZGU6OmxvY2FsTmFtZSk6CisgICAgICAgIChET01Ob2RlOjpoYXNB
dHRyaWJ1dGVzKToKKyAgICAgICAgKERPTU5vZGU6OmlzU2FtZU5vZGUpOgorICAgICAgICAoRE9N
Tm9kZTo6aXNFcXVhbE5vZGUpOgorICAgICAgICAoRE9NTm9kZTo6dGV4dENvbnRlbnQpOgorICAg
ICAgICAoRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQpOgorICAgICAgICAoRE9NTm9kZTo6YWRkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChET01Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAg
ICAgICAgKERPTU5vZGU6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoRE9NTm9kZTo6RE9NTm9k
ZSk6CisgICAgICAgIChET01Ob2RlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChET01Ob2Rl
TGlzdDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NTm9kZUxpc3Q6Oml0ZW0pOgorICAg
ICAgICAoRE9NTm9kZUxpc3Q6Omxlbmd0aCk6CisgICAgICAgIChET01Ob2RlTGlzdDo6RE9NTm9k
ZUxpc3QpOgorICAgICAgICAoRE9NTm9kZUxpc3Q6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KERPTURvY3VtZW50OjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6ZG9j
dHlwZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6aW1wbGVtZW50YXRpb24pOgorICAgICAgICAo
RE9NRG9jdW1lbnQ6OmRvY3VtZW50RWxlbWVudCk6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudCk6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCk6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUpOgorICAgICAgICAoRE9N
RG9jdW1lbnQ6OmNyZWF0ZUNvbW1lbnQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmNyZWF0ZUNE
QVRBU2VjdGlvbik6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKToKKyAgICAgICAgKERPTURvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGUpOgorICAgICAg
ICAoRE9NRG9jdW1lbnQ6OmNyZWF0ZUVudGl0eVJlZmVyZW5jZSk6CisgICAgICAgIChET01Eb2N1
bWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmltcG9y
dE5vZGUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyk6CisgICAgICAg
IChET01Eb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6
OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmdldEVsZW1l
bnRCeUlkKToKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKyAgICAg
ICAgKERPTURvY3VtZW50OjpjcmVhdGVFdmVudCk6CisgICAgICAgIChET01Eb2N1bWVudDo6RE9N
RG9jdW1lbnQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKERPTVdpbmRvdzo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NV2luZG93Ojpkb2N1
bWVudCk6CisgICAgICAgIChET01XaW5kb3c6OmdldENvbXB1dGVkU3R5bGUpOgorICAgICAgICAo
RE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMpOgorICAgICAgICAoRE9NV2luZG93OjpkZXZp
Y2VQaXhlbFJhdGlvKToKKyAgICAgICAgKERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoRE9NV2lu
ZG93OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKERPTVdpbmRvdzo6RE9NV2luZG93KToKKyAg
ICAgICAgKERPTVdpbmRvdzo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoRE9NRWxlbWVudDo6
UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NRWxlbWVudDo6Ym91bmRpbmdCb3gpOgorICAg
ICAgICAoRE9NRWxlbWVudDo6bGluZUJveFJlY3RzKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnRh
Z05hbWUpOgorICAgICAgICAoRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKERP
TUVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChET01FbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAg
IChET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRh
Z05hbWUpOgorICAgICAgICAoRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMpOgorICAgICAgICAo
RE9NRWxlbWVudDo6c2V0QXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NRWxlbWVudDo6cmVtb3Zl
QXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5TKToK
KyAgICAgICAgKERPTUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAgICAgIChET01F
bGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZSk6CisgICAgICAgIChET01FbGVtZW50OjpoYXNBdHRyaWJ1dGVOUyk6CisgICAg
ICAgIChET01FbGVtZW50Ojpmb2N1cyk6CisgICAgICAgIChET01FbGVtZW50OjpibHVyKToKKyAg
ICAgICAgKERPTUVsZW1lbnQ6OmNvcmVFbGVtZW50KToKKyAgICAgICAgKERPTUVsZW1lbnQ6Omlz
RXF1YWwpOgorICAgICAgICAoRE9NRWxlbWVudDo6aXNGb2N1c2VkKToKKyAgICAgICAgKERPTUVs
ZW1lbnQ6OmlubmVyVGV4dCk6CisgICAgICAgIChET01FbGVtZW50Ojpmb250KToKKyAgICAgICAg
KERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAoRE9NRWxlbWVudDo6bWFya2Vy
VGV4dEZvckxpc3RJdGVtKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKERPTUVsZW1lbnQ6OnN0eWxlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Om9mZnNl
dExlZnQpOgorICAgICAgICAoRE9NRWxlbWVudDo6b2Zmc2V0VG9wKToKKyAgICAgICAgKERPTUVs
ZW1lbnQ6Om9mZnNldFdpZHRoKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Om9mZnNldEhlaWdodCk6
CisgICAgICAgIChET01FbGVtZW50OjpvZmZzZXRQYXJlbnQpOgorICAgICAgICAoRE9NRWxlbWVu
dDo6Y2xpZW50V2lkdGgpOgorICAgICAgICAoRE9NRWxlbWVudDo6Y2xpZW50SGVpZ2h0KToKKyAg
ICAgICAgKERPTUVsZW1lbnQ6OnNjcm9sbExlZnQpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0
U2Nyb2xsTGVmdCk6CisgICAgICAgIChET01FbGVtZW50OjpzY3JvbGxUb3ApOgorICAgICAgICAo
RE9NRWxlbWVudDo6c2V0U2Nyb2xsVG9wKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnNjcm9sbFdp
ZHRoKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnNjcm9sbEhlaWdodCk6CisgICAgICAgIChET01F
bGVtZW50OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChET01FbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OkRPTUVsZW1lbnQpOgorICAgICAg
ICAoRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoRE9NUmFuZ2U6OlF1ZXJ5
SW50ZXJmYWNlKToKKyAgICAgICAgKERPTVJhbmdlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
IChET01SYW5nZTo6c3RhcnRDb250YWluZXIpOgorICAgICAgICAoRE9NUmFuZ2U6OnN0YXJ0T2Zm
c2V0KToKKyAgICAgICAgKERPTVJhbmdlOjplbmRDb250YWluZXIpOgorICAgICAgICAoRE9NUmFu
Z2U6OmVuZE9mZnNldCk6CisgICAgICAgIChET01SYW5nZTo6Y29sbGFwc2VkKToKKyAgICAgICAg
KERPTVJhbmdlOjpjb21tb25BbmNlc3RvckNvbnRhaW5lcik6CisgICAgICAgIChET01SYW5nZTo6
c2V0U3RhcnQpOgorICAgICAgICAoRE9NUmFuZ2U6OnNldEVuZCk6CisgICAgICAgIChET01SYW5n
ZTo6c2V0U3RhcnRCZWZvcmUpOgorICAgICAgICAoRE9NUmFuZ2U6OnNldFN0YXJ0QWZ0ZXIpOgor
ICAgICAgICAoRE9NUmFuZ2U6OnNldEVuZEJlZm9yZSk6CisgICAgICAgIChET01SYW5nZTo6c2V0
RW5kQWZ0ZXIpOgorICAgICAgICAoRE9NUmFuZ2U6OmNvbGxhcHNlKToKKyAgICAgICAgKERPTVJh
bmdlOjpzZWxlY3ROb2RlKToKKyAgICAgICAgKERPTVJhbmdlOjpzZWxlY3ROb2RlQ29udGVudHMp
OgorICAgICAgICAoRE9NUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyk6CisgICAgICAgIChE
T01SYW5nZTo6ZGVsZXRlQ29udGVudHMpOgorICAgICAgICAoRE9NUmFuZ2U6OmV4dHJhY3RDb250
ZW50cyk6CisgICAgICAgIChET01SYW5nZTo6Y2xvbmVDb250ZW50cyk6CisgICAgICAgIChET01S
YW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChET01SYW5nZTo6c3Vycm91bmRDb250ZW50cyk6
CisgICAgICAgIChET01SYW5nZTo6Y2xvbmVSYW5nZSk6CisgICAgICAgIChET01SYW5nZTo6dG9T
dHJpbmcpOgorICAgICAgICAoRE9NUmFuZ2U6OmRldGFjaCk6CisgICAgICAgICogRE9NQ29yZUNs
YXNzZXMuaDoKKyAgICAgICAgKERPTU9iamVjdDo6QWRkUmVmKToKKyAgICAgICAgKERPTU9iamVj
dDo6UmVsZWFzZSk6CisgICAgICAgIChET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKToKKyAgICAg
ICAgKERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChET01PYmplY3Q6
OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0
S2V5KToKKyAgICAgICAgKERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NT2JqZWN0
OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NT2JqZWN0OjpzZXRFeGNl
cHRpb24pOgorICAgICAgICAoRE9NTm9kZUxpc3Q6OkFkZFJlZik6CisgICAgICAgIChET01Ob2Rl
TGlzdDo6UmVsZWFzZSk6CisgICAgICAgIChET01Ob2RlTGlzdDo6dGhyb3dFeGNlcHRpb24pOgor
ICAgICAgICAoRE9NTm9kZUxpc3Q6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9N
Tm9kZUxpc3Q6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTU5vZGVMaXN0OjpyZW1v
dmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NTm9kZUxpc3Q6OnN0cmluZ1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKERPTU5vZGVMaXN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAg
ICAgICAoRE9NTm9kZUxpc3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChE
T01Ob2RlTGlzdDo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTURvY3VtZW50OjpBZGRSZWYp
OgorICAgICAgICAoRE9NRG9jdW1lbnQ6OlJlbGVhc2UpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6
OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTURvY3VtZW50OjpjYWxsV2ViU2NyaXB0TWV0
aG9kKToKKyAgICAgICAgKERPTURvY3VtZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAg
IChET01Eb2N1bWVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTURvY3VtZW50
OjpzdHJpbmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01Eb2N1bWVudDo6d2ViU2NyaXB0
VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTURvY3VtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0
SW5kZXgpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OnNldEV4Y2VwdGlvbik6CisgICAgICAgIChE
T01Eb2N1bWVudDo6bm9kZU5hbWUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Om5vZGVWYWx1ZSk6
CisgICAgICAgIChET01Eb2N1bWVudDo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTURvY3Vt
ZW50Ojpub2RlVHlwZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6cGFyZW50Tm9kZSk6CisgICAg
ICAgIChET01Eb2N1bWVudDo6Y2hpbGROb2Rlcyk6CisgICAgICAgIChET01Eb2N1bWVudDo6Zmly
c3RDaGlsZCk6CisgICAgICAgIChET01Eb2N1bWVudDo6bGFzdENoaWxkKToKKyAgICAgICAgKERP
TURvY3VtZW50OjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Om5leHRT
aWJsaW5nKToKKyAgICAgICAgKERPTURvY3VtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERP
TURvY3VtZW50Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERPTURvY3VtZW50OjppbnNlcnRC
ZWZvcmUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChE
T01Eb2N1bWVudDo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmFwcGVuZENo
aWxkKToKKyAgICAgICAgKERPTURvY3VtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAgKERP
TURvY3VtZW50OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Om5vcm1hbGl6ZSk6
CisgICAgICAgIChET01Eb2N1bWVudDo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NRG9jdW1l
bnQ6Om5hbWVzcGFjZVVSSSk6CisgICAgICAgIChET01Eb2N1bWVudDo6cHJlZml4KToKKyAgICAg
ICAgKERPTURvY3VtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmxvY2Fs
TmFtZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6aGFzQXR0cmlidXRlcyk6CisgICAgICAgIChE
T01Eb2N1bWVudDo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6aXNFcXVhbE5v
ZGUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTURv
Y3VtZW50OjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgIChET01Eb2N1bWVudDo6ZG9jdW1lbnQp
OgorICAgICAgICAoRE9NV2luZG93OjpBZGRSZWYpOgorICAgICAgICAoRE9NV2luZG93OjpSZWxl
YXNlKToKKyAgICAgICAgKERPTVdpbmRvdzo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9N
V2luZG93OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTVdpbmRvdzo6ZXZhbHVh
dGVXZWJTY3JpcHQpOgorICAgICAgICAoRE9NV2luZG93OjpyZW1vdmVXZWJTY3JpcHRLZXkpOgor
ICAgICAgICAoRE9NV2luZG93OjpzdHJpbmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01X
aW5kb3c6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01XaW5kb3c6OnNldFdl
YlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01XaW5kb3c6OnNldEV4Y2VwdGlvbik6
CisgICAgICAgIChET01XaW5kb3c6OndpbmRvdyk6CisgICAgICAgIChET01FbGVtZW50OjpBZGRS
ZWYpOgorICAgICAgICAoRE9NRWxlbWVudDo6UmVsZWFzZSk6CisgICAgICAgIChET01FbGVtZW50
Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01FbGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0
aG9kKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAg
KERPTUVsZW1lbnQ6OnJlbW92ZVdlYlNjcmlwdEtleSk6CisgICAgICAgIChET01FbGVtZW50Ojpz
dHJpbmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01FbGVtZW50Ojp3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4
KToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnNldEV4Y2VwdGlvbik6CisgICAgICAgIChET01FbGVt
ZW50Ojpub2RlTmFtZSk6CisgICAgICAgIChET01FbGVtZW50Ojpub2RlVmFsdWUpOgorICAgICAg
ICAoRE9NRWxlbWVudDo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Om5vZGVU
eXBlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NRWxl
bWVudDo6Y2hpbGROb2Rlcyk6CisgICAgICAgIChET01FbGVtZW50OjpmaXJzdENoaWxkKToKKyAg
ICAgICAgKERPTUVsZW1lbnQ6Omxhc3RDaGlsZCk6CisgICAgICAgIChET01FbGVtZW50OjpwcmV2
aW91c1NpYmxpbmcpOgorICAgICAgICAoRE9NRWxlbWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAg
ICAoRE9NRWxlbWVudDo6YXR0cmlidXRlcyk6CisgICAgICAgIChET01FbGVtZW50Ojpvd25lckRv
Y3VtZW50KToKKyAgICAgICAgKERPTUVsZW1lbnQ6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChE
T01FbGVtZW50OjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoRE9NRWxlbWVudDo6cmVtb3ZlQ2hp
bGQpOgorICAgICAgICAoRE9NRWxlbWVudDo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoRE9NRWxl
bWVudDo6aGFzQ2hpbGROb2Rlcyk6CisgICAgICAgIChET01FbGVtZW50OjpjbG9uZU5vZGUpOgor
ICAgICAgICAoRE9NRWxlbWVudDo6bm9ybWFsaXplKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Omlz
U3VwcG9ydGVkKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Om5hbWVzcGFjZVVSSSk6CisgICAgICAg
IChET01FbGVtZW50OjpwcmVmaXgpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0UHJlZml4KToK
KyAgICAgICAgKERPTUVsZW1lbnQ6OmxvY2FsTmFtZSk6CisgICAgICAgIChET01FbGVtZW50Ojpo
YXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OmlzU2FtZU5vZGUpOgorICAgICAg
ICAoRE9NRWxlbWVudDo6aXNFcXVhbE5vZGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6dGV4dENv
bnRlbnQpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0VGV4dENvbnRlbnQpOgorICAgICAgICAo
RE9NRWxlbWVudDo6ZWxlbWVudCk6CisgICAgICAgIChET01SYW5nZTo6QWRkUmVmKToKKyAgICAg
ICAgKERPTVJhbmdlOjpSZWxlYXNlKToKKyAgICAgICAgKERPTVJhbmdlOjp0aHJvd0V4Y2VwdGlv
bik6CisgICAgICAgIChET01SYW5nZTo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChE
T01SYW5nZTo6ZXZhbHVhdGVXZWJTY3JpcHQpOgorICAgICAgICAoRE9NUmFuZ2U6OnJlbW92ZVdl
YlNjcmlwdEtleSk6CisgICAgICAgIChET01SYW5nZTo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoRE9NUmFuZ2U6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01S
YW5nZTo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTVJhbmdlOjpzZXRF
eGNlcHRpb24pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuY3BwOgorICAgICAgICAoRE9N
RXZlbnRMaXN0ZW5lcjo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoRE9NRXZlbnQ6OkRPTUV2ZW50KToKKyAgICAgICAg
KERPTUV2ZW50OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChET01FdmVudDo6UXVlcnlJbnRl
cmZhY2UpOgorICAgICAgICAoRE9NRXZlbnQ6OnR5cGUpOgorICAgICAgICAoRE9NRXZlbnQ6OnRh
cmdldCk6CisgICAgICAgIChET01FdmVudDo6Y3VycmVudFRhcmdldCk6CisgICAgICAgIChET01F
dmVudDo6ZXZlbnRQaGFzZSk6CisgICAgICAgIChET01FdmVudDo6YnViYmxlcyk6CisgICAgICAg
IChET01FdmVudDo6Y2FuY2VsYWJsZSk6CisgICAgICAgIChET01FdmVudDo6dGltZVN0YW1wKToK
KyAgICAgICAgKERPTUV2ZW50OjpzdG9wUHJvcGFnYXRpb24pOgorICAgICAgICAoRE9NRXZlbnQ6
OnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKERPTUV2ZW50Ojppbml0RXZlbnQpOgorICAgICAg
ICAoRE9NVUlFdmVudDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NVUlFdmVudDo6dmll
dyk6CisgICAgICAgIChET01VSUV2ZW50OjpkZXRhaWwpOgorICAgICAgICAoRE9NVUlFdmVudDo6
aW5pdFVJRXZlbnQpOgorICAgICAgICAoRE9NVUlFdmVudDo6a2V5Q29kZSk6CisgICAgICAgIChE
T01VSUV2ZW50OjpjaGFyQ29kZSk6CisgICAgICAgIChET01VSUV2ZW50Ojp1bnVzZWQxKToKKyAg
ICAgICAgKERPTVVJRXZlbnQ6OnVudXNlZDIpOgorICAgICAgICAoRE9NVUlFdmVudDo6cGFnZVgp
OgorICAgICAgICAoRE9NVUlFdmVudDo6cGFnZVkpOgorICAgICAgICAoRE9NVUlFdmVudDo6d2hp
Y2gpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAg
ICAoRE9NS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllcik6CisgICAgICAgIChET01LZXlib2Fy
ZEV2ZW50Ojpsb2NhdGlvbik6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50OjprZXlMb2NhdGlv
bik6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50OjpjdHJsS2V5KToKKyAgICAgICAgKERPTUtl
eWJvYXJkRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKERPTUtleWJvYXJkRXZlbnQ6OmFsdEtl
eSk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50OjptZXRhS2V5KToKKyAgICAgICAgKERPTUtl
eWJvYXJkRXZlbnQ6OmFsdEdyYXBoS2V5KToKKyAgICAgICAgKERPTUtleWJvYXJkRXZlbnQ6Omdl
dE1vZGlmaWVyU3RhdGUpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJk
RXZlbnQpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAg
ICAoRE9NTW91c2VFdmVudDo6c2NyZWVuWCk6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpzY3Jl
ZW5ZKToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OmNsaWVudFgpOgorICAgICAgICAoRE9NTW91
c2VFdmVudDo6Y2xpZW50WSk6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpjdHJsS2V5KToKKyAg
ICAgICAgKERPTU1vdXNlRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6
OmFsdEtleSk6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjptZXRhS2V5KToKKyAgICAgICAgKERP
TU1vdXNlRXZlbnQ6OmJ1dHRvbik6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpyZWxhdGVkVGFy
Z2V0KToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KToKKyAgICAgICAg
KERPTU1vdXNlRXZlbnQ6Om9mZnNldFgpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6b2Zmc2V0
WSk6CisgICAgICAgIChET01Nb3VzZUV2ZW50Ojp4KToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6
OnkpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6ZnJvbUVsZW1lbnQpOgorICAgICAgICAoRE9N
TW91c2VFdmVudDo6dG9FbGVtZW50KToKKyAgICAgICAgKERPTU11dGF0aW9uRXZlbnQ6OlF1ZXJ5
SW50ZXJmYWNlKToKKyAgICAgICAgKERPTU11dGF0aW9uRXZlbnQ6OnJlbGF0ZWROb2RlKToKKyAg
ICAgICAgKERPTU11dGF0aW9uRXZlbnQ6OnByZXZWYWx1ZSk6CisgICAgICAgIChET01NdXRhdGlv
bkV2ZW50OjpuZXdWYWx1ZSk6CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50OjphdHRyTmFtZSk6
CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50OjphdHRyQ2hhbmdlKToKKyAgICAgICAgKERPTU11
dGF0aW9uRXZlbnQ6OmluaXRNdXRhdGlvbkV2ZW50KToKKyAgICAgICAgKERPTU92ZXJmbG93RXZl
bnQ6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKERPTU92ZXJmbG93RXZlbnQ6Om9yaWVudCk6
CisgICAgICAgIChET01PdmVyZmxvd0V2ZW50Ojpob3Jpem9udGFsT3ZlcmZsb3cpOgorICAgICAg
ICAoRE9NT3ZlcmZsb3dFdmVudDo6dmVydGljYWxPdmVyZmxvdyk6CisgICAgICAgIChET01XaGVl
bEV2ZW50OjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpzY3JlZW5Y
KToKKyAgICAgICAgKERPTVdoZWVsRXZlbnQ6OnNjcmVlblkpOgorICAgICAgICAoRE9NV2hlZWxF
dmVudDo6Y2xpZW50WCk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpjbGllbnRZKToKKyAgICAg
ICAgKERPTVdoZWVsRXZlbnQ6OmN0cmxLZXkpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6c2hp
ZnRLZXkpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6YWx0S2V5KToKKyAgICAgICAgKERPTVdo
ZWVsRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6d2hlZWxEZWx0YSk6
CisgICAgICAgIChET01XaGVlbEV2ZW50Ojp3aGVlbERlbHRhWCk6CisgICAgICAgIChET01XaGVl
bEV2ZW50Ojp3aGVlbERlbHRhWSk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpvZmZzZXRYKToK
KyAgICAgICAgKERPTVdoZWVsRXZlbnQ6Om9mZnNldFkpOgorICAgICAgICAoRE9NV2hlZWxFdmVu
dDo6eCk6CisgICAgICAgIChET01XaGVlbEV2ZW50Ojp5KToKKyAgICAgICAgKERPTVdoZWVsRXZl
bnQ6OmlzSG9yaXpvbnRhbCk6CisgICAgICAgIChET01XaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVu
dCk6CisgICAgICAgICogRE9NRXZlbnRzQ2xhc3Nlcy5oOgorICAgICAgICAoRE9NRXZlbnRMaXN0
ZW5lcjo6QWRkUmVmKToKKyAgICAgICAgKERPTUV2ZW50TGlzdGVuZXI6OlJlbGVhc2UpOgorICAg
ICAgICAoRE9NRXZlbnRMaXN0ZW5lcjo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9NRXZl
bnRMaXN0ZW5lcjo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChET01FdmVudExpc3Rl
bmVyOjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01FdmVudExpc3RlbmVyOjpyZW1v
dmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NRXZlbnRMaXN0ZW5lcjo6c3RyaW5nUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoRE9NRXZlbnRMaXN0ZW5lcjo6d2ViU2NyaXB0VmFsdWVBdElu
ZGV4KToKKyAgICAgICAgKERPTUV2ZW50TGlzdGVuZXI6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCk6CisgICAgICAgIChET01FdmVudExpc3RlbmVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAo
RE9NRXZlbnQ6OkFkZFJlZik6CisgICAgICAgIChET01FdmVudDo6UmVsZWFzZSk6CisgICAgICAg
IChET01FdmVudDo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9NRXZlbnQ6OmNhbGxXZWJT
Y3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NRXZlbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAg
ICAgICAgKERPTUV2ZW50OjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NRXZlbnQ6
OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTUV2ZW50Ojp3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgpOgorICAgICAgICAoRE9NRXZlbnQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCk6
CisgICAgICAgIChET01FdmVudDo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUV2ZW50Ojpj
b3JlRXZlbnQpOgorICAgICAgICAoRE9NVUlFdmVudDo6RE9NVUlFdmVudCk6CisgICAgICAgIChE
T01VSUV2ZW50OjpBZGRSZWYpOgorICAgICAgICAoRE9NVUlFdmVudDo6UmVsZWFzZSk6CisgICAg
ICAgIChET01VSUV2ZW50Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01VSUV2ZW50Ojpj
YWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTVVJRXZlbnQ6OmV2YWx1YXRlV2ViU2Ny
aXB0KToKKyAgICAgICAgKERPTVVJRXZlbnQ6OnJlbW92ZVdlYlNjcmlwdEtleSk6CisgICAgICAg
IChET01VSUV2ZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01VSUV2ZW50
Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NVUlFdmVudDo6c2V0V2ViU2Ny
aXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTVVJRXZlbnQ6OnNldEV4Y2VwdGlvbik6Cisg
ICAgICAgIChET01VSUV2ZW50Ojp0eXBlKToKKyAgICAgICAgKERPTVVJRXZlbnQ6OnRhcmdldCk6
CisgICAgICAgIChET01VSUV2ZW50OjpjdXJyZW50VGFyZ2V0KToKKyAgICAgICAgKERPTVVJRXZl
bnQ6OmV2ZW50UGhhc2UpOgorICAgICAgICAoRE9NVUlFdmVudDo6YnViYmxlcyk6CisgICAgICAg
IChET01VSUV2ZW50OjpjYW5jZWxhYmxlKToKKyAgICAgICAgKERPTVVJRXZlbnQ6OnRpbWVTdGFt
cCk6CisgICAgICAgIChET01VSUV2ZW50OjpzdG9wUHJvcGFnYXRpb24pOgorICAgICAgICAoRE9N
VUlFdmVudDo6cHJldmVudERlZmF1bHQpOgorICAgICAgICAoRE9NVUlFdmVudDo6aW5pdEV2ZW50
KToKKyAgICAgICAgKERPTUtleWJvYXJkRXZlbnQ6OkRPTUtleWJvYXJkRXZlbnQpOgorICAgICAg
ICAoRE9NS2V5Ym9hcmRFdmVudDo6QWRkUmVmKToKKyAgICAgICAgKERPTUtleWJvYXJkRXZlbnQ6
OlJlbGVhc2UpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6dGhyb3dFeGNlcHRpb24pOgor
ICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAg
IChET01LZXlib2FyZEV2ZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01LZXli
b2FyZEV2ZW50OjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVu
dDo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6d2Vi
U2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUtleWJvYXJkRXZlbnQ6OnNldFdlYlNj
cmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50OjpzZXRFeGNlcHRp
b24pOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6dHlwZSk6CisgICAgICAgIChET01LZXli
b2FyZEV2ZW50Ojp0YXJnZXQpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6Y3VycmVudFRh
cmdldCk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50OjpldmVudFBoYXNlKToKKyAgICAgICAg
KERPTUtleWJvYXJkRXZlbnQ6OmJ1YmJsZXMpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6
Y2FuY2VsYWJsZSk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50Ojp0aW1lU3RhbXApOgorICAg
ICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6c3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKERPTUtl
eWJvYXJkRXZlbnQ6OnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKERPTUtleWJvYXJkRXZlbnQ6
OmluaXRFdmVudCk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50Ojp2aWV3KToKKyAgICAgICAg
KERPTUtleWJvYXJkRXZlbnQ6OmRldGFpbCk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50Ojpp
bml0VUlFdmVudCk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50OjprZXlDb2RlKToKKyAgICAg
ICAgKERPTUtleWJvYXJkRXZlbnQ6OmNoYXJDb2RlKToKKyAgICAgICAgKERPTUtleWJvYXJkRXZl
bnQ6OnVudXNlZDEpOgorICAgICAgICAoRE9NS2V5Ym9hcmRFdmVudDo6dW51c2VkMik6CisgICAg
ICAgIChET01LZXlib2FyZEV2ZW50OjpwYWdlWCk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50
OjpwYWdlWSk6CisgICAgICAgIChET01LZXlib2FyZEV2ZW50Ojp3aGljaCk6CisgICAgICAgIChE
T01Nb3VzZUV2ZW50OjpET01Nb3VzZUV2ZW50KToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OkFk
ZFJlZik6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpSZWxlYXNlKToKKyAgICAgICAgKERPTU1v
dXNlRXZlbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OmNhbGxX
ZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6ZXZhbHVhdGVXZWJTY3Jp
cHQpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAg
ICAgKERPTU1vdXNlRXZlbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTU1v
dXNlRXZlbnQ6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01Nb3VzZUV2ZW50
OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6c2V0
RXhjZXB0aW9uKToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OnR5cGUpOgorICAgICAgICAoRE9N
TW91c2VFdmVudDo6dGFyZ2V0KToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OmN1cnJlbnRUYXJn
ZXQpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6ZXZlbnRQaGFzZSk6CisgICAgICAgIChET01N
b3VzZUV2ZW50OjpidWJibGVzKToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OmNhbmNlbGFibGUp
OgorICAgICAgICAoRE9NTW91c2VFdmVudDo6dGltZVN0YW1wKToKKyAgICAgICAgKERPTU1vdXNl
RXZlbnQ6OnN0b3BQcm9wYWdhdGlvbik6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpwcmV2ZW50
RGVmYXVsdCk6CisgICAgICAgIChET01Nb3VzZUV2ZW50Ojppbml0RXZlbnQpOgorICAgICAgICAo
RE9NTW91c2VFdmVudDo6dmlldyk6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpkZXRhaWwpOgor
ICAgICAgICAoRE9NTW91c2VFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAoRE9NTW91c2VF
dmVudDo6a2V5Q29kZSk6CisgICAgICAgIChET01Nb3VzZUV2ZW50OjpjaGFyQ29kZSk6CisgICAg
ICAgIChET01Nb3VzZUV2ZW50Ojp1bnVzZWQxKToKKyAgICAgICAgKERPTU1vdXNlRXZlbnQ6OnVu
dXNlZDIpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6cGFnZVgpOgorICAgICAgICAoRE9NTW91
c2VFdmVudDo6cGFnZVkpOgorICAgICAgICAoRE9NTW91c2VFdmVudDo6d2hpY2gpOgorICAgICAg
ICAoRE9NTXV0YXRpb25FdmVudDo6RE9NTXV0YXRpb25FdmVudCk6CisgICAgICAgIChET01NdXRh
dGlvbkV2ZW50OjpBZGRSZWYpOgorICAgICAgICAoRE9NTXV0YXRpb25FdmVudDo6UmVsZWFzZSk6
CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChE
T01NdXRhdGlvbkV2ZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTU11dGF0
aW9uRXZlbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTU11dGF0aW9uRXZlbnQ6
OnJlbW92ZVdlYlNjcmlwdEtleSk6CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50OjpzdHJpbmdS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50Ojp3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgpOgorICAgICAgICAoRE9NTXV0YXRpb25FdmVudDo6c2V0V2ViU2NyaXB0VmFsdWVB
dEluZGV4KToKKyAgICAgICAgKERPTU11dGF0aW9uRXZlbnQ6OnNldEV4Y2VwdGlvbik6CisgICAg
ICAgIChET01NdXRhdGlvbkV2ZW50Ojp0eXBlKToKKyAgICAgICAgKERPTU11dGF0aW9uRXZlbnQ6
OnRhcmdldCk6CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50OjpjdXJyZW50VGFyZ2V0KToKKyAg
ICAgICAgKERPTU11dGF0aW9uRXZlbnQ6OmV2ZW50UGhhc2UpOgorICAgICAgICAoRE9NTXV0YXRp
b25FdmVudDo6YnViYmxlcyk6CisgICAgICAgIChET01NdXRhdGlvbkV2ZW50OjpjYW5jZWxhYmxl
KToKKyAgICAgICAgKERPTU11dGF0aW9uRXZlbnQ6OnRpbWVTdGFtcCk6CisgICAgICAgIChET01N
dXRhdGlvbkV2ZW50OjpzdG9wUHJvcGFnYXRpb24pOgorICAgICAgICAoRE9NTXV0YXRpb25FdmVu
dDo6cHJldmVudERlZmF1bHQpOgorICAgICAgICAoRE9NTXV0YXRpb25FdmVudDo6aW5pdEV2ZW50
KToKKyAgICAgICAgKERPTU92ZXJmbG93RXZlbnQ6OkRPTU92ZXJmbG93RXZlbnQpOgorICAgICAg
ICAoRE9NT3ZlcmZsb3dFdmVudDo6QWRkUmVmKToKKyAgICAgICAgKERPTU92ZXJmbG93RXZlbnQ6
OlJlbGVhc2UpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6dGhyb3dFeGNlcHRpb24pOgor
ICAgICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAg
IChET01PdmVyZmxvd0V2ZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01PdmVy
Zmxvd0V2ZW50OjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVu
dDo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6d2Vi
U2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTU92ZXJmbG93RXZlbnQ6OnNldFdlYlNj
cmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01PdmVyZmxvd0V2ZW50OjpzZXRFeGNlcHRp
b24pOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6dHlwZSk6CisgICAgICAgIChET01PdmVy
Zmxvd0V2ZW50Ojp0YXJnZXQpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6Y3VycmVudFRh
cmdldCk6CisgICAgICAgIChET01PdmVyZmxvd0V2ZW50OjpldmVudFBoYXNlKToKKyAgICAgICAg
KERPTU92ZXJmbG93RXZlbnQ6OmJ1YmJsZXMpOgorICAgICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6
Y2FuY2VsYWJsZSk6CisgICAgICAgIChET01PdmVyZmxvd0V2ZW50Ojp0aW1lU3RhbXApOgorICAg
ICAgICAoRE9NT3ZlcmZsb3dFdmVudDo6c3RvcFByb3BhZ2F0aW9uKToKKyAgICAgICAgKERPTU92
ZXJmbG93RXZlbnQ6OnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKERPTU92ZXJmbG93RXZlbnQ6
OmluaXRFdmVudCk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpET01XaGVlbEV2ZW50KToKKyAg
ICAgICAgKERPTVdoZWVsRXZlbnQ6OkFkZFJlZik6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpS
ZWxlYXNlKToKKyAgICAgICAgKERPTVdoZWVsRXZlbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAg
ICAgKERPTVdoZWVsRXZlbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NV2hl
ZWxFdmVudDo6ZXZhbHVhdGVXZWJTY3JpcHQpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6cmVt
b3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTVdoZWVsRXZlbnQ6OnN0cmluZ1JlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKERPTVdoZWVsRXZlbnQ6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6
CisgICAgICAgIChET01XaGVlbEV2ZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAg
ICAgICAoRE9NV2hlZWxFdmVudDo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTVdoZWVsRXZl
bnQ6OnR5cGUpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6dGFyZ2V0KToKKyAgICAgICAgKERP
TVdoZWVsRXZlbnQ6OmN1cnJlbnRUYXJnZXQpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6ZXZl
bnRQaGFzZSk6CisgICAgICAgIChET01XaGVlbEV2ZW50OjpidWJibGVzKToKKyAgICAgICAgKERP
TVdoZWVsRXZlbnQ6OmNhbmNlbGFibGUpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6dGltZVN0
YW1wKToKKyAgICAgICAgKERPTVdoZWVsRXZlbnQ6OnN0b3BQcm9wYWdhdGlvbik6CisgICAgICAg
IChET01XaGVlbEV2ZW50OjpwcmV2ZW50RGVmYXVsdCk6CisgICAgICAgIChET01XaGVlbEV2ZW50
Ojppbml0RXZlbnQpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6dmlldyk6CisgICAgICAgIChE
T01XaGVlbEV2ZW50OjpkZXRhaWwpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6aW5pdFVJRXZl
bnQpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6a2V5Q29kZSk6CisgICAgICAgIChET01XaGVl
bEV2ZW50OjpjaGFyQ29kZSk6CisgICAgICAgIChET01XaGVlbEV2ZW50Ojp1bnVzZWQxKToKKyAg
ICAgICAgKERPTVdoZWVsRXZlbnQ6OnVudXNlZDIpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6
cGFnZVgpOgorICAgICAgICAoRE9NV2hlZWxFdmVudDo6cGFnZVkpOgorICAgICAgICAoRE9NV2hl
ZWxFdmVudDo6d2hpY2gpOgorICAgICAgICAqIERPTUhUTUxDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTUhUTUxDb2xsZWN0aW9uOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01IVE1MQ29s
bGVjdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKERPTUhUTUxDb2xsZWN0aW9uOjppdGVtKToKKyAg
ICAgICAgKERPTUhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAoRE9NSFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01IVE1MT3B0aW9u
c0NvbGxlY3Rpb246OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0
TGVuZ3RoKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aXRlbSk6CisgICAg
ICAgIChET01IVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChET01I
VE1MRG9jdW1lbnQ6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6
dGl0bGUpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpzZXRUaXRsZSk6CisgICAgICAgIChE
T01IVE1MRG9jdW1lbnQ6OnJlZmVycmVyKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6ZG9t
YWluKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6VVJMKToKKyAgICAgICAgKERPTUhUTUxE
b2N1bWVudDo6Ym9keSk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OnNldEJvZHkpOgorICAg
ICAgICAoRE9NSFRNTERvY3VtZW50OjppbWFnZXMpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50
OjphcHBsZXRzKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6bGlua3MpOgorICAgICAgICAo
RE9NSFRNTERvY3VtZW50Ojpmb3Jtcyk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OmFuY2hv
cnMpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50Ojpjb29raWUpOgorICAgICAgICAoRE9NSFRN
TERvY3VtZW50OjpzZXRDb29raWUpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpvcGVuKToK
KyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6Y2xvc2UpOgorICAgICAgICAoRE9NSFRNTERvY3Vt
ZW50Ojp3cml0ZSk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OndyaXRlbG4pOgorICAgICAg
ICAoRE9NSFRNTERvY3VtZW50OjpnZXRFbGVtZW50QnlJZF8pOgorICAgICAgICAoRE9NSFRNTERv
Y3VtZW50OjpnZXRFbGVtZW50c0J5TmFtZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6UXVl
cnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmlkTmFtZSk6CisgICAgICAg
IChET01IVE1MRWxlbWVudDo6c2V0SWROYW1lKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50Ojp0
aXRsZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6c2V0VGl0bGUpOgorICAgICAgICAoRE9N
SFRNTEVsZW1lbnQ6OmxhbmcpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OnNldExhbmcpOgor
ICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmRpcik6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6
c2V0RGlyKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpjbGFzc05hbWUpOgorICAgICAgICAo
RE9NSFRNTEVsZW1lbnQ6OnNldENsYXNzTmFtZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6
aW5uZXJIVE1MKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAg
ICAgICAoRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dCk6CisgICAgICAgIChET01IVE1MRWxlbWVu
dDo6c2V0SW5uZXJUZXh0KToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6UXVlcnlJbnRl
cmZhY2UpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjplbGVtZW50cyk6CisgICAgICAg
IChET01IVE1MRm9ybUVsZW1lbnQ6Omxlbmd0aCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1l
bnQ6Om5hbWUpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpzZXROYW1lKToKKyAgICAg
ICAgKERPTUhUTUxGb3JtRWxlbWVudDo6YWNjZXB0Q2hhcnNldCk6CisgICAgICAgIChET01IVE1M
Rm9ybUVsZW1lbnQ6OnNldEFjY2VwdENoYXJzZXQpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVt
ZW50OjphY3Rpb24pOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpzZXRBY3Rpb24pOgor
ICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjplbmNUeXBlKToKKyAgICAgICAgKERPTUhUTUxG
b3JtRWxlbWVudDo6c2V0RW5jdHlwZSk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6Om1l
dGhvZCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnNldE1ldGhvZCk6CisgICAgICAg
IChET01IVE1MRm9ybUVsZW1lbnQ6OnRhcmdldCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1l
bnQ6OnNldFRhcmdldCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCk6Cisg
ICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKERPTUhUTUxTZWxl
Y3RFbGVtZW50OjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVu
dDo6dHlwZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCk6
CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmR4KToKKyAgICAg
ICAgKERPTUhUTUxTZWxlY3RFbGVtZW50Ojp2YWx1ZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0
RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0
aCk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6Zm9ybSk6CisgICAgICAgIChET01I
VE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVu
dDo6ZGlzYWJsZWQpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnNldERpc2FibGVk
KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjptdWx0aXBsZSk6CisgICAgICAgIChE
T01IVE1MU2VsZWN0RWxlbWVudDo6c2V0TXVsdGlwbGUpOgorICAgICAgICAoRE9NSFRNTFNlbGVj
dEVsZW1lbnQ6Om5hbWUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE5hbWUp
OgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnNpemUpOgorICAgICAgICAoRE9NSFRN
TFNlbGVjdEVsZW1lbnQ6OnNldFNpemUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6
OnRhYkluZGV4KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRUYWJJbmRleCk6
CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6YWRkKToKKyAgICAgICAgKERPTUhUTUxT
ZWxlY3RFbGVtZW50OjpyZW1vdmUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OmFj
dGl2YXRlSXRlbUF0SW5kZXgpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OlF1ZXJ5
SW50ZXJmYWNlKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50Ojpmb3JtKToKKyAgICAg
ICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpkZWZhdWx0U2VsZWN0ZWQpOgorICAgICAgICAoRE9N
SFRNTE9wdGlvbkVsZW1lbnQ6OnNldERlZmF1bHRTZWxlY3RlZCk6CisgICAgICAgIChET01IVE1M
T3B0aW9uRWxlbWVudDo6dGV4dCk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6aW5k
ZXgpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OmRpc2FibGVkKToKKyAgICAgICAg
KERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXREaXNhYmxlZCk6CisgICAgICAgIChET01IVE1MT3B0
aW9uRWxlbWVudDo6bGFiZWwpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNldExh
YmVsKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZWxlY3RlZCk6CisgICAgICAg
IChET01IVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoRE9NSFRNTE9w
dGlvbkVsZW1lbnQ6OnZhbHVlKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXRW
YWx1ZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpRdWVyeUludGVyZmFjZSk6Cisg
ICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoRE9N
SFRNTElucHV0RWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKToKKyAgICAgICAgKERPTUhUTUxJbnB1
dEVsZW1lbnQ6OmRlZmF1bHRDaGVja2VkKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6
OnNldERlZmF1bHRDaGVja2VkKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmZvcm0p
OgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6YWNjZXB0KToKKyAgICAgICAgKERPTUhU
TUxJbnB1dEVsZW1lbnQ6OnNldEFjY2VwdCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
OjphY2Nlc3NLZXkpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QWNjZXNzS2V5
KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmFsaWduKToKKyAgICAgICAgKERPTUhU
TUxJbnB1dEVsZW1lbnQ6OnNldEFsaWduKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6
OmFsdCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzZXRBbHQpOgorICAgICAgICAo
RE9NSFRNTElucHV0RWxlbWVudDo6Y2hlY2tlZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVt
ZW50OjpzZXRDaGVja2VkKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmRpc2FibGVk
KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldERpc2FibGVkKToKKyAgICAgICAg
KERPTUhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aCk6CisgICAgICAgIChET01IVE1MSW5wdXRF
bGVtZW50OjpzZXRNYXhMZW5ndGgpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6bmFt
ZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzZXROYW1lKToKKyAgICAgICAgKERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnJlYWRPbmx5KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnNldFJlYWRPbmx5KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNpemUpOgor
ICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2l6ZSk6CisgICAgICAgIChET01IVE1M
SW5wdXRFbGVtZW50OjpzcmMpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U3Jj
KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnRhYkluZGV4KToKKyAgICAgICAgKERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnNldFRhYkluZGV4KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OnR5cGUpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZSk6Cisg
ICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp1c2VNYXApOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6c2V0VXNlTWFwKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnZh
bHVlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAg
KERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRm9yVXNlcik6CisgICAgICAgIChET01IVE1M
SW5wdXRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6Y2xp
Y2spOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQpOgor
ICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAo
RE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKERPTUhUTUxJ
bnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
Ojppc1RleHRGaWVsZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpyZWN0T25TY3Jl
ZW4pOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJh
bmdlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGVkUmFuZ2UpOgorICAg
ICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QXV0b2ZpbGxlZCk6CisgICAgICAgIChET01I
VE1MSW5wdXRFbGVtZW50Ojppc0F1dG9maWxsZWQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxl
bWVudDo6aXNVc2VyRWRpdGVkKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OlF1
ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRW
YWx1ZSk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUp
OgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybSk6CisgICAgICAgIChET01I
VE1MVGV4dEFyZWFFbGVtZW50OjphY2Nlc3NLZXkpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVh
RWxlbWVudDo6c2V0QWNjZXNzS2V5KToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmNvbHMpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0Q29scyk6CisgICAg
ICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpkaXNhYmxlZCk6CisgICAgICAgIChET01IVE1M
VGV4dEFyZWFFbGVtZW50OjpzZXREaXNhYmxlZCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFF
bGVtZW50OjpuYW1lKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldE5hbWUp
OgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6cmVhZE9ubHkpOgorICAgICAgICAo
RE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0UmVhZE9ubHkpOgorICAgICAgICAoRE9NSFRNTFRl
eHRBcmVhRWxlbWVudDo6cm93cyk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojpz
ZXRSb3dzKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRhYkluZGV4KToKKyAg
ICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFRhYkluZGV4KToKKyAgICAgICAgKERP
TUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxl
bWVudDo6dmFsdWUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUp
OgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKERP
TUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzVXNlckVkaXRlZCk6CisgICAgICAgIChET01IVE1MSUZy
YW1lRWxlbWVudDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1l
bnQ6OmNvbnRlbnRGcmFtZSk6CisgICAgICAgICogRE9NSFRNTENsYXNzZXMuaDoKKyAgICAgICAg
KERPTUhUTUxDb2xsZWN0aW9uOjpBZGRSZWYpOgorICAgICAgICAoRE9NSFRNTENvbGxlY3Rpb246
OlJlbGVhc2UpOgorICAgICAgICAoRE9NSFRNTENvbGxlY3Rpb246OnRocm93RXhjZXB0aW9uKToK
KyAgICAgICAgKERPTUhUTUxDb2xsZWN0aW9uOjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAg
ICAgKERPTUhUTUxDb2xsZWN0aW9uOjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01I
VE1MQ29sbGVjdGlvbjo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTUhUTUxDb2xs
ZWN0aW9uOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01IVE1MQ29sbGVjdGlv
bjo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUhUTUxDb2xsZWN0aW9uOjpz
ZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NSFRNTENvbGxlY3Rpb246OnNl
dEV4Y2VwdGlvbik6CisgICAgICAgIChET01IVE1MT3B0aW9uc0NvbGxlY3Rpb246OkFkZFJlZik6
CisgICAgICAgIChET01IVE1MT3B0aW9uc0NvbGxlY3Rpb246OlJlbGVhc2UpOgorICAgICAgICAo
RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb246OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZVdlYlNjcmlwdEtleSk6CisgICAgICAgIChET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb246OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERP
TUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAg
KERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAg
ICAgICAgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAg
KERPTUhUTUxEb2N1bWVudDo6RE9NSFRNTERvY3VtZW50KToKKyAgICAgICAgKERPTUhUTUxEb2N1
bWVudDo6QWRkUmVmKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6UmVsZWFzZSk6CisgICAg
ICAgIChET01IVE1MRG9jdW1lbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUhUTUxE
b2N1bWVudDo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6
OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6cmVtb3ZlV2Vi
U2NyaXB0S2V5KToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6c3RyaW5nUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgor
ICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAg
ICAgICAoRE9NSFRNTERvY3VtZW50OjpzZXRFeGNlcHRpb24pOgorICAgICAgICAoRE9NSFRNTERv
Y3VtZW50Ojpub2RlTmFtZSk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6Om5vZGVWYWx1ZSk6
CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChET01I
VE1MRG9jdW1lbnQ6Om5vZGVUeXBlKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6cGFyZW50
Tm9kZSk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OmNoaWxkTm9kZXMpOgorICAgICAgICAo
RE9NSFRNTERvY3VtZW50OjpmaXJzdENoaWxkKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6
bGFzdENoaWxkKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6cHJldmlvdXNTaWJsaW5nKToK
KyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoRE9NSFRN
TERvY3VtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6b3duZXJE
b2N1bWVudCk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6Omluc2VydEJlZm9yZSk6CisgICAg
ICAgIChET01IVE1MRG9jdW1lbnQ6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01IVE1MRG9j
dW1lbnQ6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6YXBwZW5kQ2hp
bGQpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAg
KERPTUhUTUxEb2N1bWVudDo6Y2xvbmVOb2RlKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6
bm9ybWFsaXplKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6aXNTdXBwb3J0ZWQpOgorICAg
ICAgICAoRE9NSFRNTERvY3VtZW50OjpuYW1lc3BhY2VVUkkpOgorICAgICAgICAoRE9NSFRNTERv
Y3VtZW50OjpwcmVmaXgpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpzZXRQcmVmaXgpOgor
ICAgICAgICAoRE9NSFRNTERvY3VtZW50Ojpsb2NhbE5hbWUpOgorICAgICAgICAoRE9NSFRNTERv
Y3VtZW50OjpoYXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6aXNTYW1l
Tm9kZSk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OmlzRXF1YWxOb2RlKToKKyAgICAgICAg
KERPTUhUTUxEb2N1bWVudDo6dGV4dENvbnRlbnQpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50
OjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OmRvY3R5cGUpOgor
ICAgICAgICAoRE9NSFRNTERvY3VtZW50OjppbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChET01I
VE1MRG9jdW1lbnQ6OmRvY3VtZW50RWxlbWVudCk6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpjcmVhdGVEb2N1bWVu
dEZyYWdtZW50KToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUpOgor
ICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpjcmVhdGVDb21tZW50KToKKyAgICAgICAgKERPTUhU
TUxEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVu
dDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVu
dDo6Y3JlYXRlQXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6Y3JlYXRlRW50
aXR5UmVmZXJlbmNlKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6Z2V0RWxlbWVudHNCeVRh
Z05hbWUpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAg
KERPTUhUTUxEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKToKKyAgICAgICAgKERPTUhUTUxEb2N1
bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50OjpnZXRF
bGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6Z2V0RWxlbWVu
dEJ5SWQpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OkRPTUhUTUxFbGVtZW50KToKKyAgICAg
ICAgKERPTUhUTUxFbGVtZW50OjpBZGRSZWYpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OlJl
bGVhc2UpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAg
ICAgKERPTUhUTUxFbGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUhU
TUxFbGVtZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6
cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzdHJpbmdSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6d2ViU2NyaXB0VmFsdWVBdElu
ZGV4KToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgp
OgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OnNldEV4Y2VwdGlvbik6CisgICAgICAgIChET01I
VE1MRWxlbWVudDo6bm9kZU5hbWUpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6Om5vZGVWYWx1
ZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERP
TUhUTUxFbGVtZW50Ojpub2RlVHlwZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6cGFyZW50
Tm9kZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6Y2hpbGROb2Rlcyk6CisgICAgICAgIChE
T01IVE1MRWxlbWVudDo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6bGFz
dENoaWxkKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpwcmV2aW91c1NpYmxpbmcpOgorICAg
ICAgICAoRE9NSFRNTEVsZW1lbnQ6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKERPTUhUTUxFbGVt
ZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50Ojpvd25lckRvY3VtZW50
KToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoRE9N
SFRNTEVsZW1lbnQ6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6cmVt
b3ZlQ2hpbGQpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmFwcGVuZENoaWxkKToKKyAgICAg
ICAgKERPTUhUTUxFbGVtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAgKERPTUhUTUxFbGVt
ZW50OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6Om5vcm1hbGl6ZSk6Cisg
ICAgICAgIChET01IVE1MRWxlbWVudDo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NSFRNTEVs
ZW1lbnQ6Om5hbWVzcGFjZVVSSSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6cHJlZml4KToK
KyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NSFRNTEVs
ZW1lbnQ6OmxvY2FsTmFtZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRl
cyk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01I
VE1MRWxlbWVudDo6aXNFcXVhbE5vZGUpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OnRleHRD
b250ZW50KToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRUZXh0Q29udGVudCk6CisgICAg
ICAgIChET01IVE1MRWxlbWVudDo6dGFnTmFtZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6
Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGUpOgor
ICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChET01I
VE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6
c2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6cmVtb3ZlQXR0cmli
dXRlTm9kZSk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUp
OgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKToKKyAgICAgICAgKERP
TUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6
cmVtb3ZlQXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0
ZU5vZGVOUyk6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKToK
KyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAg
ICAgKERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTEVsZW1l
bnQ6Omhhc0F0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50Ojpmb2N1cyk6Cisg
ICAgICAgIChET01IVE1MRWxlbWVudDo6Ymx1cik6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1l
bnQ6OkRPTUhUTUxGb3JtRWxlbWVudCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OkFk
ZFJlZik6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OlJlbGVhc2UpOgorICAgICAgICAo
RE9NSFRNTEZvcm1FbGVtZW50Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01IVE1MRm9y
bUVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVt
ZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnJl
bW92ZVdlYlNjcmlwdEtleSk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnN0cmluZ1Jl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6d2ViU2NyaXB0VmFs
dWVBdEluZGV4KToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFs
dWVBdEluZGV4KToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6c2V0RXhjZXB0aW9uKToK
KyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bm9kZU5hbWUpOgorICAgICAgICAoRE9NSFRN
TEZvcm1FbGVtZW50Ojpub2RlVmFsdWUpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50Ojpz
ZXROb2RlVmFsdWUpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50Ojpub2RlVHlwZSk6Cisg
ICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NSFRN
TEZvcm1FbGVtZW50OjpjaGlsZE5vZGVzKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6
Zmlyc3RDaGlsZCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6Omxhc3RDaGlsZCk6Cisg
ICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChE
T01IVE1MRm9ybUVsZW1lbnQ6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxl
bWVudDo6YXR0cmlidXRlcyk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6Om93bmVyRG9j
dW1lbnQpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoRE9NSFRN
TEZvcm1FbGVtZW50OjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6
OmFwcGVuZENoaWxkKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6aGFzQ2hpbGROb2Rl
cyk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OmNsb25lTm9kZSk6CisgICAgICAgIChE
T01IVE1MRm9ybUVsZW1lbnQ6Om5vcm1hbGl6ZSk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1l
bnQ6OmlzU3VwcG9ydGVkKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bmFtZXNwYWNl
VVJJKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6cHJlZml4KToKKyAgICAgICAgKERP
TUhUTUxGb3JtRWxlbWVudDo6c2V0UHJlZml4KToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVu
dDo6bG9jYWxOYW1lKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6aGFzQXR0cmlidXRl
cyk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OmlzU2FtZU5vZGUpOgorICAgICAgICAo
RE9NSFRNTEZvcm1FbGVtZW50Ojppc0VxdWFsTm9kZSk6CisgICAgICAgIChET01IVE1MRm9ybUVs
ZW1lbnQ6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6c2V0VGV4
dENvbnRlbnQpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50Ojp0YWdOYW1lKToKKyAgICAg
ICAgKERPTUhUTUxGb3JtRWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxG
b3JtRWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6
cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6Z2V0QXR0cmli
dXRlTm9kZSk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUp
OgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKToKKyAg
ICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAg
ICAoRE9NSFRNTEZvcm1FbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyk6CisgICAgICAgIChET01IVE1M
Rm9ybUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpnZXRB
dHRyaWJ1dGVOb2RlTlMpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpzZXRBdHRyaWJ1
dGVOb2RlTlMpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpnZXRFbGVtZW50c0J5VGFn
TmFtZU5TKToKKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6aGFzQXR0cmlidXRlKToKKyAg
ICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6aGFzQXR0cmlidXRlTlMpOgorICAgICAgICAoRE9N
SFRNTEZvcm1FbGVtZW50Ojpmb2N1cyk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OmJs
dXIpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjppZE5hbWUpOgorICAgICAgICAoRE9N
SFRNTEZvcm1FbGVtZW50OjpzZXRJZE5hbWUpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50
Ojp0aXRsZSk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OnNldFRpdGxlKToKKyAgICAg
ICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bGFuZyk6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1l
bnQ6OnNldExhbmcpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpkaXIpOgorICAgICAg
ICAoRE9NSFRNTEZvcm1FbGVtZW50OjpzZXREaXIpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVt
ZW50OjpjbGFzc05hbWUpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpzZXRDbGFzc05h
bWUpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50Ojppbm5lckhUTUwpOgorICAgICAgICAo
RE9NSFRNTEZvcm1FbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAgICAgICAoRE9NSFRNTEZvcm1F
bGVtZW50Ojppbm5lclRleHQpOgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50OjpzZXRJbm5l
clRleHQpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OkRPTUhUTUxTZWxlY3RFbGVt
ZW50KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpBZGRSZWYpOgorICAgICAgICAo
RE9NSFRNTFNlbGVjdEVsZW1lbnQ6OlJlbGVhc2UpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVs
ZW1lbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50Ojpj
YWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpldmFs
dWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlV2Vi
U2NyaXB0S2V5KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpzdHJpbmdSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6d2ViU2NyaXB0VmFsdWVB
dEluZGV4KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1
ZUF0SW5kZXgpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnNldEV4Y2VwdGlvbik6
CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6bm9kZU5hbWUpOgorICAgICAgICAoRE9N
SFRNTFNlbGVjdEVsZW1lbnQ6Om5vZGVWYWx1ZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxl
bWVudDo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50Ojpub2Rl
VHlwZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6cGFyZW50Tm9kZSk6CisgICAg
ICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGROb2Rlcyk6CisgICAgICAgIChET01IVE1M
U2VsZWN0RWxlbWVudDo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVu
dDo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpwcmV2aW91c1Np
YmxpbmcpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRTaWJsaW5nKToKKyAg
ICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUhU
TUxTZWxlY3RFbGVtZW50Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RF
bGVtZW50OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnJl
cGxhY2VDaGlsZCk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OmFwcGVuZENoaWxkKToKKyAgICAgICAg
KERPTUhUTUxTZWxlY3RFbGVtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAgKERPTUhUTUxT
ZWxlY3RFbGVtZW50OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6
Om5vcm1hbGl6ZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6aXNTdXBwb3J0ZWQp
OgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6Om5hbWVzcGFjZVVSSSk6CisgICAgICAg
IChET01IVE1MU2VsZWN0RWxlbWVudDo6cHJlZml4KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RF
bGVtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OmxvY2Fs
TmFtZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6aGFzQXR0cmlidXRlcyk6Cisg
ICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01I
VE1MU2VsZWN0RWxlbWVudDo6aXNFcXVhbE5vZGUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVs
ZW1lbnQ6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRU
ZXh0Q29udGVudCk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6dGFnTmFtZSk6Cisg
ICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKERP
TUhUTUxTZWxlY3RFbGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTFNlbGVj
dEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVu
dDo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6c2V0
QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlQXR0
cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6Z2V0RWxlbWVudHNC
eVRhZ05hbWUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5T
KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyk6CisgICAg
ICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMpOgorICAgICAgICAo
RE9NSFRNTFNlbGVjdEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAgICAgIChET01I
VE1MU2VsZWN0RWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKToKKyAgICAgICAgKERPTUhUTUxT
ZWxlY3RFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKERPTUhUTUxT
ZWxlY3RFbGVtZW50OjpoYXNBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1l
bnQ6Omhhc0F0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50Ojpmb2N1
cyk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6Ymx1cik6CisgICAgICAgIChET01I
VE1MU2VsZWN0RWxlbWVudDo6aWROYW1lKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50
OjpzZXRJZE5hbWUpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnRpdGxlKToKKyAg
ICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRUaXRsZSk6CisgICAgICAgIChET01IVE1M
U2VsZWN0RWxlbWVudDo6bGFuZyk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6c2V0
TGFuZyk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6ZGlyKToKKyAgICAgICAgKERP
TUhUTUxTZWxlY3RFbGVtZW50OjpzZXREaXIpOgorICAgICAgICAoRE9NSFRNTFNlbGVjdEVsZW1l
bnQ6OmNsYXNzTmFtZSk6CisgICAgICAgIChET01IVE1MU2VsZWN0RWxlbWVudDo6c2V0Q2xhc3NO
YW1lKToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50Ojppbm5lckhUTUwpOgorICAgICAg
ICAoRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgIChET01IVE1M
U2VsZWN0RWxlbWVudDo6aW5uZXJUZXh0KToKKyAgICAgICAgKERPTUhUTUxTZWxlY3RFbGVtZW50
OjpzZXRJbm5lclRleHQpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OkRPTUhUTUxP
cHRpb25FbGVtZW50KToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpBZGRSZWYpOgor
ICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OlJlbGVhc2UpOgorICAgICAgICAoRE9NSFRN
TE9wdGlvbkVsZW1lbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25F
bGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVt
ZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6
cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzdHJp
bmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6d2ViU2Ny
aXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXRXZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNldEV4
Y2VwdGlvbik6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6bm9kZU5hbWUpOgorICAg
ICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6Om5vZGVWYWx1ZSk6CisgICAgICAgIChET01IVE1M
T3B0aW9uRWxlbWVudDo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVt
ZW50Ojpub2RlVHlwZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6cGFyZW50Tm9k
ZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGROb2Rlcyk6CisgICAgICAg
IChET01IVE1MT3B0aW9uRWxlbWVudDo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChET01IVE1MT3B0
aW9uRWxlbWVudDo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50Ojpw
cmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6Om5leHRTaWJs
aW5nKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAg
ICAgKERPTUhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERPTUhU
TUxPcHRpb25FbGVtZW50OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVs
ZW1lbnQ6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6cmVt
b3ZlQ2hpbGQpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OmFwcGVuZENoaWxkKToK
KyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAg
KERPTUhUTUxPcHRpb25FbGVtZW50OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NSFRNTE9wdGlv
bkVsZW1lbnQ6Om5vcm1hbGl6ZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6aXNT
dXBwb3J0ZWQpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6Om5hbWVzcGFjZVVSSSk6
CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6cHJlZml4KToKKyAgICAgICAgKERPTUhU
TUxPcHRpb25FbGVtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1l
bnQ6OmxvY2FsTmFtZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6aGFzQXR0cmli
dXRlcyk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6aXNTYW1lTm9kZSk6CisgICAg
ICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6aXNFcXVhbE5vZGUpOgorICAgICAgICAoRE9NSFRN
TE9wdGlvbkVsZW1lbnQ6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVt
ZW50OjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6dGFn
TmFtZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoRE9N
SFRNTE9wdGlvbkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChET01IVE1MT3B0
aW9uRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxl
bWVudDo6c2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6
cmVtb3ZlQXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6Z2V0
RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OmdldEF0
dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXRBdHRyaWJ1dGVO
Uyk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMpOgor
ICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAg
ICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKToKKyAgICAgICAg
KERPTUhUTUxPcHRpb25FbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAg
KERPTUhUTUxPcHRpb25FbGVtZW50OjpoYXNBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTE9w
dGlvbkVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVt
ZW50Ojpmb2N1cyk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6Ymx1cik6CisgICAg
ICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6aWROYW1lKToKKyAgICAgICAgKERPTUhUTUxPcHRp
b25FbGVtZW50OjpzZXRJZE5hbWUpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnRp
dGxlKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXRUaXRsZSk6CisgICAgICAg
IChET01IVE1MT3B0aW9uRWxlbWVudDo6bGFuZyk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxl
bWVudDo6c2V0TGFuZyk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6ZGlyKToKKyAg
ICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50OjpzZXREaXIpOgorICAgICAgICAoRE9NSFRNTE9w
dGlvbkVsZW1lbnQ6OmNsYXNzTmFtZSk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6
c2V0Q2xhc3NOYW1lKToKKyAgICAgICAgKERPTUhUTUxPcHRpb25FbGVtZW50Ojppbm5lckhUTUwp
OgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAg
IChET01IVE1MT3B0aW9uRWxlbWVudDo6aW5uZXJUZXh0KToKKyAgICAgICAgKERPTUhUTUxPcHRp
b25FbGVtZW50OjpzZXRJbm5lclRleHQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6
RE9NSFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpBZGRS
ZWYpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6UmVsZWFzZSk6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01IVE1MSW5w
dXRFbGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6
OnJlbW92ZVdlYlNjcmlwdEtleSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzdHJp
bmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp3ZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0V2ViU2Ny
aXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldEV4Y2Vw
dGlvbik6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojpub2RlTmFtZSk6CisgICAgICAg
IChET01IVE1MSW5wdXRFbGVtZW50Ojpub2RlVmFsdWUpOgorICAgICAgICAoRE9NSFRNTElucHV0
RWxlbWVudDo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6Om5v
ZGVUeXBlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnBhcmVudE5vZGUpOgorICAg
ICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6Y2hpbGROb2Rlcyk6CisgICAgICAgIChET01IVE1M
SW5wdXRFbGVtZW50OjpmaXJzdENoaWxkKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6
Omxhc3RDaGlsZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpwcmV2aW91c1NpYmxp
bmcpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAg
ICAoRE9NSFRNTElucHV0RWxlbWVudDo6YXR0cmlidXRlcyk6CisgICAgICAgIChET01IVE1MSW5w
dXRFbGVtZW50Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6
Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hp
bGQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6cmVtb3ZlQ2hpbGQpOgorICAgICAg
ICAoRE9NSFRNTElucHV0RWxlbWVudDo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6aGFzQ2hpbGROb2Rlcyk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6bm9ybWFsaXplKToK
KyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmlzU3VwcG9ydGVkKToKKyAgICAgICAgKERP
TUhUTUxJbnB1dEVsZW1lbnQ6Om5hbWVzcGFjZVVSSSk6CisgICAgICAgIChET01IVE1MSW5wdXRF
bGVtZW50OjpwcmVmaXgpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0UHJlZml4
KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmxvY2FsTmFtZSk6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUhUTUxJbnB1
dEVsZW1lbnQ6OmlzU2FtZU5vZGUpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6aXNF
cXVhbE5vZGUpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6dGV4dENvbnRlbnQpOgor
ICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VGV4dENvbnRlbnQpOgorICAgICAgICAo
RE9NSFRNTElucHV0RWxlbWVudDo6dGFnTmFtZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVt
ZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QXR0
cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6
CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKToKKyAgICAg
ICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoRE9N
SFRNTElucHV0RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZSk6CisgICAgICAgIChET01IVE1M
SW5wdXRFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChET01IVE1MSW5w
dXRFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
OjpzZXRBdHRyaWJ1dGVOUyk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVB
dHRyaWJ1dGVOUyk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpnZXRBdHRyaWJ1dGVO
b2RlTlMpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5T
KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMp
OgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6aGFzQXR0cmlidXRlKToKKyAgICAgICAg
KERPTUhUTUxJbnB1dEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhUTUxJ
bnB1dEVsZW1lbnQ6OmZvY3VzKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmJsdXIp
OgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6aWROYW1lKToKKyAgICAgICAgKERPTUhU
TUxJbnB1dEVsZW1lbnQ6OnNldElkTmFtZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
Ojp0aXRsZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzZXRUaXRsZSk6CisgICAg
ICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpsYW5nKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OnNldExhbmcpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6ZGlyKToKKyAg
ICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldERpcik6CisgICAgICAgIChET01IVE1MSW5w
dXRFbGVtZW50OjpjbGFzc05hbWUpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0
Q2xhc3NOYW1lKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmlubmVySFRNTCk6Cisg
ICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAgICAgICAoRE9N
SFRNTElucHV0RWxlbWVudDo6aW5uZXJUZXh0KToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnNldElubmVyVGV4dCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpET01I
VE1MVGV4dEFyZWFFbGVtZW50KToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OkFk
ZFJlZik6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpSZWxlYXNlKToKKyAgICAg
ICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERP
TUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9N
SFRNTFRleHRBcmVhRWxlbWVudDo6ZXZhbHVhdGVXZWJTY3JpcHQpOgorICAgICAgICAoRE9NSFRN
TFRleHRBcmVhRWxlbWVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01IVE1M
VGV4dEFyZWFFbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9N
SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQ6Om5vZGVOYW1lKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6
Om5vZGVWYWx1ZSk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXROb2RlVmFs
dWUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6bm9kZVR5cGUpOgorICAgICAg
ICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyZW50Tm9kZSk6CisgICAgICAgIChET01IVE1M
VGV4dEFyZWFFbGVtZW50OjpjaGlsZE5vZGVzKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6bGFz
dENoaWxkKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnByZXZpb3VzU2libGlu
Zyk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpuZXh0U2libGluZyk6CisgICAg
ICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUhU
TUxUZXh0QXJlYUVsZW1lbnQ6Om93bmVyRG9jdW1lbnQpOgorICAgICAgICAoRE9NSFRNTFRleHRB
cmVhRWxlbWVudDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpyZW1v
dmVDaGlsZCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRDaGlsZCk6
CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAg
ICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNsb25lTm9kZSk6CisgICAgICAgIChET01IVE1M
VGV4dEFyZWFFbGVtZW50Ojpub3JtYWxpemUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxl
bWVudDo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6bmFt
ZXNwYWNlVVJJKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnByZWZpeCk6Cisg
ICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9N
SFRNTFRleHRBcmVhRWxlbWVudDo6bG9jYWxOYW1lKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJl
YUVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVu
dDo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojppc0VxdWFs
Tm9kZSk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojp0ZXh0Q29udGVudCk6Cisg
ICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRUZXh0Q29udGVudCk6CisgICAgICAg
IChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojp0YWdOYW1lKToKKyAgICAgICAgKERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQ6OmdldEF0dHJpYnV0ZSk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVt
ZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6cmVt
b3ZlQXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmdldEF0dHJp
YnV0ZU5vZGUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0QXR0cmlidXRl
Tm9kZSk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVO
b2RlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdO
YW1lKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKToK
KyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKToKKyAgICAg
ICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKToKKyAgICAgICAg
KERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAgICAgIChE
T01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMpOgorICAgICAgICAoRE9N
SFRNTFRleHRBcmVhRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6CisgICAgICAgIChE
T01IVE1MVGV4dEFyZWFFbGVtZW50OjpoYXNBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTFRl
eHRBcmVhRWxlbWVudDo6aGFzQXR0cmlidXRlTlMpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVh
RWxlbWVudDo6Zm9jdXMpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6Ymx1cik6
CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50OjppZE5hbWUpOgorICAgICAgICAoRE9N
SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0SWROYW1lKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFRp
dGxlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmxhbmcpOgorICAgICAgICAo
RE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0TGFuZyk6CisgICAgICAgIChET01IVE1MVGV4dEFy
ZWFFbGVtZW50OjpkaXIpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGly
KToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNsYXNzTmFtZSk6CisgICAgICAg
IChET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRDbGFzc05hbWUpOgorICAgICAgICAoRE9NSFRN
TFRleHRBcmVhRWxlbWVudDo6aW5uZXJIVE1MKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojpp
bm5lclRleHQpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0SW5uZXJUZXh0
KToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjpET01IVE1MSUZyYW1lRWxlbWVudCk6
CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6QWRkUmVmKToKKyAgICAgICAgKERPTUhU
TUxJRnJhbWVFbGVtZW50OjpSZWxlYXNlKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50
Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6Y2FsbFdl
YlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6ZXZhbHVhdGVX
ZWJTY3JpcHQpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnJlbW92ZVdlYlNjcmlw
dEtleSk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6c3RyaW5nUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OndlYlNjcmlwdFZhbHVlQXRJbmRl
eCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdElu
ZGV4KToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjpzZXRFeGNlcHRpb24pOgorICAg
ICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6Om5vZGVOYW1lKToKKyAgICAgICAgKERPTUhUTUxJ
RnJhbWVFbGVtZW50Ojpub2RlVmFsdWUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6
OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6bm9kZVR5cGUp
OgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnBhcmVudE5vZGUpOgorICAgICAgICAo
RE9NSFRNTElGcmFtZUVsZW1lbnQ6OmNoaWxkTm9kZXMpOgorICAgICAgICAoRE9NSFRNTElGcmFt
ZUVsZW1lbnQ6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6Omxh
c3RDaGlsZCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6cHJldmlvdXNTaWJsaW5n
KToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjpuZXh0U2libGluZyk6CisgICAgICAg
IChET01IVE1MSUZyYW1lRWxlbWVudDo6YXR0cmlidXRlcyk6CisgICAgICAgIChET01IVE1MSUZy
YW1lRWxlbWVudDo6b3duZXJEb2N1bWVudCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVu
dDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjpyZXBsYWNl
Q2hpbGQpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnJlbW92ZUNoaWxkKToKKyAg
ICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjphcHBlbmRDaGlsZCk6CisgICAgICAgIChET01I
VE1MSUZyYW1lRWxlbWVudDo6aGFzQ2hpbGROb2Rlcyk6CisgICAgICAgIChET01IVE1MSUZyYW1l
RWxlbWVudDo6Y2xvbmVOb2RlKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50Ojpub3Jt
YWxpemUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OmlzU3VwcG9ydGVkKToKKyAg
ICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjpuYW1lc3BhY2VVUkkpOgorICAgICAgICAoRE9N
SFRNTElGcmFtZUVsZW1lbnQ6OnByZWZpeCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVu
dDo6c2V0UHJlZml4KToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50Ojpsb2NhbE5hbWUp
OgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMpOgorICAgICAg
ICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OmlzU2FtZU5vZGUpOgorICAgICAgICAoRE9NSFRNTElG
cmFtZUVsZW1lbnQ6OmlzRXF1YWxOb2RlKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50
Ojp0ZXh0Q29udGVudCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6c2V0VGV4dENv
bnRlbnQpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnRhZ05hbWUpOgorICAgICAg
ICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OmdldEF0dHJpYnV0ZSk6CisgICAgICAgIChET01IVE1M
SUZyYW1lRWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVt
ZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6Omdl
dEF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnNldEF0dHJp
YnV0ZU5vZGUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0
ZU5vZGUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdO
YW1lKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyk6Cisg
ICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6c2V0QXR0cmlidXRlTlMpOgorICAgICAgICAo
RE9NSFRNTElGcmFtZUVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUhU
TUxJRnJhbWVFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMpOgorICAgICAgICAoRE9NSFRNTElG
cmFtZUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAgICAgIChET01IVE1MSUZyYW1l
RWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6CisgICAgICAgIChET01IVE1MSUZyYW1l
RWxlbWVudDo6aGFzQXR0cmlidXRlKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50Ojpo
YXNBdHRyaWJ1dGVOUyk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6Zm9jdXMpOgor
ICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OmJsdXIpOgorICAgICAgICAoRE9NSFRNTElG
cmFtZUVsZW1lbnQ6OmlkTmFtZSk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6c2V0
SWROYW1lKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50Ojp0aXRsZSk6CisgICAgICAg
IChET01IVE1MSUZyYW1lRWxlbWVudDo6c2V0VGl0bGUpOgorICAgICAgICAoRE9NSFRNTElGcmFt
ZUVsZW1lbnQ6OmxhbmcpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnNldExhbmcp
OgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OmRpcik6CisgICAgICAgIChET01IVE1M
SUZyYW1lRWxlbWVudDo6c2V0RGlyKToKKyAgICAgICAgKERPTUhUTUxJRnJhbWVFbGVtZW50Ojpj
bGFzc05hbWUpOgorICAgICAgICAoRE9NSFRNTElGcmFtZUVsZW1lbnQ6OnNldENsYXNzTmFtZSk6
CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6aW5uZXJIVE1MKToKKyAgICAgICAgKERP
TUhUTUxJRnJhbWVFbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAgICAgICAoRE9NSFRNTElGcmFt
ZUVsZW1lbnQ6OmlubmVyVGV4dCk6CisgICAgICAgIChET01IVE1MSUZyYW1lRWxlbWVudDo6c2V0
SW5uZXJUZXh0KToKKyAgICAgICAgKiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHA6CisgICAg
ICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVsZWdhdGUpOgor
ICAgICAgICAoRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAg
ICAgKERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpBZGRSZWYpOgorICAgICAgICAoRGVmYXVsdERv
d25sb2FkRGVsZWdhdGU6OlJlbGVhc2UpOgorICAgICAgICAoRGVmYXVsdERvd25sb2FkRGVsZWdh
dGU6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24p
OgorICAgICAgICAoRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZURhdGFPZkxlbmd0aCk6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaG91
bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZTo6d2lsbFJlc3VtZVdpdGhSZXNwb25zZSk6CisgICAgICAgIChEZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKERlZmF1bHREb3dubG9hZERl
bGVnYXRlOjpkaWRCZWdpbik6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlk
RmluaXNoKToKKyAgICAgICAgKERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRGYWlsV2l0aEVy
cm9yKToKKyAgICAgICAgKiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVsZWdhdGU6
OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVsZWdhdGU6
OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6QWRkUmVm
KToKKyAgICAgICAgKERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6UmVsZWFzZSk6CisgICAgICAgIChE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24pOgorICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JN
SU1FVHlwZSk6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5V2l0aEVycm9yKToKKyAgICAgICAgKiBEZWZhdWx0UG9saWN5RGVsZWdhdGUuaDoK
KyAgICAgICAgKiBJbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyLmlkbDoKKyAgICAg
ICAgKiBJbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyXzIuaWRsOgorICAgICAgICAq
IEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZUFwcGxpY2F0aW9uLmlkbDoKKyAgICAg
ICAgKiBJbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVFZGl0YWJsZVRleHQuaWRsOgor
ICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVJlbGF0aW9uLmlkbDoK
KyAgICAgICAgKiBJbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsOgor
ICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVRleHQuaWRsOgorICAg
ICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVRleHQyLmlkbDoKKyAgICAg
ICAgKiBJbnRlcmZhY2VzL0lXZWJBcHBsaWNhdGlvbkNhY2hlLmlkbDoKKyAgICAgICAgKiBJbnRl
cmZhY2VzL0lXZWJWaWV3LmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0
ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOgorICAgICAgICAqIE1lbW9y
eVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06OlF1ZXJ5SW50ZXJmYWNlKToKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6QWRkUmVmKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoK
KyAgICAgICAgKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJBY3Rpb25Q
cm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcpOgorICAgICAgICAoV2ViQWN0aW9uUHJv
cGVydHlCYWc6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkFjdGlvblByb3BlcnR5QmFn
OjpBZGRSZWYpOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlbGVhc2UpOgorICAg
ICAgICAoZmluZE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJl
YWQpOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6OldyaXRlKToKKyAgICAgICAgKiBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZy5oOgorICAgICAgICAqIFdlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQXBwbGljYXRpb25DYWNoZTo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAg
ICAoV2ViQXBwbGljYXRpb25DYWNoZTo6QWRkUmVmKToKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlv
bkNhY2hlLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZl
OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6OlF1
ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6OkFkZFJlZik6CisgICAgICAgIChX
ZWJBcmNoaXZlOjpSZWxlYXNlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6OmluaXRXaXRoTWFpblJl
c291cmNlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6OmluaXRXaXRoRGF0YSk6CisgICAgICAgIChX
ZWJBcmNoaXZlOjppbml0V2l0aE5vZGUpOgorICAgICAgICAoV2ViQXJjaGl2ZTo6bWFpblJlc291
cmNlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6OnN1YlJlc291cmNlcyk6CisgICAgICAgIChXZWJB
cmNoaXZlOjpzdWJmcmFtZUFyY2hpdmVzKToKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgor
ICAgICAgICAqIFdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBXZWJCYWNrRm9yd2FyZExpc3QuY3Bw
OgorICAgICAgICAoYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMpOgorICAgICAgICAoV2ViQmFja0Zv
cndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQmFja0ZvcndhcmRM
aXN0OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJCYWNrRm9yd2FyZExpc3Q6OlF1ZXJ5
SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6QWRkUmVmKToKKyAgICAg
ICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6UmVsZWFzZSk6CisgICAgICAgIChXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2spOgor
ICAgICAgICAoV2ViQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQpOgorICAgICAgICAoV2ViQmFj
a0ZvcndhcmRMaXN0Ojpnb1RvSXRlbSk6CisgICAgICAgIChXZWJCYWNrRm9yd2FyZExpc3Q6OmJh
Y2tJdGVtKToKKyAgICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0pOgorICAg
ICAgICAoV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJCYWNr
Rm9yd2FyZExpc3Q6OmJhY2tMaXN0V2l0aExpbWl0KToKKyAgICAgICAgKFdlYkJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQpOgorICAgICAgICAoV2ViQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSk6CisgICAgICAgIChXZWJCYWNrRm9yd2FyZExpc3Q6OnNldENhcGFjaXR5KToK
KyAgICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCk6CisgICAgICAgIChX
ZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQpOgorICAgICAgICAoV2ViQmFja0Zv
cndhcmRMaXN0Ojpjb250YWluc0l0ZW0pOgorICAgICAgICAoV2ViQmFja0ZvcndhcmRMaXN0Ojpp
dGVtQXRJbmRleCk6CisgICAgICAgIChXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0pOgor
ICAgICAgICAqIFdlYkJhY2tGb3J3YXJkTGlzdC5oOgorICAgICAgICAqIFdlYkNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNhY2hlOjpXZWJDYWNoZSk6CisgICAgICAgIChXZWJDYWNoZTo6UXVlcnlJ
bnRlcmZhY2UpOgorICAgICAgICAoV2ViQ2FjaGU6OkFkZFJlZik6CisgICAgICAgIChXZWJDYWNo
ZTo6UmVsZWFzZSk6CisgICAgICAgIChXZWJDYWNoZTo6c3RhdGlzdGljcyk6CisgICAgICAgIChX
ZWJDYWNoZTo6ZW1wdHkpOgorICAgICAgICAoV2ViQ2FjaGU6OnNldERpc2FibGVkKToKKyAgICAg
ICAgKFdlYkNhY2hlOjpkaXNhYmxlZCk6CisgICAgICAgIChXZWJDYWNoZTo6Y2FjaGVGb2xkZXIp
OgorICAgICAgICAoV2ViQ2FjaGU6OnNldENhY2hlRm9sZGVyKToKKyAgICAgICAgKiBXZWJDYWNo
ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmVT
dGF0aXN0aWNzOjpXZWJDb3JlU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGlj
czo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OkFkZFJlZik6
CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6UmVsZWFzZSk6CisgICAgICAgIChXZWJDb3Jl
U3RhdGlzdGljczo6amF2YVNjcmlwdE9iamVjdHNDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3Rh
dGlzdGljczo6amF2YVNjcmlwdEdsb2JhbE9iamVjdHNDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
U3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdHNDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZEdsb2JhbE9iamVjdHNDb3VudCk6
CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5
cGVDb3VudHMpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RU
eXBlQ291bnRzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjppY29uUGFnZVVSTE1hcHBp
bmdDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNvblJldGFpbmVkUGFnZVVS
TENvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjppY29uUmVjb3JkQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6Omljb25zV2l0aERhdGFDb3VudCk6CisgICAgICAg
IChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFDb3VudCk6CisgICAgICAgIChXZWJD
b3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50KToKKyAgICAgICAgKFdl
YkNvcmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgorICAgICAgICAoV2ViQ29y
ZVN0YXRpc3RpY3M6OmdseXBoUGFnZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNz
OjpzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlU3RhdGlzdGljczo6c2hvdWxkUHJpbnRFeGNlcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmVTdGF0aXN0aWNzOjpzdG9wSWdub3JpbmdXZWJDb3JlTm9kZUxlYWtzKToKKyAgICAgICAgKFdl
YkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0
aXN0aWNzOjpyZXR1cm5GcmVlTWVtb3J5VG9TeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZVN0YXRp
c3RpY3M6OmNhY2hlZFBhZ2VDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6Y2Fj
aGVkRnJhbWVDb3VudCk6CisgICAgICAgICogV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcDoKKyAg
ICAgICAgKE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgIChOb3RpZmlj
YXRpb25DT01XcmFwcGVyOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvclVuZG9UYXJnZXQ6OlF1
ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkVkaXRvclVuZG9UYXJnZXQ6OkFkZFJlZik6Cisg
ICAgICAgIChXZWJFZGl0b3JVbmRvQ29tbWFuZDo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJFZGl0
b3JVbmRvQ29tbWFuZDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoV2ViRWRpdG9yVW5kb0Nv
bW1hbmQ6OkFkZFJlZik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OldlYkluc3BlY3RvckRl
bGVnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgIChRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0
ZTo6QWRkUmVmKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpSZWxlYXNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9y
RHJhZ2dpbmdJbmZvKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpjcmVhdGVXZWJW
aWV3V2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OndpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6Y3Jl
YXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OmRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUpOgorICAgICAgICAoOm1fcmVmQ291bnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmg6CisgICAgICAg
IChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2ViVmlld1Nob3cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yRGVsZWdhdGU6OndlYlZpZXdDbG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0
ZTo6d2ViVmlld0ZvY3VzKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjp3ZWJWaWV3
VW5mb2N1cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2ViVmlld0ZpcnN0UmVz
cG9uZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjptYWtlRmlyc3RSZXNwb25k
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnNldFN0YXR1c1RleHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OndlYlZpZXdTdGF0dXNUZXh0KToKKyAgICAgICAg
KFdlYkluc3BlY3RvckRlbGVnYXRlOjp3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpzZXRUb29sYmFyc1Zpc2libGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRGVsZWdhdGU6OndlYlZpZXdJc1N0YXR1c0JhclZpc2libGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnNldFN0YXR1c0JhclZpc2libGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRGVsZWdhdGU6OndlYlZpZXdJc1Jlc2l6YWJsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JEZWxlZ2F0ZTo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRl
bGVnYXRlOjpzZXRGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2ViVmll
d0ZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpzZXRDb250ZW50UmVjdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2ViVmlld0NvbnRlbnRSZWN0KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnJ1
bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0
aFJlc3VsdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6Y29udGV4
dE1lbnVJdGVtc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnZh
bGlkYXRlVXNlckludGVyZmFjZUl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6
OnNob3VsZFBlcmZvcm1BY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6Ondp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRl
bGVnYXRlOjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckRlbGVnYXRlOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JEZWxlZ2F0ZTo6aGFzQ3VzdG9tTWVudUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckRlbGVnYXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JEZWxlZ2F0ZTo6bWVhc3VyZUN1c3RvbU1lbnVJdGVtKToKKyAgICAgICAgKFdlYklu
c3BlY3RvckRlbGVnYXRlOjpkcmF3Q3VzdG9tTWVudUl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yRGVsZWdhdGU6OmFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0YSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JEZWxlZ2F0ZTo6Y2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5nRGF0YSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6Y2FuVGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckRlbGVnYXRlOjp0YWtlRm9jdXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnJl
Z2lzdGVyVW5kb1dpdGhUYXJnZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnJl
bW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0KToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRl
OjpzZXRBY3Rpb25UaXRsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6dW5kbyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6cmVkbyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JEZWxlZ2F0ZTo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6
Y2FuUmVkbyk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6cHJpbnRGcmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6ZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKToK
KyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjp3ZWJWaWV3SGVhZGVySGVpZ2h0KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjp3ZWJWaWV3Rm9vdGVySGVpZ2h0KToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckRlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckRlbGVnYXRlOjp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KToKKyAgICAgICAgKFdlYklu
c3BlY3RvckRlbGVnYXRlOjpjYW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxl
Z2F0ZTo6cnVuTW9kYWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OmlzTWVudUJh
clZpc2libGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnNldE1lbnVCYXJWaXNp
YmxlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpydW5EYXRhYmFzZVNpemVMaW1p
dFByb21wdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6cGFpbnRDdXN0b21TY3Jv
bGxiYXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRGVsZWdhdGU6OnBhaW50Q3VzdG9tU2Nyb2xs
Q29ybmVyKToKKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjpRdWVyeUludGVyZmFjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dp
dGhSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3RvckRlbGVnYXRlOjp3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
RGVsZWdhdGU6OmNyZWF0ZU1vZGFsRGlhbG9nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3RvckRlbGVnYXRlOjpkZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6Om92ZXJy
aWRlRW5jb2RpbmcpOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6c2V0T3ZlcnJpZGVFbmNvZGlu
Zyk6CisgICAgICAgIChXZWJEYXRhU291cmNlOjptYWluRG9jdW1lbnRFcnJvcik6CisgICAgICAg
IChXZWJEYXRhU291cmNlOjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKToKKyAgICAgICAg
KFdlYkRhdGFTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6
OkFkZFJlZik6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpSZWxlYXNlKToKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmluaXRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpk
YXRhKToKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYkRhdGFTb3VyY2U6OndlYkZyYW1lKToKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmluaXRp
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnJlcXVlc3QpOgorICAgICAgICAo
V2ViRGF0YVNvdXJjZTo6cmVzcG9uc2UpOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6dGV4dEVu
Y29kaW5nTmFtZSk6CisgICAgICAgIChXZWJEYXRhU291cmNlOjppc0xvYWRpbmcpOgorICAgICAg
ICAoV2ViRGF0YVNvdXJjZTo6cGFnZVRpdGxlKToKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnVu
cmVhY2hhYmxlVVJMKToKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OndlYkFyY2hpdmUpOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6bWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkRhdGFTb3Vy
Y2U6OnN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpzdWJyZXNvdXJjZUZv
clVSTCk6CisgICAgICAgIChXZWJEYXRhU291cmNlOjphZGRTdWJyZXNvdXJjZSk6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5oOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6RGF0YWJhc2VEZXRhaWxzUHJvcGVy
dHlCYWcpOgorICAgICAgICAoRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlCYWc6On5EYXRhYmFzZURl
dGFpbHNQcm9wZXJ0eUJhZyk6CisgICAgICAgIChEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6
Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlCYWc6OkFk
ZFJlZik6CisgICAgICAgIChEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6UmVsZWFzZSk6Cisg
ICAgICAgIChEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6UXVlcnlJbnRlcmZhY2UpOgorICAg
ICAgICAoRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlCYWc6OlJlYWQpOgorICAgICAgICAoRGF0YWJh
c2VEZXRhaWxzUHJvcGVydHlCYWc6OldyaXRlKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdl
cjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRh
YmFzZU1hbmFnZXIpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6UXVlcnlJbnRlcmZhY2UpOgor
ICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpBZGRSZWYpOgorICAgICAgICAoV2ViRGF0YWJh
c2VNYW5hZ2VyOjpSZWxlYXNlKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6c2hhcmVk
V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6b3JpZ2lu
cyk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhPcmlnaW4pOgor
ICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVv
dGEpOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIFdlYkRvd25s
b2FkLmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCk6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OkFkZFJl
Zik6CisgICAgICAgIChXZWJEb3dubG9hZDo6UmVsZWFzZSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6Y2FuUmVzdW1lRG93bmxvYWREZWNvZGVkV2l0aEVuY29kaW5nTUlNRVR5cGUpOgorICAgICAg
ICAoV2ViRG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKToKKyAgICAgICAgKFdlYkRv
d25sb2FkOjpyZXF1ZXN0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZC5oOgorICAgICAgICAqIFdl
YkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVz
dCk6CisgICAgICAgIChXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAg
ICAgIChXZWJEb3dubG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmNhbmNlbCk6
CisgICAgICAgIChXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKToKKyAgICAgICAgKFdlYkRv
d25sb2FkOjpkZWxldGVzRmlsZVVwb25GYWlsdXJlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpz
ZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpzZXREZXN0
aW5hdGlvbik6CisgICAgICAgIChXZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJEb3dubG9hZDo6dXNlQ3Jl
ZGVudGlhbCk6CisgICAgICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEcm9w
U291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpXZWJEcm9w
U291cmNlKToKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKToKKyAgICAg
ICAgKFdlYkRyb3BTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkRyb3BTb3Vy
Y2U6OkFkZFJlZik6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpSZWxlYXNlKToKKyAgICAgICAg
KGdlbmVyYXRlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRp
bnVlRHJhZyk6CisgICAgICAgIChXZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2spOgorICAgICAg
ICAqIFdlYkRyb3BTb3VyY2UuaDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
OgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcp
OgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpRdWVyeUludGVyZmFjZSk6CisgICAg
ICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OkFkZFJlZik6CisgICAgICAgIChXZWJFbGVtZW50
UHJvcGVydHlCYWc6OlJlbGVhc2UpOgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpS
ZWFkKToKKyAgICAgICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V3JpdGUpOgorICAgICAgICAq
IFdlYkVsZW1lbnRQcm9wZXJ0eUJhZy5oOgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAg
ICAgKFdlYkVycm9yOjpXZWJFcnJvcik6CisgICAgICAgIChXZWJFcnJvcjo6UXVlcnlJbnRlcmZh
Y2UpOgorICAgICAgICAoV2ViRXJyb3I6OkFkZFJlZik6CisgICAgICAgIChXZWJFcnJvcjo6UmVs
ZWFzZSk6CisgICAgICAgIChXZWJFcnJvcjo6aW5pdCk6CisgICAgICAgIChXZWJFcnJvcjo6Y29k
ZSk6CisgICAgICAgIChXZWJFcnJvcjo6ZG9tYWluKToKKyAgICAgICAgKFdlYkVycm9yOjpsb2Nh
bGl6ZWREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRmFpbHVyZVJl
YXNvbik6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKToKKyAg
ICAgICAgKFdlYkVycm9yOjpsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24pOgorICAgICAgICAo
V2ViRXJyb3I6OnJlY292ZXJBdHRlbXB0ZXIpOgorICAgICAgICAoV2ViRXJyb3I6OnVzZXJJbmZv
KToKKyAgICAgICAgKFdlYkVycm9yOjpmYWlsaW5nVVJMKToKKyAgICAgICAgKFdlYkVycm9yOjpp
c1BvbGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkVycm9yOjpzc2xQZWVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAqIFdlYkVycm9yLmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoa2l0KToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoZWxlbWVudEZyb21ET01FbGVt
ZW50KToKKyAgICAgICAgKFdlYkZyYW1lOjpXZWJGcmFtZVByaXZhdGU6OldlYkZyYW1lUHJpdmF0
ZSk6CisgICAgICAgIChXZWJGcmFtZTo6V2ViRnJhbWVQcml2YXRlOjp+V2ViRnJhbWVQcml2YXRl
KToKKyAgICAgICAgKFdlYkZyYW1lOjpXZWJGcmFtZVByaXZhdGU6OmZyYW1lVmlldyk6CisgICAg
ICAgIChXZWJGcmFtZTo6V2ViRnJhbWUpOgorICAgICAgICAoV2ViRnJhbWU6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKFdlYkZyYW1lOjpzZXRBbGxvd3NTY3JvbGxpbmcpOgorICAgICAgICAo
V2ViRnJhbWU6OmFsbG93c1Njcm9sbGluZyk6CisgICAgICAgIChXZWJGcmFtZTo6c2V0SXNEaXNj
b25uZWN0ZWQpOgorICAgICAgICAoV2ViRnJhbWU6OnNldEV4Y2x1ZGVGcm9tVGV4dFNlYXJjaCk6
CisgICAgICAgIChXZWJGcmFtZTo6cmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXZWJGcmFt
ZTo6cGFpbnREb2N1bWVudFJlY3RUb0NvbnRleHQpOgorICAgICAgICAoV2ViRnJhbWU6OnBhaW50
U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KToKKyAgICAgICAgKFdlYkZyYW1lOjpRdWVy
eUludGVyZmFjZSk6CisgICAgICAgIChXZWJGcmFtZTo6QWRkUmVmKToKKyAgICAgICAgKFdlYkZy
YW1lOjpSZWxlYXNlKToKKyAgICAgICAgKFdlYkZyYW1lOjpuYW1lKToKKyAgICAgICAgKFdlYkZy
YW1lOjp3ZWJWaWV3KToKKyAgICAgICAgKFdlYkZyYW1lOjpmcmFtZVZpZXcpOgorICAgICAgICAo
V2ViRnJhbWU6OkRPTURvY3VtZW50KToKKyAgICAgICAgKFdlYkZyYW1lOjpET01XaW5kb3cpOgor
ICAgICAgICAoV2ViRnJhbWU6OmZyYW1lRWxlbWVudCk6CisgICAgICAgIChXZWJGcmFtZTo6Y3Vy
cmVudEZvcm0pOgorICAgICAgICAoV2ViRnJhbWU6Omdsb2JhbENvbnRleHQpOgorICAgICAgICAo
V2ViRnJhbWU6Omdsb2JhbENvbnRleHRGb3JTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJGcmFt
ZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAg
KFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpsb2Fk
SFRNTFN0cmluZyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRBcmNoaXZlKToKKyAgICAgICAgKGdldFdlYkRhdGFT
b3VyY2UpOgorICAgICAgICAoV2ViRnJhbWU6OmRhdGFTb3VyY2UpOgorICAgICAgICAoV2ViRnJh
bWU6OnByb3Zpc2lvbmFsRGF0YVNvdXJjZSk6CisgICAgICAgIChXZWJGcmFtZTo6dXJsKToKKyAg
ICAgICAgKFdlYkZyYW1lOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJGcmFtZTo6cmVsb2Fk
KToKKyAgICAgICAgKFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1lZCk6CisgICAgICAgIChXZWJGcmFt
ZTo6cGFyZW50RnJhbWUpOgorICAgICAgICAoRW51bUNoaWxkRnJhbWVzOjpFbnVtQ2hpbGRGcmFt
ZXMpOgorICAgICAgICAoRW51bUNoaWxkRnJhbWVzOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAg
IChFbnVtQ2hpbGRGcmFtZXM6OkFkZFJlZik6CisgICAgICAgIChFbnVtQ2hpbGRGcmFtZXM6OkNs
b25lKToKKyAgICAgICAgKFdlYkZyYW1lOjpjaGlsZEZyYW1lcyk6CisgICAgICAgIChXZWJGcmFt
ZTo6cmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJGcmFt
ZTo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkZyYW1lOjpudW1iZXJP
ZlBhZ2VzKToKKyAgICAgICAgKFdlYkZyYW1lOjpzY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2Vi
RnJhbWU6OmxheW91dCk6CisgICAgICAgIChXZWJGcmFtZTo6Zmlyc3RMYXlvdXREb25lKToKKyAg
ICAgICAgKFdlYkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KToKKyAgICAgICAg
KFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6Y2xlYXJP
cGVuZXIpOgorICAgICAgICAoV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAo
V2ViRnJhbWU6OnN1cHBvcnRzVGV4dEVuY29kaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpzZWxl
Y3RlZFN0cmluZyk6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0QWxsKToKKyAgICAgICAgKFdl
YkZyYW1lOjpkZXNlbGVjdEFsbCk6CisgICAgICAgIChXZWJGcmFtZTo6Zm9ybUZvckVsZW1lbnQp
OgorICAgICAgICAoV2ViRnJhbWU6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKToKKyAgICAgICAg
KFdlYkZyYW1lOjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkZyYW1lOjpzdXNwZW5k
QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJGcmFtZTo6cGF1c2VBbmltYXRpb24pOgorICAgICAg
ICAoV2ViRnJhbWU6OnBhdXNlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6dmlzaWJs
ZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkZyYW1lOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMpOgorICAgICAgICAoV2ViRnJhbWU6OmlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZSk6Cisg
ICAgICAgIChXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayk6CisgICAgICAgIChXZWJGcmFt
ZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudCk6CisgICAgICAgIChXZWJGcmFtZTo6bWF0
Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudCk6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKToKKyAgICAgICAgKFdlYkZyYW1lOjpsYXllclRyZWVBc1RleHQpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpzZXRJblBy
aW50aW5nTW9kZSk6CisgICAgICAgIChXZWJGcmFtZTo6Y29tcHV0ZVBhZ2VSZWN0cyk6CisgICAg
ICAgIChXZWJGcmFtZTo6Z2V0UHJpbnRlZFBhZ2VDb3VudCk6CisgICAgICAgIChXZWJGcmFtZTo6
c3Bvb2xQYWdlcyk6CisgICAgICAgIChXZWJGcmFtZTo6aXNGcmFtZVNldCk6CisgICAgICAgIChX
ZWJGcmFtZTo6c3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpzaXplKToKKyAgICAgICAgKFdl
YkZyYW1lOjpoYXNTY3JvbGxCYXJzKToKKyAgICAgICAgKFdlYkZyYW1lOjpjb250ZW50Qm91bmRz
KToKKyAgICAgICAgKFdlYkZyYW1lOjpmcmFtZUJvdW5kcyk6CisgICAgICAgIChXZWJGcmFtZTo6
aXNEZXNjZW5kYW50T2ZGcmFtZSk6CisgICAgICAgIChXZWJGcmFtZTo6dXBkYXRlQmFja2dyb3Vu
ZCk6CisgICAgICAgIChXZWJGcmFtZTo6aXNNYWluRnJhbWUpOgorICAgICAgICAqIFdlYkZyYW1l
Lmg6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJG
cmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdl
YkZyYW1lUG9saWN5TGlzdGVuZXI6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkZyYW1l
UG9saWN5TGlzdGVuZXI6OkFkZFJlZik6CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVy
OjpSZWxlYXNlKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OnVzZSk6CisgICAg
ICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyOjppZ25vcmUpOgorICAgICAgICAoV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6Y29udGludWVTdWJtaXQpOgorICAgICAgICAqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIuaDoK
KyAgICAgICAgKiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OkFkZFJlZik6CisgICAgICAgIChXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyOjpSZWxlYXNlKToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXI6OmFsbG93KToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXI6OmRlbnkpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaDoKKyAg
ICAgICAgKiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9z
aXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwpOgorICAgICAg
ICAqIFdlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50
YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50
YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246
OkFkZFJlZik6CisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OlJlbGVhc2UpOgorICAg
ICAgICAoV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzdXBwb3J0ZWRNSU1FVHlwZXMpOgorICAgICAg
ICAoV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToK
KyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6YXR0cmlidXRlZFN0cmluZ0Zyb21ET01O
b2Rlcyk6CisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OmVsZW1lbnRXaXRoTmFtZSk6
CisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
KToKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZWxlbWVudElzUGFzc3dvcmQpOgor
ICAgICAgICAoV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpmb3JtRm9yRWxlbWVudCk6CisgICAgICAg
IChXZWJIVE1MUmVwcmVzZW50YXRpb246OmN1cnJlbnRGb3JtKToKKyAgICAgICAgKFdlYkhUTUxS
ZXByZXNlbnRhdGlvbjo6Y29udHJvbHNJbkZvcm0pOgorICAgICAgICAoV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uOjpkZXByZWNhdGVkU2VhcmNoRm9yTGFiZWxzKToKKyAgICAgICAgKFdlYkhUTUxSZXBy
ZXNlbnRhdGlvbjo6bWF0Y2hMYWJlbHMpOgorICAgICAgICAoV2ViSFRNTFJlcHJlc2VudGF0aW9u
OjpzZWFyY2hGb3JMYWJlbHMpOgorICAgICAgICAoV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzZXRE
YXRhU291cmNlKToKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6cmVjZWl2ZWREYXRh
KToKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6cmVjZWl2ZWRFcnJvcik6CisgICAg
ICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OmZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNl
KToKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y2FuUHJvdmlkZURvY3VtZW50U291
cmNlKToKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZG9jdW1lbnRTb3VyY2UpOgor
ICAgICAgICAoV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp0aXRsZSk6CisgICAgICAgICogV2ViSFRN
TFJlcHJlc2VudGF0aW9uLmg6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChX
ZWJIaXN0b3J5OjpXZWJIaXN0b3J5KToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OlF1ZXJ5SW50ZXJm
YWNlKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OkFkZFJlZik6CisgICAgICAgIChXZWJIaXN0b3J5
OjpSZWxlYXNlKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OnNoYXJlZEhpc3RvcnkpOgorICAgICAg
ICAoV2ViSGlzdG9yeTo6b3B0aW9uYWxTaGFyZWRIaXN0b3J5KToKKyAgICAgICAgKFdlYkhpc3Rv
cnk6OnNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeSk6CisgICAgICAgIChXZWJIaXN0b3J5Ojp1bnVz
ZWQxKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OnVudXNlZDIpOgorICAgICAgICAoV2ViSGlzdG9y
eTo6YWRkSXRlbXMpOgorICAgICAgICAoV2ViSGlzdG9yeTo6cmVtb3ZlSXRlbXMpOgorICAgICAg
ICAoV2ViSGlzdG9yeTo6cmVtb3ZlQWxsSXRlbXMpOgorICAgICAgICAoV2ViSGlzdG9yeTo6b3Jk
ZXJlZExhc3RWaXNpdGVkRGF5cyk6CisgICAgICAgIChXZWJIaXN0b3J5OjpvcmRlcmVkSXRlbXNM
YXN0VmlzaXRlZE9uRGF5KToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OmFsbEl0ZW1zKToKKyAgICAg
ICAgKFdlYkhpc3Rvcnk6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXZWJIaXN0
b3J5OjpzZXRIaXN0b3J5SXRlbUxpbWl0KToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Omhpc3RvcnlJ
dGVtTGltaXQpOgorICAgICAgICAoV2ViSGlzdG9yeTo6c2V0SGlzdG9yeUFnZUluRGF5c0xpbWl0
KToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Omhpc3RvcnlBZ2VJbkRheXNMaW1pdCk6CisgICAgICAg
IChXZWJIaXN0b3J5Ojp2aXNpdGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JV
UkwpOgorICAgICAgICAqIFdlYkhpc3RvcnkuaDoKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5j
cHA6CisgICAgICAgIChoaXN0b3J5SXRlbVdyYXBwZXJzKToKKyAgICAgICAgKFdlYkhpc3RvcnlJ
dGVtOjpXZWJIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21E
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OmRpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aGFzVVJMU3Ry
aW5nKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjp2aXNpdENvdW50KToKKyAgICAgICAgKFdl
Ykhpc3RvcnlJdGVtOjpzZXRWaXNpdENvdW50KToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpt
ZXJnZUF1dG9Db21wbGV0ZUhpbnRzKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpzZXRMYXN0
VmlzaXRlZFRpbWVJbnRlcnZhbCk6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OlJTU0ZlZWRSZWZlcnJlcik6CisgICAgICAgIChX
ZWJIaXN0b3J5SXRlbTo6c2V0UlNTRmVlZFJlZmVycmVyKToKKyAgICAgICAgKFdlYkhpc3RvcnlJ
dGVtOjpoYXNQYWdlQ2FjaGUpOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OnNldEhhc1BhZ2VD
YWNoZSk6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkhp
c3RvcnlJdGVtOjppc1RhcmdldEl0ZW0pOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OmNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpsYXN0VmlzaXRXYXNGYWlsdXJlKToKKyAg
ICAgICAgKFdlYkhpc3RvcnlJdGVtOjpzZXRMYXN0VmlzaXRXYXNGYWlsdXJlKToKKyAgICAgICAg
KFdlYkhpc3RvcnlJdGVtOjpsYXN0VmlzaXRXYXNIVFRQTm9uR2V0KToKKyAgICAgICAgKFdlYkhp
c3RvcnlJdGVtOjpzZXRMYXN0VmlzaXRXYXNIVFRQTm9uR2V0KToKKyAgICAgICAgKFdlYkhpc3Rv
cnlJdGVtOjpyZWRpcmVjdFVSTHMpOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OnZpc2l0ZWRX
aXRoVGl0bGUpOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OmdldERhaWx5VmlzaXRDb3VudHMp
OgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OmdldFdlZWtseVZpc2l0Q291bnRzKToKKyAgICAg
ICAgKFdlYkhpc3RvcnlJdGVtOjpyZWNvcmRJbml0aWFsVmlzaXQpOgorICAgICAgICAoV2ViSGlz
dG9yeUl0ZW06OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpBZGRS
ZWYpOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OlJlbGVhc2UpOgorICAgICAgICAoV2ViSGlz
dG9yeUl0ZW06OmluaXRXaXRoVVJMU3RyaW5nKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpv
cmlnaW5hbFVSTFN0cmluZyk6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6VVJMU3RyaW5nKToK
KyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjp0aXRsZSk6CisgICAgICAgIChXZWJIaXN0b3J5SXRl
bTo6bGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWwpOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OnNl
dEFsdGVybmF0ZVRpdGxlKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjphbHRlcm5hdGVUaXRs
ZSk6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aWNvbik6CisgICAgICAgICogV2ViSGlzdG9y
eUl0ZW0uaDoKKyAgICAgICAgKiBXZWJJY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViSWNv
bkRhdGFiYXNlOjpXZWJJY29uRGF0YWJhc2UpOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjpR
dWVyeUludGVyZmFjZSk6CisgICAgICAgIChXZWJJY29uRGF0YWJhc2U6OkFkZFJlZik6CisgICAg
ICAgIChXZWJJY29uRGF0YWJhc2U6OlJlbGVhc2UpOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNl
OjpzaGFyZWRJY29uRGF0YWJhc2UpOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjppY29uRm9y
VVJMKToKKyAgICAgICAgKFdlYkljb25EYXRhYmFzZTo6ZGVmYXVsdEljb25XaXRoU2l6ZSk6Cisg
ICAgICAgIChXZWJJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JVUkwpOgorICAgICAgICAoV2Vi
SWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclVSTCk6CisgICAgICAgIChXZWJJY29uRGF0YWJh
c2U6OnJlbW92ZUFsbEljb25zKToKKyAgICAgICAgKFdlYkljb25EYXRhYmFzZTo6ZGVsYXlEYXRh
YmFzZUNsZWFudXApOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xl
YW51cCk6CisgICAgICAgIChXZWJJY29uRGF0YWJhc2U6Omljb25VUkxGb3JVUkwpOgorICAgICAg
ICAoV2ViSWNvbkRhdGFiYXNlOjppc0VuYWJsZWQpOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNl
OjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkljb25EYXRhYmFzZTo6aGFzSWNvbkZvclVSTCk6
CisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogV2ViSW5zcGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpmcm9udGVu
ZENsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OndlYlZpZXdDbG9zZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3I6
OkFkZFJlZik6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OlJlbGVhc2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yOjpzaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yOjp1bnVzZWQxKToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6
Y2xvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjphdHRhY2gpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yOjpkZXRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjppc0RlYnVnZ2luZ0phdmFT
Y3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjp0b2dnbGVEZWJ1Z2dpbmdKYXZhU2NyaXB0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6aXNQcm9maWxpbmdKYXZhU2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvcjo6dG9nZ2xlUHJvZmlsaW5nSmF2YVNjcmlwdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3I6Omlz
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6c2V0VGlt
ZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IuaDoKKyAgICAg
ICAgKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkphdmFTY3JpcHRD
b2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IpOgorICAgICAgICAoV2ViSmF2YVNjcmlw
dENvbGxlY3Rvcjo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoV2ViSmF2YVNjcmlwdENvbGxl
Y3Rvcjo6QWRkUmVmKToKKyAgICAgICAgKFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OmNvbGxlY3Qp
OgorICAgICAgICAoV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y29sbGVjdE9uQWx0ZXJuYXRlVGhy
ZWFkKToKKyAgICAgICAgKFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6Om9iamVjdENvdW50KToKKyAg
ICAgICAgKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViS2l0Q09NQVBJ
LmNwcDoKKyAgICAgICAgKGNsYXNzRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXRDcmVhdGVJbnN0
YW5jZSk6CisgICAgICAgICogV2ViS2l0Q09NQVBJLmg6CisgICAgICAgICogV2ViS2l0Q2xhc3NG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0
b3J5KToKKyAgICAgICAgKFdlYktpdENsYXNzRmFjdG9yeTo6fldlYktpdENsYXNzRmFjdG9yeSk6
CisgICAgICAgIChXZWJLaXRDbGFzc0ZhY3Rvcnk6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdENsYXNzRmFjdG9yeTo6QWRkUmVmKToKKyAgICAgICAgKGxlYWtSZWZGcm9tQ3JlYXRl
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0Q2xhc3NGYWN0b3J5OjpDcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgICogV2ViS2l0Q2xhc3NGYWN0b3J5Lmg6CisgICAgICAgICogV2ViS2l0RExMLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRNZXNzYWdlTG9vcC5jcHA6CisgICAgICAgICogV2ViS2l0TWVz
c2FnZUxvb3AuaDoKKyAgICAgICAgKiBXZWJLaXRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKiBX
ZWJLaXRTdGF0aXN0aWNzLmg6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwOgor
ICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0Lmg6CisgICAgICAgICogV2ViTmF2aWdhdGlv
bkRhdGEuY3BwOgorICAgICAgICAqIFdlYk5hdmlnYXRpb25EYXRhLmg6CisgICAgICAgICogV2Vi
Tm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNl
bnRlci5oOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJQcmVm
ZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKiBXZWJSZXNv
dXJjZS5oOgorICAgICAgICAqIFdlYlNjcmlwdE9iamVjdC5jcHA6CisgICAgICAgICogV2ViU2Ny
aXB0T2JqZWN0Lmg6CisgICAgICAgICogV2ViU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAqIFdl
YlNjcmlwdFdvcmxkLmg6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAqIFdlYlNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogV2ViU2VyaWFsaXplZEpTVmFsdWUu
Y3BwOgorICAgICAgICAqIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmg6CisgICAgICAgICogV2ViVGV4
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKiBXZWJUZXh0UmVuZGVyZXIuaDoKKyAgICAgICAgKiBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHA6CisgICAgICAgICogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlci5jcHA6CisgICAgICAgICogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VT
ZW5kZXIuaDoKKyAgICAgICAgKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlckNG
TmV0LmNwcDoKKyAgICAgICAgKiBXZWJVUkxDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKiBXZWJV
UkxDcmVkZW50aWFsLmg6CisgICAgICAgICogV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcDoKKyAg
ICAgICAgKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBXZWJVUkxSZXNwb25z
ZS5jcHA6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAqIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5o
OgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAg
KiBXZWJXb3JrZXJzUHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViV29ya2Vyc1ByaXZhdGUuaDoK
KwogMjAxNS0wOC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlcGxhY2UgYWxsIHJlbWFpbmluZyB1c2VzIG9mIFdURjo6TXV0ZXggd2l0aCBXVEY6OkxvY2sK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAJKHJldmlzaW9uIDE4ODYzOCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTAsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNlcm90ZWsgQ29ycG9yYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC01OCw3ICs1OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iaiwgSFdORCB3aW5kb3cpCiAgICAgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcihvYmop
CiAgICAgLCBtX3dpbmRvdyh3aW5kb3cpCi0gICAgLCBtX3JlZkNvdW50KDApCiB7CiAgICAgQVNT
RVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CkBAIC04
NCw3ICs4Myw3IEBAIEFjY2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW4KICAg
ICByZXR1cm4gbmV3IEFjY2Vzc2libGVCYXNlKG9iaiwgd2luZG93KTsKIH0KIAotSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6UXVlcnlTZXJ2aWNlKFJFRkdVSUQgZ3VpZFNlcnZpY2UsIFJFRklJRCBy
aWlkLCB2b2lkICoqcHB2T2JqZWN0KQorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6UXVlcnlTZXJ2
aWNlKF9Jbl8gUkVGR1VJRCBndWlkU2VydmljZSwgX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQgKipwcHZPYmplY3QpCiB7CiAgICAgaWYgKCFJc0VxdWFsR1VJRChndWlkU2Vydmlj
ZSwgU0lEX0FjY2Vzc2libGVDb21wYXJhYmxlKQogICAgICAgICAmJiAhSXNFcXVhbEdVSUQoZ3Vp
ZFNlcnZpY2UsIElJRF9JQWNjZXNzaWJsZTJfMikKQEAgLTk0LDE1ICs5MywxNyBAQCBIUkVTVUxU
IEFjY2Vzc2libGVCYXNlOjpRdWVyeVNlcnZpY2UoUkVGCiAgICAgICAgICYmICFJc0VxdWFsR1VJ
RChndWlkU2VydmljZSwgSUlEX0lBY2Nlc3NpYmxlVGV4dCkKICAgICAgICAgJiYgIUlzRXF1YWxH
VUlEKGd1aWRTZXJ2aWNlLCBJSURfSUFjY2Vzc2libGVUZXh0MikKICAgICAgICAgJiYgIUlzRXF1
YWxHVUlEKGd1aWRTZXJ2aWNlLCBJSURfSUFjY2Vzc2libGVFZGl0YWJsZVRleHQpKSB7Ci0gICAg
ICAgICpwcHZPYmplY3QgPSAwOworICAgICAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKICAgICB9CiAgICAgcmV0dXJuIFF1ZXJ5SW50ZXJmYWNl
KHJpaWQsIHBwdk9iamVjdCk7CiB9CiAKIC8vIElVbmtub3duCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIEFjY2Vzc2libGVCYXNlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoq
IHBwdk9iamVjdCkKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogeworICAgIGlmICgh
cHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBfX3V1aWRvZihJQWNjZXNzaWJsZSkpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SUFjY2Vzc2libGUqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChy
aWlkLCBfX3V1aWRvZihJRGlzcGF0Y2gpKSkKQEAgLTEyMCwxNCArMTIxLDE0IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBfX3V1aWRvZihBY2Nlc3NpYmxlQmFzZSkpKQogICAgICAgICAqcHB2T2JqZWN0ID0g
c3RhdGljX2Nhc3Q8QWNjZXNzaWJsZUJhc2UqPih0aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAg
KnBwdk9iamVjdCA9IDA7CisgICAgICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgICAgICBy
ZXR1cm4gRV9OT0lOVEVSRkFDRTsKICAgICB9CiAgICAgQWRkUmVmKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjpSZWxlYXNl
KHZvaWQpCitVTE9ORyBBY2Nlc3NpYmxlQmFzZTo6UmVsZWFzZSgpCiB7CiAgICAgQVNTRVJUKG1f
cmVmQ291bnQgPiAwKTsKICAgICBpZiAoLS1tX3JlZkNvdW50KQpAQCAtMTM3LDcgKzEzOCw3IEBA
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjoKIH0KIAogLy8gSUFjY2Vz
c2libGUyXzIKLUhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hdHRyaWJ1dGUoQlNUUiBrZXks
IFZBUklBTlQqIHZhbHVlKQorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2F0dHJpYnV0ZShf
SW5fIEJTVFIga2V5LCBfT3V0XyBWQVJJQU5UKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTQ5LDIwICsxNTAsMjQgQEAgSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6Z2V0X2F0dHJpYnV0ZShCUwogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjZXNzaWJsZVdpdGhDYXJldChJVW5rbm93bioq
IGFjY2Vzc2libGUsIGxvbmcqIGNhcmV0T2Zmc2V0KQorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6
Z2V0X2FjY2Vzc2libGVXaXRoQ2FyZXQoX0NPTV9PdXRwdHJfb3B0XyBJVW5rbm93bioqIGFjY2Vz
c2libGUsIF9PdXRfIGxvbmcqIGNhcmV0T2Zmc2V0KQogeworICAgIGlmICghYWNjZXNzaWJsZSB8
fCAhY2FyZXRPZmZzZXQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmFjY2Vzc2li
bGUgPSBudWxscHRyOworICAgICpjYXJldE9mZnNldCA9IDA7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpn
ZXRfcmVsYXRpb25UYXJnZXRzT2ZUeXBlKEJTVFIgdHlwZSwgbG9uZyBtYXhUYXJnZXRzLCBJVW5r
bm93bioqKiB0YXJnZXRzLCBsb25nKiBuVGFyZ2V0cykKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6
OmdldF9yZWxhdGlvblRhcmdldHNPZlR5cGUoX0luXyBCU1RSIHR5cGUsIGxvbmcgbWF4VGFyZ2V0
cywgX19kZXJlZl9vdXRfZWNvdW50X2Z1bGxfb3B0KCpuVGFyZ2V0cykgSVVua25vd24qKiogdGFy
Z2V0cywgX091dF8gbG9uZyogblRhcmdldHMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBJQWNjZXNzaWJsZTIKLUhSRVNVTFQgQWNjZXNz
aWJsZUJhc2U6OmdldF9uUmVsYXRpb25zKGxvbmcqIG5SZWxhdGlvbnMpCitIUkVTVUxUIEFjY2Vz
c2libGVCYXNlOjpnZXRfblJlbGF0aW9ucyhfT3V0XyBsb25nKiBuUmVsYXRpb25zKQogewogICAg
IGlmICghblJlbGF0aW9ucykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE3NCwyOSAr
MTc5LDMzIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9uUmVsYXRpb25zKGwKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X3JlbGF0aW9uKGxv
bmcgcmVsYXRpb25JbmRleCwgSUFjY2Vzc2libGVSZWxhdGlvbioqIHJlbGF0aW9uKQorSFJFU1VM
VCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X3JlbGF0aW9uKGxvbmcgcmVsYXRpb25JbmRleCwgX0NPTV9P
dXRwdHJfb3B0XyBJQWNjZXNzaWJsZVJlbGF0aW9uKiogcmVsYXRpb24pCiB7CiAgICAgaWYgKCFy
ZWxhdGlvbikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAorICAgICpyZWxhdGlvbiA9IG51
bGxwdHI7CisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9
CiAKLUhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9yZWxhdGlvbnMobG9uZyBtYXhSZWxhdGlv
bnMsIElBY2Nlc3NpYmxlUmVsYXRpb24qKiByZWxhdGlvbnMsIGxvbmcqIG5SZWxhdGlvbnMpCitI
UkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfcmVsYXRpb25zKGxvbmcgbWF4UmVsYXRpb25zLCBf
X291dF9lY291bnRfcGFydChtYXhSZWxhdGlvbnMsICpuUmVsYXRpb25zKSAgSUFjY2Vzc2libGVS
ZWxhdGlvbioqIHJlbGF0aW9ucywgX091dF8gbG9uZyogblJlbGF0aW9ucykKIHsKICAgICBpZiAo
IXJlbGF0aW9ucyB8fCAhblJlbGF0aW9ucykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAor
ICAgICpyZWxhdGlvbnMgPSBudWxscHRyOworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpyb2xlKGxvbmcq
IHJvbGUpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpyb2xlKF9PdXRfIGxvbmcqIHJvbGUpCiB7
CiAgICAgaWYgKCFyb2xlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCisgICAgKnJvbGUg
PSAwOwogICAgIGlmICghbV9vYmplY3QpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTIx
OCwxMyArMjI3LDEzIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OnNjcm9sbFRvUG9pbnQoSUEK
ICAgICByZXR1cm4gU19GQUxTRTsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2dy
b3VwUG9zaXRpb24obG9uZyogZ3JvdXBMZXZlbCwgbG9uZyogc2ltaWxhckl0ZW1zSW5Hcm91cCwg
bG9uZyogcG9zaXRpb25Jbkdyb3VwKQorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2dyb3Vw
UG9zaXRpb24oX091dF8gbG9uZyogZ3JvdXBMZXZlbCwgX091dF8gbG9uZyogc2ltaWxhckl0ZW1z
SW5Hcm91cCwgX091dF8gbG9uZyogcG9zaXRpb25Jbkdyb3VwKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X3N0YXRlcyhBY2Nlc3NpYmxlU3RhdGVzKiBzdGF0ZXMpCitIUkVTVUxUIEFjY2Vzc2li
bGVCYXNlOjpnZXRfc3RhdGVzKF9PdXRfIEFjY2Vzc2libGVTdGF0ZXMqIHN0YXRlcykKIHsKICAg
ICBpZiAoIXN0YXRlcykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTIzNywxMSArMjQ2
LDExIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9zdGF0ZXMoQWNjZXMKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2V4dGVuZGVkUm9sZShC
U1RSKiBleHRlbmRlZFJvbGUpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfZXh0ZW5kZWRS
b2xlKF9fZGVyZWZfb3B0X291dCBCU1RSKiBleHRlbmRlZFJvbGUpCiB7CiAgICAgaWYgKCFleHRl
bmRlZFJvbGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KKyAgICAqZXh0ZW5kZWRSb2xl
ID0gbnVsbHB0cjsKICAgICBpZiAoIW1fb2JqZWN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CkBAIC0yNDksMTEgKzI1OCwxMSBAQCBIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfZXh0ZW5k
ZWRSb2xlCiAgICAgcmV0dXJuIFNfRkFMU0U7CiB9CiAKLUhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6
OmdldF9sb2NhbGl6ZWRFeHRlbmRlZFJvbGUoQlNUUiogbG9jYWxpemVkRXh0ZW5kZWRSb2xlKQor
SFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2xvY2FsaXplZEV4dGVuZGVkUm9sZShfX2RlcmVm
X29wdF9vdXQgQlNUUiogbG9jYWxpemVkRXh0ZW5kZWRSb2xlKQogewogICAgIGlmICghbG9jYWxp
emVkRXh0ZW5kZWRSb2xlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCisgICAgKmxvY2Fs
aXplZEV4dGVuZGVkUm9sZSA9IG51bGxwdHI7CiAgICAgaWYgKCFtX29iamVjdCkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIApAQCAtMjYxLDcgKzI3MCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJh
c2U6OmdldF9sb2NhbGl6ZWRFeHQKICAgICByZXR1cm4gU19GQUxTRTsKIH0KIAotSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6Z2V0X25FeHRlbmRlZFN0YXRlcyhsb25nKiBuRXh0ZW5kZWRTdGF0ZXMp
CitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfbkV4dGVuZGVkU3RhdGVzKF9PdXRfIGxvbmcq
IG5FeHRlbmRlZFN0YXRlcykKIHsKICAgICBpZiAoIW5FeHRlbmRlZFN0YXRlcykKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKQEAgLTI3NCwxOSArMjgzLDE5IEBAIEhSRVNVTFQgQWNjZXNzaWJs
ZUJhc2U6OmdldF9uRXh0ZW5kZWRTdGEKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6Z2V0X2V4dGVuZGVkU3RhdGVzKGxvbmcgbWF4RXh0ZW5kZWRTdGF0ZXMs
IEJTVFIqKiBleHRlbmRlZFN0YXRlcywgbG9uZyogbkV4dGVuZGVkU3RhdGVzKQorSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6Z2V0X2V4dGVuZGVkU3RhdGVzKGxvbmcgbWF4RXh0ZW5kZWRTdGF0ZXMs
IF9fZGVyZWZfb3V0X2Vjb3VudF9wYXJ0X29wdChtYXhFeHRlbmRlZFN0YXRlcywgKm5FeHRlbmRl
ZFN0YXRlcykgQlNUUioqIGV4dGVuZGVkU3RhdGVzLCBfT3V0XyBsb25nKiBuRXh0ZW5kZWRTdGF0
ZXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
Ci1IUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMobG9u
ZyBtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgQlNUUioqIGxvY2FsaXplZEV4dGVuZGVkU3Rh
dGVzLCBsb25nKiBuTG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMpCitIUkVTVUxUIEFjY2Vzc2libGVC
YXNlOjpnZXRfbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMobG9uZyBtYXhMb2NhbGl6ZWRFeHRlbmRl
ZFN0YXRlcywgX19kZXJlZl9vdXRfZWNvdW50X3BhcnRfb3B0KG1heExvY2FsaXplZEV4dGVuZGVk
U3RhdGVzLCAqbkxvY2FsaXplZEV4dGVuZGVkU3RhdGVzKSBCU1RSKiogbG9jYWxpemVkRXh0ZW5k
ZWRTdGF0ZXMsIF9PdXRfIGxvbmcqIG5Mb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcykKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgQWNj
ZXNzaWJsZUJhc2U6OmdldF91bmlxdWVJRChsb25nKiB1bmlxdWVJRCkKK0hSRVNVTFQgQWNjZXNz
aWJsZUJhc2U6OmdldF91bmlxdWVJRChfT3V0XyBsb25nKiB1bmlxdWVJRCkKIHsKICAgICBpZiAo
IXVuaXF1ZUlEKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjk4LDE4ICszMDcsMTgg
QEAgSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X3VuaXF1ZUlEKGxvbgogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfd2luZG93SGFuZGxlKEhXTkQq
IHdpbmRvd0hhbmRsZSkKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF93aW5kb3dIYW5kbGUo
X091dF8gSFdORCogd2luZG93SGFuZGxlKQogewogICAgICp3aW5kb3dIYW5kbGUgPSBtX3dpbmRv
dzsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2lu
ZGV4SW5QYXJlbnQobG9uZyogaW5kZXhJblBhcmVudCkKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6
OmdldF9pbmRleEluUGFyZW50KF9PdXRfIGxvbmcqIGluZGV4SW5QYXJlbnQpCiB7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2xvY2FsZShJ
QTJMb2NhbGUqIGxvY2FsZSkKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9sb2NhbGUoX091
dF8gSUEyTG9jYWxlKiBsb2NhbGUpCiB7CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CkBAIC0zMjIsMTggKzMzMSwyNSBAQCBIUkVTVUxUIEFjY2Vzc2libGVCYXNl
OjpnZXRfbG9jYWxlKElBMkxvCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgQWNjZXNz
aWJsZUJhc2U6OmdldF9hdHRyaWJ1dGVzKEJTVFIqIGF0dHJpYnV0ZXMpCitIUkVTVUxUIEFjY2Vz
c2libGVCYXNlOjpnZXRfYXR0cmlidXRlcyhfX2RlcmVmX29wdF9vdXQgQlNUUiogYXR0cmlidXRl
cykKIHsKKyAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7Cisg
ICAgKmF0dHJpYnV0ZXMgPSBudWxscHRyOwogICAgIGlmICghbV9vYmplY3QpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTX0ZBTFNF
OwogfQogCiAvLyBJQWNjZXNzaWJsZQotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY1Bh
cmVudChJRGlzcGF0Y2gqKiBwYXJlbnQpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNj
UGFyZW50KF9DT01fT3V0cHRyX29wdF8gSURpc3BhdGNoKiogcGFyZW50KQogewotICAgICpwYXJl
bnQgPSAwOworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisg
ICAgKnBhcmVudCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fb2JqZWN0KQogICAgICAgICByZXR1
cm4gRV9GQUlMOwpAQCAtMzUyLDcgKzM2OCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6Omdl
dF9hY2NQYXJlbnQoSUQKICAgICAgICAgT0JKSURfV0lORE9XLCBfX3V1aWRvZihJQWNjZXNzaWJs
ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihwYXJlbnQpKTsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0NoaWxkQ291bnQobG9uZyogY291
bnQpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjQ2hpbGRDb3VudChfT3V0XyBsb25n
KiBjb3VudCkKIHsKICAgICBpZiAoIW1fb2JqZWN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpA
QCAtMzYyLDEyICszNzgsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxl
QmFzZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFj
Y2Vzc2libGVCYXNlOjpnZXRfYWNjQ2hpbGQoVkFSSUFOVCB2Q2hpbGQsIElEaXNwYXRjaCoqIHBw
Q2hpbGQpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjQ2hpbGQoVkFSSUFOVCB2Q2hp
bGQsIF9DT01fT3V0cHRyX29wdF8gSURpc3BhdGNoKiogcHBDaGlsZCkKIHsKICAgICBpZiAoIXBw
Q2hpbGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcHBDaGlsZCA9IDA7Cisg
ICAgKnBwQ2hpbGQgPSBudWxscHRyOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRP
Ymo7CiAKQEAgLTM4MCwxMiArMzk2LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNj
ZXNzaWJsZUJhc2UKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY05hbWUoVkFSSUFOVCB2Q2hpbGQsIEJTVFIqIG5h
bWUpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjTmFtZShWQVJJQU5UIHZDaGlsZCwg
X19kZXJlZl9vcHRfb3V0IEJTVFIqIG5hbWUpCiB7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKm5hbWUgPSAwOworICAgICpuYW1lID0gbnVsbHB0cjsK
IAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkT2JqOwogICAgIEhSRVNVTFQgaHIgPSBn
ZXRBY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yQ2hpbGQodkNoaWxkLCBjaGlsZE9iaik7CkBAIC0zOTgs
MTIgKzQxNCwxMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAg
ICAgcmV0dXJuIFNfRkFMU0U7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNz
aWJsZUJhc2U6OmdldF9hY2NWYWx1ZShWQVJJQU5UIHZDaGlsZCwgQlNUUiogdmFsdWUpCitIUkVT
VUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjVmFsdWUoVkFSSUFOVCB2Q2hpbGQsIF9fZGVyZWZf
b3B0X291dCBCU1RSKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogCi0gICAgKnZhbHVlID0gMDsKKyAgICAqdmFsdWUgPSBudWxscHRyOwogCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmo7CiAgICAgSFJFU1VMVCBociA9IGdldEFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JDaGlsZCh2Q2hpbGQsIGNoaWxkT2JqKTsKQEAgLTQxNiwxMiAr
NDMyLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICBy
ZXR1cm4gU19GQUxTRTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxl
QmFzZTo6Z2V0X2FjY0Rlc2NyaXB0aW9uKFZBUklBTlQgdkNoaWxkLCBCU1RSKiBkZXNjcmlwdGlv
bikKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NEZXNj
cmlwdGlvbihWQVJJQU5UIHZDaGlsZCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIGRlc2NyaXB0aW9u
KQogewogICAgIGlmICghZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAK
LSAgICAqZGVzY3JpcHRpb24gPSAwOworICAgICpkZXNjcmlwdGlvbiA9IG51bGxwdHI7CiAKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iajsKICAgICBIUkVTVUxUIGhyID0gZ2V0QWNj
ZXNzaWJpbGl0eU9iamVjdEZvckNoaWxkKHZDaGlsZCwgY2hpbGRPYmopOwpAQCAtNDM1LDcgKzQ1
MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICByZXR1
cm4gU19GQUxTRTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X2FjY1JvbGUoVkFSSUFOVCB2Q2hpbGQsIFZBUklBTlQqIHB2Um9sZSkKK0hSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NSb2xlKFZBUklBTlQgdkNo
aWxkLCBfT3V0XyBWQVJJQU5UKiBwdlJvbGUpCiB7CiAgICAgaWYgKCFwdlJvbGUpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CkBAIC01MjQsNyArNTQwLDcgQEAgbG9uZyBBY2Nlc3NpYmxlQmFz
ZTo6c3RhdGUoKSBjb25zdAogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotSFJFU1VMVCBBY2Nlc3Np
YmxlQmFzZTo6Z2V0X2FjY1N0YXRlKFZBUklBTlQgdkNoaWxkLCBWQVJJQU5UKiBwdlN0YXRlKQor
SFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY1N0YXRlKFZBUklBTlQgdkNoaWxkLCBfT3V0
XyBWQVJJQU5UKiBwdlN0YXRlKQogewogICAgIGlmICghcHZTdGF0ZSkKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKQEAgLTU0MywxMiArNTU5LDEyIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6
OmdldF9hY2NTdGF0ZShWQVIKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0hlbHAoVkFSSUFOVCB2Q2hpbGQsIEJT
VFIqIGhlbHBUZXh0KQorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0hlbHAoVkFSSUFO
VCB2Q2hpbGQsIF9fZGVyZWZfb3B0X291dCBCU1RSKiBoZWxwVGV4dCkKIHsKICAgICBpZiAoIWhl
bHBUZXh0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmhlbHBUZXh0ID0gMDsK
KyAgICAqaGVscFRleHQgPSBudWxscHRyOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hp
bGRPYmo7CiAgICAgSFJFU1VMVCBociA9IGdldEFjY2Vzc2liaWxpdHlPYmplY3RGb3JDaGlsZCh2
Q2hpbGQsIGNoaWxkT2JqKTsKQEAgLTU2MSwxMiArNTc3LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICByZXR1cm4gU19GQUxTRTsKIH0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0tleWJvYXJkU2hvcnRj
dXQoVkFSSUFOVCB2Q2hpbGQsIEJTVFIqIHNob3J0Y3V0KQorSFJFU1VMVCBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X2FjY0tleWJvYXJkU2hvcnRjdXQoVkFSSUFOVCB2Q2hpbGQsIF9fZGVyZWZfb3B0X291
dCBCU1RSKiBzaG9ydGN1dCkKIHsKICAgICBpZiAoIXNob3J0Y3V0KQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogCi0gICAgKnNob3J0Y3V0ID0gMDsKKyAgICAqc2hvcnRjdXQgPSBudWxscHRy
OwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmo7CiAgICAgSFJFU1VMVCBociA9
IGdldEFjY2Vzc2liaWxpdHlPYmplY3RGb3JDaGlsZCh2Q2hpbGQsIGNoaWxkT2JqKTsKQEAgLTY1
MywxMiArNjY5LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3Np
YmxlQmFzZTo6Z2V0X2FjY1NlbGVjdGlvbihWQVJJQU5UKikKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NTZWxlY3Rpb24oX091dF8gVkFSSUFOVCopCiB7
CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBB
Y2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0ZvY3VzKFZBUklBTlQqIHB2Rm9jdXNlZENoaWxkKQorSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0ZvY3VzKF9PdXRf
IFZBUklBTlQqIHB2Rm9jdXNlZENoaWxkKQogewogICAgIGlmICghcHZGb2N1c2VkQ2hpbGQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02ODQsMTIgKzcwMCwxMiBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NEZWZhdWx0QWN0
aW9uKFZBUklBTlQgdkNoaWxkLCBCU1RSKiBhY3Rpb24pCitIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjRGVmYXVsdEFjdGlvbihWQVJJQU5UIHZDaGlsZCwg
X19kZXJlZl9vcHRfb3V0IEJTVFIqIGFjdGlvbikKIHsKICAgICBpZiAoIWFjdGlvbikKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICphY3Rpb24gPSAwOworICAgICphY3Rpb24gPSBu
dWxscHRyOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmo7CiAgICAgSFJFU1VM
VCBociA9IGdldEFjY2Vzc2liaWxpdHlPYmplY3RGb3JDaGlsZCh2Q2hpbGQsIGNoaWxkT2JqKTsK
QEAgLTcwMiw3ICs3MTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVC
YXNlCiAgICAgcmV0dXJuIFNfRkFMU0U7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
QWNjZXNzaWJsZUJhc2U6OmFjY0xvY2F0aW9uKGxvbmcqIGxlZnQsIGxvbmcqIHRvcCwgbG9uZyog
d2lkdGgsIGxvbmcqIGhlaWdodCwgVkFSSUFOVCB2Q2hpbGQpCitIUkVTVUxUIEFjY2Vzc2libGVC
YXNlOjphY2NMb2NhdGlvbihfT3V0XyBsb25nKiBsZWZ0LCBfT3V0XyBsb25nKiB0b3AsIF9PdXRf
IGxvbmcqIHdpZHRoLCBfT3V0XyBsb25nKiBoZWlnaHQsIFZBUklBTlQgdkNoaWxkKQogewogICAg
IGlmICghbGVmdCB8fCAhdG9wIHx8ICF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwpAQCAtNzI2LDE0ICs3NDIsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBBY2Nlc3NpYmxlQmFzZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjphY2NOYXZpZ2F0ZShsb25nIGRpcmVjdGlvbiwgVkFS
SUFOVCB2RnJvbUNoaWxkLCBWQVJJQU5UKiBwdk5hdmlnYXRlZFRvKQorSFJFU1VMVCBBY2Nlc3Np
YmxlQmFzZTo6YWNjTmF2aWdhdGUobG9uZyBkaXJlY3Rpb24sIFZBUklBTlQgdkZyb21DaGlsZCwg
X091dF8gVkFSSUFOVCogcHZOYXZpZ2F0ZWRUbykKIHsKICAgICBpZiAoIXB2TmF2aWdhdGVkVG8p
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICA6OlZhcmlhbnRJbml0KHB2TmF2aWdh
dGVkVG8pOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmogPSAwOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkT2JqID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAoZGly
ZWN0aW9uKSB7CiAgICAgICAgIGNhc2UgTkFWRElSX0RPV046CkBAIC03ODMsNyArNzk5LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZQogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjphY2NIaXRU
ZXN0KGxvbmcgeCwgbG9uZyB5LCBWQVJJQU5UKiBwdkNoaWxkQXRQb2ludCkKK0hSRVNVTFQgQWNj
ZXNzaWJsZUJhc2U6OmFjY0hpdFRlc3QobG9uZyB4LCBsb25nIHksIF9PdXRfIFZBUklBTlQqIHB2
Q2hpbGRBdFBvaW50KQogewogICAgIGlmICghcHZDaGlsZEF0UG9pbnQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CkBAIC04MTUsNyArODMxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBBY2Nlc3NpYmxlQmFzZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjphY2NEb0RlZmF1bHRBY3Rpb24oVkFSSUFOVCB2Q2hp
bGQpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjphY2NEb0RlZmF1bHRBY3Rpb24oVkFSSUFOVCB2
Q2hpbGQpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmo7CiAgICAgSFJFU1VM
VCBociA9IGdldEFjY2Vzc2liaWxpdHlPYmplY3RGb3JDaGlsZCh2Q2hpbGQsIGNoaWxkT2JqKTsK
QEAgLTEwMzksOCArMTA1NSwxMSBAQCBBY2Nlc3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6Ondy
YXBwZXIoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6
aXNTYW1lT2JqZWN0KElBY2Nlc3NpYmxlQ29tcGFyYWJsZSogb3RoZXIsIEJPT0wqIHJlc3VsdCkK
K0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmlzU2FtZU9iamVjdChfSW5fb3B0XyBJQWNjZXNzaWJs
ZUNvbXBhcmFibGUqIG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1
bHQgfHwgIW90aGVyKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgQ09NUHRyPEFj
Y2Vzc2libGVCYXNlPiBvdGhlckFjY2Vzc2libGVCYXNlKFF1ZXJ5LCBvdGhlcik7CiAgICAgKnJl
c3VsdCA9IChvdGhlckFjY2Vzc2libGVCYXNlID09IHRoaXMgfHwgb3RoZXJBY2Nlc3NpYmxlQmFz
ZS0+bV9vYmplY3QgPT0gbV9vYmplY3QpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9BY2Nlc3NpYmxlQmFzZS5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9BY2Nlc3NpYmxlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCwgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDkwICszOCw5OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFjY2Vzc2libGVC
YXNlKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSFdORCk7
CiAKICAgICAvLyBJU2VydmljZVByb3ZpZGVyCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFF1ZXJ5U2VydmljZShSRUZHVUlEIGd1aWRTZXJ2aWNlLCBSRUZJSUQgcmlpZCwg
dm9pZCAqKnBwdik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
U2VydmljZShfSW5fIFJFRkdVSUQgZ3VpZFNlcnZpY2UsIF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkICoqcHB2KTsKIAogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiog
cHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2
b2lkKSB7IHJldHVybiArK21fcmVmQ291bnQ7IH0KLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJl
ZigpIHsgcmV0dXJuICsrbV9yZWZDb3VudDsgfQorICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8gSUFjY2Vzc2libGUyXzIKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2F0dHJpYnV0ZShCU1RSIG5hbWUsIFZBUklB
TlQqIGF0dHJpYnV0ZSk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdl
dF9hY2Nlc3NpYmxlV2l0aENhcmV0KElVbmtub3duKiogYWNjZXNzaWJsZSwgbG9uZyogY2FyZXRP
ZmZzZXQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfcmVsYXRp
b25UYXJnZXRzT2ZUeXBlKEJTVFIgdHlwZSwgbG9uZyBtYXhUYXJnZXRzLCBJVW5rbm93bioqKiB0
YXJnZXRzLCBsb25nKiBuVGFyZ2V0cyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldF9hdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9PdXRfIFZBUklBTlQqIGF0dHJp
YnV0ZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hY2Nlc3Np
YmxlV2l0aENhcmV0KF9DT01fT3V0cHRyX29wdF8gSVVua25vd24qKiBhY2Nlc3NpYmxlLCBfT3V0
XyBsb25nKiBjYXJldE9mZnNldCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdldF9yZWxhdGlvblRhcmdldHNPZlR5cGUoX0luXyBCU1RSIHR5cGUsIGxvbmcgbWF4VGFy
Z2V0cywgX19kZXJlZl9vdXRfZWNvdW50X2Z1bGxfb3B0KCpuVGFyZ2V0cykgSVVua25vd24qKiog
dGFyZ2V0cywgX091dF8gbG9uZyogblRhcmdldHMpOwogCiAgICAgLy8gSUFjY2Vzc2libGUyCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9uUmVsYXRpb25zKGxvbmcq
KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X3JlbGF0aW9uKGxv
bmcgcmVsYXRpb25JbmRleCwgSUFjY2Vzc2libGVSZWxhdGlvbioqKTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X3JlbGF0aW9ucyhsb25nIG1heFJlbGF0aW9ucywg
SUFjY2Vzc2libGVSZWxhdGlvbioqIHJlbGF0aW9ucywgbG9uZyogblJlbGF0aW9ucyk7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJvbGUobG9uZyopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfblJlbGF0aW9ucyhfT3V0XyBsb25nKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9yZWxhdGlvbihsb25n
IHJlbGF0aW9uSW5kZXgsIF9DT01fT3V0cHRyX29wdF8gSUFjY2Vzc2libGVSZWxhdGlvbioqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X3JlbGF0aW9ucyhsb25n
IG1heFJlbGF0aW9ucywgX19vdXRfZWNvdW50X3BhcnQobWF4UmVsYXRpb25zLCAqblJlbGF0aW9u
cykgSUFjY2Vzc2libGVSZWxhdGlvbioqLCBfT3V0XyBsb25nKiBuUmVsYXRpb25zKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcm9sZShfT3V0XyBsb25nKik7CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcm9sbFRvKElBMlNjcm9sbFR5cGUp
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxUb1BvaW50KElB
MkNvb3JkaW5hdGVUeXBlLCBsb25nIHgsIGxvbmcgeSk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGdldF9ncm91cFBvc2l0aW9uKGxvbmcqIGdyb3VwTGV2ZWwsIGxvbmcq
IHNpbWlsYXJJdGVtc0luR3JvdXAsIGxvbmcqIHBvc2l0aW9uSW5Hcm91cCk7Ci0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9zdGF0ZXMoQWNjZXNzaWJsZVN0YXRlcyop
OwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfZXh0ZW5kZWRSb2xl
KEJTVFIqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2xvY2Fs
aXplZEV4dGVuZGVkUm9sZShCU1RSKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldF9uRXh0ZW5kZWRTdGF0ZXMobG9uZyopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBnZXRfZXh0ZW5kZWRTdGF0ZXMobG9uZyBtYXhFeHRlbmRlZFN0YXRl
cywgQlNUUioqIGV4dGVuZGVkU3RhdGVzLCBsb25nKiBuRXh0ZW5kZWRTdGF0ZXMpOwotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfbG9jYWxpemVkRXh0ZW5kZWRTdGF0
ZXMobG9uZyBtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgQlNUUioqIGxvY2FsaXplZEV4dGVu
ZGVkU3RhdGVzLCBsb25nKiBuTG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMpOwotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfdW5pcXVlSUQobG9uZyopOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfd2luZG93SGFuZGxlKEhXTkQqKTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2luZGV4SW5QYXJlbnQobG9u
ZyopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfbG9jYWxlKElB
MkxvY2FsZSopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYXR0
cmlidXRlcyhCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdl
dF9ncm91cFBvc2l0aW9uKF9PdXRfIGxvbmcqIGdyb3VwTGV2ZWwsIF9PdXRfIGxvbmcqIHNpbWls
YXJJdGVtc0luR3JvdXAsIF9PdXRfIGxvbmcqIHBvc2l0aW9uSW5Hcm91cCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9zdGF0ZXMoX091dF8gQWNjZXNzaWJsZVN0
YXRlcyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfZXh0ZW5k
ZWRSb2xlKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGdldF9sb2NhbGl6ZWRFeHRlbmRlZFJvbGUoX19kZXJlZl9vcHRfb3V0IEJT
VFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X25FeHRlbmRl
ZFN0YXRlcyhfT3V0XyBsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdldF9leHRlbmRlZFN0YXRlcyhsb25nIG1heEV4dGVuZGVkU3RhdGVzLCBfX2RlcmVmX291
dF9lY291bnRfcGFydF9vcHQobWF4RXh0ZW5kZWRTdGF0ZXMsICpuRXh0ZW5kZWRTdGF0ZXMpIEJT
VFIqKiBleHRlbmRlZFN0YXRlcywgX091dF8gbG9uZyogbkV4dGVuZGVkU3RhdGVzKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2xvY2FsaXplZEV4dGVuZGVkU3Rh
dGVzKGxvbmcgbWF4TG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMsIF9fZGVyZWZfb3V0X2Vjb3VudF9w
YXJ0X29wdChtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgKm5Mb2NhbGl6ZWRFeHRlbmRlZFN0
YXRlcykgQlNUUioqIGxvY2FsaXplZEV4dGVuZGVkU3RhdGVzLCBfT3V0XyBsb25nKiBuTG9jYWxp
emVkRXh0ZW5kZWRTdGF0ZXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBnZXRfdW5pcXVlSUQoX091dF8gbG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBnZXRfd2luZG93SGFuZGxlKF9PdXRfIEhXTkQqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2luZGV4SW5QYXJlbnQoX091dF8gbG9uZyopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfbG9jYWxlKF9PdXRfIElB
MkxvY2FsZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYXR0
cmlidXRlcyhfX2RlcmVmX29wdF9vdXQgQlNUUiopOwogCiAgICAgLy8gSUFjY2Vzc2libGUKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY1BhcmVudChJRGlzcGF0
Y2gqKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hY2NDaGls
ZENvdW50KGxvbmcqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0
X2FjY0NoaWxkKFZBUklBTlQgdkNoaWxkLCBJRGlzcGF0Y2gqKiBwcENoaWxkKTsKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY05hbWUoVkFSSUFOVCB2Q2hpbGQs
IEJTVFIqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY1Zh
bHVlKFZBUklBTlQgdkNoaWxkLCBCU1RSKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdldF9hY2NEZXNjcmlwdGlvbihWQVJJQU5ULCBCU1RSKik7Ci0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hY2NSb2xlKFZBUklBTlQgdkNoaWxkLCBW
QVJJQU5UKiBwdlJvbGUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBn
ZXRfYWNjU3RhdGUoVkFSSUFOVCB2Q2hpbGQsIFZBUklBTlQqIHB2U3RhdGUpOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjSGVscChWQVJJQU5UIHZDaGlsZCwg
QlNUUiogaGVscFRleHQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBn
ZXRfYWNjS2V5Ym9hcmRTaG9ydGN1dChWQVJJQU5UIHZDaGlsZCwgQlNUUiopOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjRm9jdXMoVkFSSUFOVCogcHZGb2N1
c2VkQ2hpbGQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNj
U2VsZWN0aW9uKFZBUklBTlQqIHB2U2VsZWN0ZWRDaGlsZCk7Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldF9hY2NEZWZhdWx0QWN0aW9uKFZBUklBTlQgdkNoaWxkLCBC
U1RSKiBhY3Rpb25EZXNjcmlwdGlvbik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldF9hY2NQYXJlbnQoX0NPTV9PdXRwdHJfb3B0XyBJRGlzcGF0Y2gqKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hY2NDaGlsZENvdW50KF9PdXRf
IGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY0No
aWxkKFZBUklBTlQgdkNoaWxkLCBfQ09NX091dHB0cl9vcHRfIElEaXNwYXRjaCoqIHBwQ2hpbGQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjTmFtZShWQVJJ
QU5UIHZDaGlsZCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY1ZhbHVlKFZBUklBTlQgdkNoaWxkLCBfX2RlcmVmX29w
dF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRf
YWNjRGVzY3JpcHRpb24oVkFSSUFOVCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY1JvbGUoVkFSSUFOVCB2Q2hpbGQs
IF9PdXRfIFZBUklBTlQqIHB2Um9sZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldF9hY2NTdGF0ZShWQVJJQU5UIHZDaGlsZCwgX091dF8gVkFSSUFOVCogcHZTdGF0
ZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hY2NIZWxwKFZB
UklBTlQgdkNoaWxkLCBfX2RlcmVmX29wdF9vdXQgQlNUUiogaGVscFRleHQpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjS2V5Ym9hcmRTaG9ydGN1dChWQVJJ
QU5UIHZDaGlsZCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY0ZvY3VzKF9PdXRfIFZBUklBTlQqIHB2Rm9jdXNlZENo
aWxkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2FjY1NlbGVj
dGlvbihfT3V0XyBWQVJJQU5UKiBwdlNlbGVjdGVkQ2hpbGQpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjRGVmYXVsdEFjdGlvbihWQVJJQU5UIHZDaGlsZCwg
X19kZXJlZl9vcHRfb3V0IEJTVFIqIGFjdGlvbkRlc2NyaXB0aW9uKTsKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWNjU2VsZWN0KGxvbmcgc2VsZWN0aW9uRmxhZ3MsIFZB
UklBTlQgdkNoaWxkKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWNj
TG9jYXRpb24obG9uZyogbGVmdCwgbG9uZyogdG9wLCBsb25nKiB3aWR0aCwgbG9uZyogaGVpZ2h0
LCBWQVJJQU5UIHZDaGlsZCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGFjY05hdmlnYXRlKGxvbmcgZGlyZWN0aW9uLCBWQVJJQU5UIHZGcm9tQ2hpbGQsIFZBUklBTlQq
IHB2TmF2aWdhdGVkVG8pOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBh
Y2NIaXRUZXN0KGxvbmcgeCwgbG9uZyB5LCBWQVJJQU5UKiBwdkNoaWxkQXRQb2ludCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFjY0xvY2F0aW9uKF9PdXRfIGxvbmcq
IGxlZnQsIF9PdXRfIGxvbmcqIHRvcCwgX091dF8gbG9uZyogd2lkdGgsIF9PdXRfIGxvbmcqIGhl
aWdodCwgVkFSSUFOVCB2Q2hpbGQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBhY2NOYXZpZ2F0ZShsb25nIGRpcmVjdGlvbiwgVkFSSUFOVCB2RnJvbUNoaWxkLCBfT3V0
XyBWQVJJQU5UKiBwdk5hdmlnYXRlZFRvKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgYWNjSGl0VGVzdChsb25nIHgsIGxvbmcgeSwgX091dF8gVkFSSUFOVCogcHZDaGls
ZEF0UG9pbnQpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhY2NEb0Rl
ZmF1bHRBY3Rpb24oVkFSSUFOVCB2Q2hpbGQpOwogCiAgICAgLy8gSUFjY2Vzc2libGUgLSBOb3Qg
dG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHB1dF9hY2NOYW1lKFZBUklBTlQsIEJTVFIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwdXRfYWNjVmFsdWUoVkFSSUFOVCwgQlNU
UikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldF9hY2NIZWxwVG9waWMoQlNUUiogaGVscEZpbGUsIFZBUklBTlQsIGxvbmcqIHRv
cGljSUQpCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHB1dF9hY2NOYW1l
KFZBUklBTlQsIF9Jbl8gQlNUUikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHB1dF9hY2NWYWx1ZShWQVJJQU5ULCBfSW5fIEJTVFIp
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXRfYWNjSGVscFRvcGljKEJTVFIqIGhlbHBGaWxlLCBWQVJJQU5ULCBfT3V0XyBsb25n
KiB0b3BpY0lEKQogICAgIHsKLSAgICAgICAgKmhlbHBGaWxlID0gMDsKKyAgICAgICAgaWYgKCFo
ZWxwRmlsZSB8fCAhdG9waWNJRCkKKyAgICAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAg
ICAgICAgKmhlbHBGaWxlID0gbnVsbHB0cjsKICAgICAgICAgKnRvcGljSUQgPSAwOwogICAgICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogICAgIH0KIAogICAgIC8vIElEaXNwYXRjaCAtIE5vdCB0byBi
ZSBpbXBsZW1lbnRlZC4KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0
VHlwZUluZm9Db3VudChVSU5UKiBjb3VudCkKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgR2V0VHlwZUluZm9Db3VudChfT3V0XyBVSU5UKiBjb3VudCkKICAgICB7CisgICAg
ICAgIGlmICghY291bnQpCisgICAgICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICAgICAq
Y291bnQgPSAwOwogICAgICAgICByZXR1cm4gRV9OT1RJTVBMOwogICAgIH0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0VHlwZUluZm8oVUlOVCwgTENJRCwgSVR5cGVJ
bmZvKiogcHBUSW5mbykKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0
VHlwZUluZm8oVUlOVCwgTENJRCwgX19kZXJlZl9vdXRfb3B0IElUeXBlSW5mbyoqIHBwVEluZm8p
CiAgICAgewotICAgICAgICAqcHBUSW5mbyA9IDA7CisgICAgICAgIGlmICghcHBUSW5mbykKKyAg
ICAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgICAgICpwcFRJbmZvID0gbnVsbHB0cjsK
ICAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsKICAgICB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIEdldElEc09mTmFtZXMoUkVGSUlELCBMUE9MRVNUUiosIFVJTlQsIExD
SUQsIERJU1BJRCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBHZXRJRHNPZk5hbWVzKF9Jbl8gUkVGSUlELCBMUE9MRVNUUiosIFVJ
TlQsIExDSUQsIERJU1BJRCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBJbnZva2UoRElTUElELCBSRUZJSUQsIExDSUQsIFdPUkQs
IERJU1BQQVJBTVMqLCBWQVJJQU5UKiwgRVhDRVBJTkZPKiwgVUlOVCopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQogCiAgICAgLy8gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCkgeworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKQorICAg
IHsKICAgICAgICAgQVNTRVJUKG1fb2JqZWN0KTsKLSAgICAgICAgbV9vYmplY3QgPSAwOworICAg
ICAgICBtX29iamVjdCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gSUFjY2Vzc2libGVDb21w
YXJhYmxlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU9iamVj
dChJQWNjZXNzaWJsZUNvbXBhcmFibGUqIG90aGVyLCBCT09MKiByZXN1bHQpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVPYmplY3QoX0luX29wdF8gSUFjY2Vz
c2libGVDb21wYXJhYmxlKiBvdGhlciwgX091dF8gQk9PTCogcmVzdWx0KTsKIAogcHJvdGVjdGVk
OgogICAgIEFjY2Vzc2libGVCYXNlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBIV05E
KTsKQEAgLTEzNyw3ICsxNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJsZUJhc2UqIHdy
YXBwZXIoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopIGNvbnN0OwogCiAgICAgSFdORCBt
X3dpbmRvdzsKLSAgICBpbnQgbV9yZWZDb3VudDsKKyAgICBpbnQgbV9yZWZDb3VudCB7IDAgfTsK
IAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmxlQmFzZSgpIHsgfQpJbmRleDogU291cmNlL1dlYktp
dC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nzgs
OCArNjc4LDEwIEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF9hdHRyaWJ1dGVzKEIKIH0K
IAogLy8gSVVua25vd24KLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZVRleHQ6
OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBB
Y2Nlc3NpYmxlVGV4dDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIF9fdXVpZG9mKElBY2Nl
c3NpYmxlVGV4dCkpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SUFjY2Vzc2li
bGVUZXh0Kj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgX191dWlkb2Yo
SUFjY2Vzc2libGVFZGl0YWJsZVRleHQpKSkKQEAgLTcwMSw3ICs3MDMsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVUZXh0CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQo
cmlpZCwgX191dWlkb2YoQWNjZXNzaWJsZUJhc2UpKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0
YXRpY19jYXN0PEFjY2Vzc2libGVCYXNlKj4odGhpcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgICpw
cHZPYmplY3QgPSAwOworICAgICAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0
dXJuIEVfTk9JTlRFUkZBQ0U7CiAgICAgfQogICAgIEFkZFJlZigpOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2
OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
QXR0cmlidXRlcyhsb25nIHN0YXJ0T2Zmc2V0LCBsb25nIGVuZE9mZnNldCwgQlNUUiogYXR0cmli
dXRlcyk7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0g
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4g
KyttX3JlZkNvdW50OyB9Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxl
YXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSB7IHJldHVybiAr
K21fcmVmQ291bnQ7IH0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVh
c2UoKTsKIAogICAgIC8vIElBY2Nlc3NpYmxlQmFzZQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBnZXRfYXR0cmlidXRlcyhCU1RSKiBhdHRyaWJ1dGVzKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAJKHJldmlzaW9u
IDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDYgQEAKIC8vIENGRGljdGlv
bmFyeVByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
ZygpCi0gICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CkBAIC02MSw5ICs2
MCwxMSBAQCBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIENGRGljdGlvbmFyeVByb3BlCiAKIC8vIElV
bmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmpl
Y3QpCitIUkVTVUxUIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2
T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwg
SUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElQcm9wZXJ0
eUJhZyo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JUHJvcGVy
dHlCYWcpKQpAQCAtNzcsNyArNzgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENGRGlj
dGlvbmFyeVByCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBF
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpBZGRSZWYodm9pZCkKK1VMT05HIFNURE1FVEhPRENB
TExUWVBFIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpBZGRSZWYoKQogewogICAgIHJldHVybiAr
K21fcmVmQ291bnQ7CiB9CkBAIC0xNzIsNyArMTczLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBDRkRpY3Rpb25hcnlQcgogICAgIHJldHVybiBFX0ZBSUw7CiB9CiAgICAgICAgIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3JpdGUoTFBD
T0xFU1RSIHBzelByb3BOYW1lLCBWQVJJQU5UKiBwVmFyKQorSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3JpdGUoX0luXyBMUENPTEVTVFIgcHN6UHJv
cE5hbWUsIF9Jbl8gVkFSSUFOVCogcFZhcikKIHsKICAgICBpZiAoIXBzelByb3BOYW1lIHx8ICFw
VmFyKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MDksIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMTQgKzQ3LDE0IEBAIHByaXZhdGU6CiAgICAgQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcoKTsKICAgICB+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKTsKIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJ
SUQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpOwogCiAgICAgLy8gSVByb3BlcnR5QmFnCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFJlYWQoTFBDT0xFU1RSIHBzelByb3BOYW1lLCBWQVJJQU5UKiwgSUVycm9y
TG9nKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdyaXRlKExQQ09M
RVNUUiBwc3pQcm9wTmFtZSwgVkFSSUFOVCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXcml0ZShfSW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0luXyAgVkFSSUFO
VCopOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fZGljdGlvbmFy
eTsKLSAgICBVTE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9
OwogCiAjZW5kaWYgLy8gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWdfaApJbmRleDogU291cmNlL1dl
YktpdC93aW4vQ09NRW51bVZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9DT01FbnVtVmFyaWFudC5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DT01FbnVtVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ09NRW51bVZhcmlhbnQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IENvbnRh
aW5lclR5cGUmKTsKIAogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwogICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CiAgICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKQEAgLTUwLDI0ICs1MCwyMiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE5leHQoVUxPTkcgY2Vs
dCwgVkFSSUFOVCogcmdWYXIsIFVMT05HKiBwQ2VsdEZldGNoZWQpOwogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBTa2lwKFVMT05HIGNlbHQpOwogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXNldCgpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBDbG9uZShJRW51bVZBUklBTlQqKiBwcEVudW0pOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl9vcHRfIElFbnVtVkFS
SUFOVCoqIHBwRW51bSk7CiAKIHByaXZhdGU6CiAgICAgQ09NRW51bVZhcmlhbnQoKQotICAgICAg
ICA6IG1fcmVmQ291bnQoMCkKICAgICB7CiAgICAgfQogCiAgICAgQ09NRW51bVZhcmlhbnQoY29u
c3QgQ29udGFpbmVyVHlwZSYgY29udGFpbmVyKQotICAgICAgICA6IG1fcmVmQ291bnQoMCkKLSAg
ICAgICAgLCBtX2NvbnRhaW5lcihjb250YWluZXIpICAgICAgIAorICAgICAgICA6IG1fY29udGFp
bmVyKGNvbnRhaW5lcikgICAgICAgCiAgICAgICAgICwgbV9jdXJyZW50UG9zKG1fY29udGFpbmVy
LmJlZ2luKCkpCiAgICAgewogICAgIH0KIAogICAgIH5DT01FbnVtVmFyaWFudCgpIHt9CiAKLSAg
ICBVTE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAKICAgICBD
b250YWluZXJUeXBlIG1fY29udGFpbmVyOwogICAgIHR5cGVuYW1lIENvbnRhaW5lclR5cGU6OmNv
bnN0X2l0ZXJhdG9yIG1fY3VycmVudFBvczsKQEAgLTk0LDkgKzkyLDExIEBAIENPTUVudW1WYXJp
YW50PHR5cGVuYW1lIENvbnRhaW5lclR5cGU+KgogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+Ci1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIENPTUVudW1WYXJpYW50PENvbnRhaW5lclR5cGU+OjpRdWVyeUludGVyZmFjZShSRUZJ
SUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09N
RW51bVZhcmlhbnQ8Q29udGFpbmVyVHlwZT46OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAw
OworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpw
cHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25v
d24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8Q09NRW51bVZhcmlhbnQqPih0
aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSUVudW1WQVJJQU5UKSkK
QEAgLTE2OCwxMiArMTY4LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09NRW51bVZh
cmlhbnQKIH0KICAgICAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+Ci1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIENPTUVudW1WYXJpYW50PENvbnRhaW5lclR5cGU+OjpDbG9uZShJ
RW51bVZBUklBTlQqKiBwcEVudW0pCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTUVudW1W
YXJpYW50PENvbnRhaW5lclR5cGU+OjpDbG9uZShfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFO
VCoqIHBwRW51bSkKIHsKICAgICBpZiAoIXBwRW51bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKIAotICAgICpwcEVudW0gPSAwOworICAgICpwcEVudW0gPSBudWxscHRyOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NPTVByb3BlcnR5QmFn
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaAkocmV2
aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE1
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDcsMzYgKzQ3LDM0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ09NUHJvcGVy
dHlCYWcqIGFkb3B0KEhhc2hNYXBUeXBlJik7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwg
dm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2
T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOwog
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8g
SVByb3BlcnR5QmFnCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlYWQo
TFBDT0xFU1RSIHBzelByb3BOYW1lLCBWQVJJQU5UKiwgSUVycm9yTG9nKik7Ci0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdyaXRlKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwg
VkFSSUFOVCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXcml0ZShf
SW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0luXyBWQVJJQU5UKik7CiAKICAgICAvLyBJUHJv
cGVydHlCYWcyCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlYWQoVUxP
TkcgY1Byb3BlcnRpZXMsIFBST1BCQUcyKiwgSUVycm9yTG9nKiwgVkFSSUFOVCogcHZhclZhbHVl
LCBIUkVTVUxUKiBwaHJFcnJvcik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdyaXRlKFVMT05HIGNQcm9wZXJ0aWVzLCBQUk9QQkFHMiosIFZBUklBTlQqKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ291bnRQcm9wZXJ0aWVzKFVMT05HKiBw
Y1Byb3BlcnRpZXMpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBHZXRQ
cm9wZXJ0eUluZm8oVUxPTkcgaVByb3BlcnR5LCBVTE9ORyBjUHJvcGVydGllcywgUFJPUEJBRzIq
IHBQcm9wQmFnLCBVTE9ORyogcGNQcm9wZXJ0aWVzKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgTG9hZE9iamVjdChMUENPTEVTVFIgcHN0ck5hbWUsIERXT1JEIGR3SGlu
dCwgSVVua25vd24qLCBJRXJyb3JMb2cqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUmVhZChVTE9ORyBjUHJvcGVydGllcywgX19pbm91dF9lY291bnRfZnVsbChjUHJv
cGVydGllcykgUFJPUEJBRzIqLCBfSW5fb3B0XyBJRXJyb3JMb2cqLCBfX291dF9lY291bnRfZnVs
bChjUHJvcGVydGllcykgVkFSSUFOVCosIF9faW5vdXRfZWNvdW50X2Z1bGxfb3B0KGNQcm9wZXJ0
aWVzKSBIUkVTVUxUKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdy
aXRlKFVMT05HIGNQcm9wZXJ0aWVzLCBfX2lub3V0X2Vjb3VudF9mdWxsKGNQcm9wZXJ0aWVzKSBQ
Uk9QQkFHMiosIF9faW5vdXRfZWNvdW50X2Z1bGwoY1Byb3BlcnRpZXMpIFZBUklBTlQqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ291bnRQcm9wZXJ0aWVzKF9PdXRf
IFVMT05HKiBwY1Byb3BlcnRpZXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBHZXRQcm9wZXJ0eUluZm8oVUxPTkcgaVByb3BlcnR5LCBVTE9ORyBjUHJvcGVydGllcywg
X19vdXRfZWNvdW50X2Z1bGwoY1Byb3BlcnRpZXMpIFBST1BCQUcyKiwgX091dF8gVUxPTkcqIHBj
UHJvcGVydGllcyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIExvYWRP
YmplY3QoX0luXyBMUENPTEVTVFIgcHN0ck5hbWUsIERXT1JEIGR3SGludCwgX0luX29wdF8gSVVu
a25vd24qLCBfSW5fb3B0XyBJRXJyb3JMb2cqKTsKIAogcHJpdmF0ZToKICAgICBDT01Qcm9wZXJ0
eUJhZygpCi0gICAgICAgIDogbV9yZWZDb3VudCgwKQogICAgIHsKICAgICB9CiAKICAgICBDT01Q
cm9wZXJ0eUJhZyhjb25zdCBIYXNoTWFwVHlwZSYgaGFzaE1hcCkKLSAgICAgICAgOiBtX3JlZkNv
dW50KDApCi0gICAgICAgICwgbV9oYXNoTWFwKGhhc2hNYXApCisgICAgICAgIDogbV9oYXNoTWFw
KGhhc2hNYXApCiAgICAgewogICAgIH0KIAogICAgIH5DT01Qcm9wZXJ0eUJhZygpIHt9CiAKLSAg
ICBVTE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgSGFz
aE1hcFR5cGUgbV9oYXNoTWFwOwogfTsKIApAQCAtMTAwLDkgKzk4LDExIEBAIENPTVByb3BlcnR5
QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFQKIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVu
YW1lIEhhc2hUeXBlPgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxW
YWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQs
IHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5
QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2Jq
ZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlE
X0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElQcm9wZXJ0eUJh
Zyo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JUHJvcGVydHlC
YWcpKQpAQCAtMTU2LDEzICsxNTYsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Q
cm9wZXJ0eUJhZwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtl
eVR5cGUsIHR5cGVuYW1lIEhhc2hUeXBlPgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Q
cm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6V3JpdGUoTFBDT0xFU1RS
IHBzelByb3BOYW1lLCBWQVJJQU5UKiBwVmFyKQorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBD
T01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6V3JpdGUoX0luXyBM
UENPTEVTVFIgcHN6UHJvcE5hbWUsIF9Jbl8gVkFSSUFOVCogcFZhcikKIHsKICAgICByZXR1cm4g
RV9GQUlMOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtleVR5
cGUsIHR5cGVuYW1lIEhhc2hUeXBlPgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9w
ZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6UmVhZChVTE9ORyBjUHJvcGVy
dGllcywgUFJPUEJBRzIqIHBQcm9wQmFnLCBJRXJyb3JMb2cqIHBFcnJvckxvZywgVkFSSUFOVCog
cHZhclZhbHVlLCBIUkVTVUxUKiBwaHJFcnJvcikKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Q09NUHJvcGVydHlCYWc8VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNoVHlwZT46OlJlYWQoVUxPTkcg
Y1Byb3BlcnRpZXMsIF9faW5vdXRfZWNvdW50X2Z1bGwoY1Byb3BlcnRpZXMpIFBST1BCQUcyKiBw
UHJvcEJhZywgX0luX29wdF8gSUVycm9yTG9nKiBwRXJyb3JMb2csIF9fb3V0X2Vjb3VudF9mdWxs
KGNQcm9wZXJ0aWVzKSBWQVJJQU5UKiBwdmFyVmFsdWUsIF9faW5vdXRfZWNvdW50X2Z1bGxfb3B0
KGNQcm9wZXJ0aWVzKSBIUkVTVUxUKiBwaHJFcnJvcikKIHsKICAgICBpZiAoIXBQcm9wQmFnIHx8
ICFwdmFyVmFsdWUgfHwgIXBockVycm9yKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAt
MTgxLDEzICsxODEsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJh
ZwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIEhhc2hUeXBlPgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJh
ZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6V3JpdGUoVUxPTkcgY1Byb3BlcnRpZXMs
IFBST1BCQUcyKiwgVkFSSUFOVCopCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3Bl
cnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpXcml0ZShVTE9ORyBjUHJvcGVy
dGllcywgX19pbm91dF9lY291bnRfZnVsbChjUHJvcGVydGllcykgUFJPUEJBRzIqLCBfX2lub3V0
X2Vjb3VudF9mdWxsKGNQcm9wZXJ0aWVzKSBWQVJJQU5UKikKIHsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUs
IHR5cGVuYW1lIEhhc2hUeXBlPgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0
eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6Q291bnRQcm9wZXJ0aWVzKFVMT05H
KiBwY1Byb3BlcnRpZXMpCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFn
PFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpDb3VudFByb3BlcnRpZXMoX091dF8gVUxP
TkcqIHBjUHJvcGVydGllcykKIHsKICAgICBpZiAoIXBjUHJvcGVydGllcykKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKQEAgLTE5NywxMSArMTk3LDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQ09NUHJvcGVydHlCYWcKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0
eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBIYXNoVHlwZT4KLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQ09NUHJvcGVydHlCYWc8VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNoVHlwZT46OkdldFBy
b3BlcnR5SW5mbyhVTE9ORyBpUHJvcGVydHksIFVMT05HIGNQcm9wZXJ0aWVzLCBQUk9QQkFHMiog
cFByb3BCYWcsIFVMT05HKiBwY1Byb3BlcnRpZXMpCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IENPTVByb3BlcnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpHZXRQcm9wZXJ0
eUluZm8oVUxPTkcgaVByb3BlcnR5LCBVTE9ORyBjUHJvcGVydGllcywgX19vdXRfZWNvdW50X2Z1
bGwoY1Byb3BlcnRpZXMpIFBST1BCQUcyKiBwUHJvcEJhZywgX091dF8gVUxPTkcqIHBjUHJvcGVy
dGllcykKIHsKICAgICBpZiAoIXBQcm9wQmFnIHx8ICFwY1Byb3BlcnRpZXMpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKKyAgICAqcFByb3BCYWcgPSBudWxscHRyOworICAgICpwY1Byb3Bl
cnRpZXMgPSAwOworCiAgICAgaWYgKG1faGFzaE1hcC5zaXplKCkgPD0gaVByb3BlcnR5KQogICAg
ICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwogCkBAIC0yMjksNyArMjMyLDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIEhhc2hUeXBlPgotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hU
eXBlPjo6TG9hZE9iamVjdChMUENPTEVTVFIgcHN0ck5hbWUsIERXT1JEIGR3SGludCwgSVVua25v
d24qLCBJRXJyb3JMb2cqKQorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJh
ZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6TG9hZE9iamVjdChfSW5fIExQQ09MRVNU
UiBwc3RyTmFtZSwgRFdPUkQgZHdIaW50LCBfSW5fb3B0XyBJVW5rbm93biosIF9Jbl9vcHRfIElF
cnJvckxvZyopCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0RPTUNTU0NsYXNzZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L0RPTUNTU0NsYXNzZXMuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9ET01DU1NDbGFzc2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMy
LDYgQEAKIC8vIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gLSBET01DU1NTdHlsZURlY2xhcmF0aW9u
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbihXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKiBzKQot
OiBtX3N0eWxlKDApCiB7CiAgICAgaWYgKHMpCiAgICAgICAgIHMtPnJlZigpOwpAQCAtNDksNyAr
NDgsNyBAQCBET01DU1NTdHlsZURlY2xhcmF0aW9uOjp+RE9NQ1NTU3R5bGVEZWNsCiBJRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlSW5zdGFuY2Uo
V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogcykKIHsKICAgICBpZiAoIXMpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEhSRVNVTFQgaHI7CiAg
ICAgSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qIGRvbVN0eWxlID0gMDsKQEAgLTU4LDE2ICs1Nywx
OCBAQCBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogRE9NQ1NTU3R5bGVEZWNsCiAgICAgaHIgPSBu
ZXdTdHlsZS0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01DU1NTdHlsZURlY2xhcmF0aW9uLCAodm9p
ZCoqKSZkb21TdHlsZSk7CiAKICAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRvbVN0eWxlOwogfQogCiAv
LyBET01DU1NTdHlsZURlY2xhcmF0aW9uIC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZP
YmplY3QpCitIUkVTVUxUIERPTUNTU1N0eWxlRGVjbGFyYXRpb246OlF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpw
cHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlk
LCBJSURfSURPTUNTU1N0eWxlRGVjbGFyYXRpb24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SURPTUNTU1N0eWxlRGVjbGFyYXRpb24qPih0aGlzKTsKICAgICBlbHNlCkBAIC03
OSwxNSArODAsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlYwog
CiAvLyBET01DU1NTdHlsZURlY2xhcmF0aW9uIC0gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGV4dCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0
KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJl
c3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KCAKLSAgICAv
KiBbaW5dICovIEJTVFIgY3NzVGV4dCkKK0hSRVNVTFQgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0Q3NzVGV4dChfSW5fIEJTVFIgY3NzVGV4dCkKIHsKICAgICBXVEY6OlN0cmluZyBjc3NUZXh0
U3RyaW5nKGNzc1RleHQpOwogICAgIC8vIEZJWE1FOiA8cmRhcjovLzUxNDgwNDU+IHJldHVybiBE
T00gZXhjZXB0aW9uIGluZm8KQEAgLTk2LDEwICs5OCwxMiBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUNTU1N0eWxlRGVjCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSgg
Ci0gICAgLyogW2luXSAqLyBCU1RSIHByb3BlcnR5TmFtZSwKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlWYWx1ZShfSW5fIEJTVFIgcHJvcGVydHlOYW1lLCBfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
ICAgICpyZXN1bHQgPSBudWxscHRyOworCiAgICAgV1RGOjpTdHJpbmcgcHJvcGVydHlOYW1lU3Ry
aW5nKHByb3BlcnR5TmFtZSk7CiAgICAgV1RGOjpTdHJpbmcgdmFsdWUgPSBtX3N0eWxlLT5nZXRQ
cm9wZXJ0eVZhbHVlKHByb3BlcnR5TmFtZVN0cmluZyk7CiAgICAgKnJlc3VsdCA9IFdlYkNvcmU6
OkJTdHJpbmcodmFsdWUpLnJlbGVhc2UoKTsKQEAgLTEwOCwzNCArMTEyLDM0IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NQ1NTU3R5bGVEZWMKICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypwcm9wZXJ0eU5hbWUqLywKLSAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01DU1NWYWx1ZSoqIC8qcmVzdWx0Ki8pCitIUkVTVUxU
IERPTUNTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoX0luXyBCU1RSIC8q
cHJvcGVydHlOYW1lKi8sIF9DT01fT3V0cHRyX29wdF8gSURPTUNTU1ZhbHVlKiogcmVzdWx0KQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05P
VElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6cmVtb3ZlUHJvcGVydHkoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKnByb3BlcnR5TmFt
ZSovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQg
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoX0luXyBCU1RSIC8qcHJvcGVy
dHlOYW1lKi8sIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eVByaW9yaXR5KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypwcm9wZXJ0eU5hbWUqLywKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUNTU1N0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3JpdHkoX0luXyBCU1RSIC8qcHJvcGVydHlOYW1l
Ki8sIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAg
KnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSggCi0g
ICAgLyogW2luXSAqLyBCU1RSIHByb3BlcnR5TmFtZSwKLSAgICAvKiBbaW5dICovIEJTVFIgdmFs
dWUsCi0gICAgLyogW2luXSAqLyBCU1RSIHByaW9yaXR5KQorSFJFU1VMVCBET01DU1NTdHlsZURl
Y2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShfSW5fIEJTVFIgcHJvcGVydHlOYW1lLCBfSW5fIEJTVFIg
dmFsdWUsIF9Jbl8gQlNUUiBwcmlvcml0eSkKIHsKICAgICBXVEY6OlN0cmluZyBwcm9wZXJ0eU5h
bWVTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBXVEY6OlN0cmluZyB2YWx1ZVN0cmluZyh2YWx1
ZSk7CkBAIC0xNDYsMjQgKzE1MCwyOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNT
U1N0eWxlRGVjCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFVJTlQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUNTU1N0eWxlRGVjbGFyYXRpb246Omxl
bmd0aChfT3V0XyBVSU5UKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9
IDA7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjppdGVtKCAKLSAgICAvKiBbaW5dICovIFVJTlQgLypp
bmRleCovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNV
TFQgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6aXRlbShVSU5UIC8qaW5kZXgqLywgX19kZXJlZl9v
cHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUNTU1N0eWxlRGVjbGFyYXRpb246OnBhcmVudFJ1bGUoIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTUNTU1J1bGUqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01DU1NTdHlsZURl
Y2xhcmF0aW9uOjpwYXJlbnRSdWxlKF9DT01fT3V0cHRyX29wdF8gSURPTUNTU1J1bGUqKiByZXN1
bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RPTUNTU0NsYXNzZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmgJKHJldmlzaW9u
IDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNTU0NsYXNzZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3
LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDgzICs0Miw2NiBAQCBwdWJsaWM6CiAKIHB1YmxpYzoKICAg
ICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NT2JqZWN0OjpB
ZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSB7IHJldHVybiBE
T01PYmplY3Q6OkFkZFJlZigpOyB9CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6UmVsZWFzZSgpOyB9CiAKICAgICAv
LyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHRocm93RXhjZXB0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3Nh
Z2UsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBE
T01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1l
dGhvZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6ZV9p
c11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50
IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2
YWx1YXRlV2ViU2NyaXB0KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU9iamVj
dDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlw
dEtleShuYW1lKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdHJpbmdSZXByZXNlbnRhdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
Uiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVz
ZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8q
IFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5k
ZXgoaW5kZXgsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1
bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0
dXJuIERPTU9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbigg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NT2JqZWN0
OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNUUiBleGNlcHRpb25NZXNzYWdlLCBf
T3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojp0aHJv
d0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZChfSW5f
IEJTVFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJQU5UIGFyZ3NbXSwg
aW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZh
bHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNUUiBuYW1lKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRp
b24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVz
ZW50YXRpb24pOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBfT3V0XyBWQVJJQU5U
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5k
ZXgsIFZBUklBTlQgdmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6c2V0V2Vi
U2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlw
dGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnNldEV4Y2VwdGlvbihkZXNj
cmlwdGlvbik7CisgICAgfQogCiAgICAgLy8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3NzVGV4dCggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Q3NzVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBj
c3NUZXh0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0
UHJvcGVydHlWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwcm9wZXJ0eU5hbWUsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0UHJvcGVydHlDU1NWYWx1ZSggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUNTU1ZhbHVlICoqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlUHJvcGVydHkoIAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgcHJvcGVydHlOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldFByb3Bl
cnR5UHJpb3JpdHkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJvcGVydHlOYW1lLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByb3BlcnR5KCAKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIHByb3BlcnR5TmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlLAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJpb3JpdHkpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsZW5ndGgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFVJTlQgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGl0ZW0oIAotICAgICAgICAvKiBbaW5dICovIFVJTlQgaW5kZXgsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50UnVsZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUNTU1J1bGUgKipyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjc3NUZXh0KF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENzc1RleHQoX0luXyBCU1RSKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0UHJvcGVydHlWYWx1ZShfSW5fIEJTVFIg
cHJvcGVydHlOYW1lLCBfX2RlcmVmX29wdF9vdXQgQlNUUiAqcmVzdWx0KTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0UHJvcGVydHlDU1NWYWx1ZShfSW5fIEJTVFIg
cHJvcGVydHlOYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01DU1NWYWx1ZSAqKnJlc3VsdCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVByb3BlcnR5KF9Jbl8g
QlNUUiBwcm9wZXJ0eU5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSICpyZXN1bHQpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRQcm9wZXJ0eVByaW9yaXR5KF9Jbl8g
QlNUUiBwcm9wZXJ0eU5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSICpyZXN1bHQpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcm9wZXJ0eShfSW5fIEJTVFIgcHJv
cGVydHlOYW1lLCBfSW5fIEJTVFIgdmFsdWUsIF9Jbl8gQlNUUiBwcmlvcml0eSk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxlbmd0aChfT3V0XyBVSU5UKiByZXN1bHQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpdGVtKFVJTlQgaW5kZXgs
IF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBwYXJlbnRSdWxlKF9DT01fT3V0cHRyX29wdF8gSURPTUNTU1J1bGUqICpy
ZXN1bHQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKLSAgICBXZWJDb3Jl
OjpDU1NTdHlsZURlY2xhcmF0aW9uKiBtX3N0eWxlOworICAgIFVMT05HIG1fcmVmQ291bnQgeyAw
IH07CisgICAgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogbV9zdHlsZSB7IG51bGxwdHIg
fTsKIH07CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAko
cmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOSwgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAwOSwgMjAxNC0yMDE1IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcxLDkgKzcxLDExIEBAIHVzaW5nIFdURjo6U3RyaW5nOwogCiAvLyBET01PYmplY3QgLSBJVW5r
bm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NT2JqZWN0OjpRdWVyeUludGVyZmFj
ZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NT2JqZWN0OjpRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNF
cXVhbEdVSUQocmlpZCwgSUlEX0lET01PYmplY3QpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SURPTU9iamVjdCo+KHRoaXMpOwogICAgIGVsc2UKQEAgLTg1LDkgKzg3LDExIEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NT2JqZWN0OjpRdWUKIAogLy8gRE9NTm9kZSAt
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OlF1ZXJ5SW50
ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01Ob2RlOjpR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAo
SXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01Ob2RlKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0
YXRpY19jYXN0PElET01Ob2RlKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlp
ZCwgX191dWlkb2YoRE9NTm9kZSkpKQpAQCAtMTAzLDEyICsxMDcsMTEgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01Ob2RlOjpRdWVyeQogCiAvLyBET01Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6bm9kZU5hbWUoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBET01Ob2RlOjpub2RlTmFtZShf
X2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwotCisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgaWYgKCFt
X25vZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTExNiw5ICsxMTksMTEgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpub2RlTgogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6Om5vZGVWYWx1ZSggCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIERPTU5vZGU6Om5vZGVW
YWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIGlm
ICghbV9ub2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIFdURjo6U3RyaW5nIG5vZGVW
YWx1ZVN0ciA9IG1fbm9kZS0+bm9kZVZhbHVlKCk7CkBAIC0xMjgsMzMgKzEzMywzNCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6Om5vZGVWCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6c2V0Tm9kZVZhbHVlKCAKLSAg
ICAvKiBbaW5dICovIEJTVFIgLyp2YWx1ZSovKQorSFJFU1VMVCBET01Ob2RlOjpzZXROb2RlVmFs
dWUoX0luXyBCU1RSIC8qdmFsdWUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5v
ZGU6Om5vZGVUeXBlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0KiAv
KnJlc3VsdCovKQorSFJFU1VMVCBET01Ob2RlOjpub2RlVHlwZShfT3V0XyB1bnNpZ25lZCBzaG9y
dCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OnBhcmVu
dE5vZGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpCitIUkVT
VUxUIERPTU5vZGU6OnBhcmVudE5vZGUoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3Vs
dCkKIHsKLSAgICAqcmVzdWx0ID0gMDsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBpZiAoIW1fbm9kZSB8fCAh
bV9ub2RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgKnJlc3Vs
dCA9IERPTU5vZGU6OmNyZWF0ZUluc3RhbmNlKG1fbm9kZS0+cGFyZW50Tm9kZSgpKTsKICAgICBy
ZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NTm9kZTo6Y2hpbGROb2RlcyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZUxpc3QqKiByZXN1bHQpCitIUkVTVUxUIERPTU5vZGU6OmNoaWxkTm9kZXMoX0NPTV9PdXRw
dHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgaWYgKCFt
X25vZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTE2NSw2NyArMTcxLDcwIEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6Y2hpbGQKICAgICByZXR1cm4gKnJlc3Vs
dCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9k
ZTo6Zmlyc3RDaGlsZCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIC8qcmVz
dWx0Ki8pCitIUkVTVUxUIERPTU5vZGU6OmZpcnN0Q2hpbGQoX0NPTV9PdXRwdHJfb3B0XyBJRE9N
Tm9kZSoqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TU5vZGU6Omxhc3RDaGlsZCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIC8q
cmVzdWx0Ki8pCitIUkVTVUxUIERPTU5vZGU6Omxhc3RDaGlsZChfQ09NX091dHB0cl9vcHRfIElE
T01Ob2RlKiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICgh
cmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRy
OwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NTm9kZTo6cHJldmlvdXNTaWJsaW5nKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlKiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTm9kZTo6cHJldmlvdXNTaWJsaW5nKF9DT01f
T3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJl
c3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01Ob2RlOjpuZXh0U2libGluZyggCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkKK0hSRVNVTFQgRE9NTm9kZTo6bmV4dFNpYmxpbmcoX0NP
TV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqcmVzdWx0ID0gMDsKKyAgICAqcmVzdWx0ID0g
bnVsbHB0cjsKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICAq
cmVzdWx0ID0gRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobV9ub2RlLT5uZXh0U2libGluZygpKTsK
ICAgICByZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NTm9kZTo6YXR0cmlidXRlcyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTmFtZWROb2RlTWFwKiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTm9kZTo6YXR0cmli
dXRlcyhfQ09NX091dHB0cl9vcHRfIElET01OYW1lZE5vZGVNYXAqKiByZXN1bHQpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpvd25lckRvY3VtZW50KCAK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCoqIHJlc3VsdCkKK0hSRVNVTFQg
RE9NTm9kZTo6b3duZXJEb2N1bWVudChfQ09NX091dHB0cl9vcHRfIElET01Eb2N1bWVudCoqIHJl
c3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAg
ICAqcmVzdWx0ID0gMDsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBpZiAoIW1fbm9kZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICAqcmVzdWx0ID0gRE9NRG9jdW1lbnQ6OmNyZWF0
ZUluc3RhbmNlKG1fbm9kZS0+b3duZXJEb2N1bWVudCgpKTsKICAgICByZXR1cm4gKnJlc3VsdCA/
IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6
aW5zZXJ0QmVmb3JlKCAKLSAgICAvKiBbaW5dICovIElET01Ob2RlKiBuZXdDaGlsZCwKLSAgICAv
KiBbaW5dICovIElET01Ob2RlKiByZWZDaGlsZCwKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlKiogcmVzdWx0KQorSFJFU1VMVCBET01Ob2RlOjppbnNlcnRCZWZvcmUoX0luX29wdF8g
SURPTU5vZGUqIG5ld0NoaWxkLCBfSW5fb3B0XyBJRE9NTm9kZSogcmVmQ2hpbGQsIF9DT01fT3V0
cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gMDsKKyAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKIAogICAgIGlmICghbV9ub2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMjQ1
LDIzICsyNTQsMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjppbnNlcgog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6
OnJlcGxhY2VDaGlsZCggCi0gICAgLyogW2luXSAqLyBJRE9NTm9kZSogLypuZXdDaGlsZCovLAot
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIC8qb2xkQ2hpbGQqLywKLSAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlKiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTm9kZTo6cmVwbGFjZUNo
aWxkKF9Jbl9vcHRfIElET01Ob2RlKiAvKm5ld0NoaWxkKi8sIF9Jbl9vcHRfIElET01Ob2RlKiAv
Km9sZENoaWxkKi8sIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpyZW1vdmVDaGlsZCggCi0g
ICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSoqIHJlc3VsdCkKK0hSRVNVTFQgRE9NTm9kZTo6cmVtb3ZlQ2hpbGQoX0luX29w
dF8gSURPTU5vZGUqIG9sZENoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0
KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAg
KnJlc3VsdCA9IDA7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbm9kZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTI3OSw4MiArMjg2LDgyIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6cmVtb3YKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjphcHBlbmRDaGlsZCggCi0gICAgLyogW2lu
XSAqLyBJRE9NTm9kZSogLypvbGRDaGlsZCovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TU5vZGUqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01Ob2RlOjphcHBlbmRDaGlsZChfSW5fb3B0
XyBJRE9NTm9kZSogLypvbGRDaGlsZCovLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVz
dWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6aGFz
Q2hpbGROb2RlcyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQor
SFJFU1VMVCBET01Ob2RlOjpoYXNDaGlsZE5vZGVzKF9PdXRfIEJPT0wqIC8qcmVzdWx0Ki8pCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpjbG9uZU5vZGUoIAotICAgIC8qIFtp
bl0gKi8gQk9PTCAvKmRlZXAqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiog
LypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTm9kZTo6Y2xvbmVOb2RlKEJPT0wgLypkZWVwKi8sIF9D
T01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAg
KnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpub3JtYWxpemUoIHZvaWQpCitIUkVTVUxUIERPTU5v
ZGU6Om5vcm1hbGl6ZSgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjppc1N1
cHBvcnRlZCggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qZmVhdHVyZSovLAotICAgIC8qIFtpbl0g
Ki8gQlNUUiAvKnZlcnNpb24qLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIC8qcmVz
dWx0Ki8pCitIUkVTVUxUIERPTU5vZGU6OmlzU3VwcG9ydGVkKF9Jbl8gQlNUUiAvKmZlYXR1cmUq
LywgX0luXyBCU1RSIC8qdmVyc2lvbiovLCBfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6bmFtZXNwYWNlVVJJKCAKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU5vZGU6Om5hbWVzcGFj
ZVVSSShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6cHJlZml4KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU5vZGU6OnByZWZpeChfX2RlcmVmX29w
dF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxs
cHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NTm9kZTo6c2V0UHJlZml4KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypwcmVmaXgqLykK
K0hSRVNVTFQgRE9NTm9kZTo6c2V0UHJlZml4KF9Jbl8gQlNUUiAvKnByZWZpeCovKQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6bG9jYWxOYW1lKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU5vZGU6OmxvY2FsTmFtZShf
X2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1
bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NTm9kZTo6aGFzQXR0cmlidXRlcyggCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01Ob2RlOjpoYXNBdHRyaWJ1dGVzKF9P
dXRfIEJPT0wqIC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2Rl
Ojppc1NhbWVOb2RlKCAKLSAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRE9NTm9kZTo6aXNTYW1lTm9k
ZShfSW5fb3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM3NSwxNiAr
MzgyLDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6aXNTYW0KICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjppc0Vx
dWFsTm9kZSggCi0gICAgLyogW2luXSAqLyBJRE9NTm9kZSogLypvdGhlciovLAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTm9kZTo6aXNFcXVh
bE5vZGUoX0luX29wdF8gSURPTU5vZGUqIC8qb3RoZXIqLywgX091dF8gQk9PTCogLypyZXN1bHQq
LykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OnRleHRDb250ZW50KCAKLSAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgRE9NTm9kZTo6dGV4
dENvbnRlbnQoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTM5NCw4ICszOTgsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OnRleHRDCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoIAotICAg
IC8qIFtpbl0gKi8gQlNUUiAvKnRleHQqLykKK0hSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRl
bnQoX0luXyBCU1RSIC8qdGV4dCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBFX05PVElNUEw7CkBAIC00MDMsMTAgKzQwNiw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NTm9kZTo6c2V0VGUKIAogLy8gRE9NTm9kZSAtIElET01FdmVudFRhcmdldCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVT
VUxUIERPTU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoCi0gICAgLyogW2luXSAqLyBCU1RSIHR5cGUs
Ci0gICAgLyogW2luXSAqLyBJRE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsCi0gICAgLyogW2lu
XSAqLyBCT09MIHVzZUNhcHR1cmUpCitIUkVTVUxUIERPTU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIo
X0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgQk9P
TCB1c2VDYXB0dXJlKQogewogICAgIFJlZlB0cjxXZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0ZW5l
ciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7CiAgICAgbV9ub2RlLT5hZGRF
dmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKQEAgLTQxNCwxMCAr
NDE0LDcgQEAgSFJFU1VMVCBET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKAogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoCi0gICAgLyog
W2luXSAqLyBCU1RSIHR5cGUsCi0gICAgLyogW2luXSAqLyBJRE9NRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIsCi0gICAgLyogW2luXSAqLyBCT09MIHVzZUNhcHR1cmUpCitIUkVTVUxUIERPTU5vZGU6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExp
c3RlbmVyKiBsaXN0ZW5lciwgQk9PTCB1c2VDYXB0dXJlKQogewogICAgIGlmICghbGlzdGVuZXIg
fHwgIXR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC00MjgsOSArNDI1LDcgQEAg
SFJFU1VMVCBET01Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKAogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIERPTU5vZGU6OmRpc3BhdGNoRXZlbnQoCi0gICAgLyogW2luXSAqLyBJRE9N
RXZlbnQqIGV2dCwKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNV
TFQgRE9NTm9kZTo6ZGlzcGF0Y2hFdmVudChfSW5fb3B0XyBJRE9NRXZlbnQqIGV2dCwgX091dF8g
Qk9PTCogcmVzdWx0KQogewogICAgIGlmICghZXZ0IHx8ICFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CkBAIC00NTAsNyArNDQ1LDYgQEAgSFJFU1VMVCBET01Ob2RlOjpkaXNwYXRj
aEV2ZW50KAogLy8gRE9NTm9kZSAtIERPTU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBET01Ob2RlOjpET01Ob2RlKFdlYkNv
cmU6Ok5vZGUqIG4pCi06IG1fbm9kZSgwKQogewogICAgIGlmIChuKQogICAgICAgICBuLT5yZWYo
KTsKQEAgLTQ2NywxMCArNDYxLDEwIEBAIERPTU5vZGU6On5ET01Ob2RlKCkKIElET01Ob2RlKiBE
T01Ob2RlOjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpOb2RlKiBuKQogewogICAgIGlmICghbikK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSFJFU1VM
VCBociA9IFNfT0s7Ci0gICAgSURPTU5vZGUqIGRvbU5vZGUgPSAwOworICAgIElET01Ob2RlKiBk
b21Ob2RlID0gbnVsbHB0cjsKICAgICBXZWJDb3JlOjpOb2RlOjpOb2RlVHlwZSBub2RlVHlwZSA9
IG4tPm5vZGVUeXBlKCk7CiAKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CkBAIC01MDEsMTYgKzQ5
NSwxOCBAQCBJRE9NTm9kZSogRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yCiAgICAgfQog
CiAgICAgaWYgKEZBSUxFRChocikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHJldHVybiBkb21Ob2RlOwogfQogCiAvLyBET01Ob2RlTGlzdCAtIElV
bmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZUxpc3Q6OlF1ZXJ5SW50ZXJm
YWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01Ob2RlTGlzdDo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYg
KElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NTm9kZUxpc3QpKQogICAgICAgICAqcHB2T2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SURPTU5vZGVMaXN0Kj4odGhpcyk7CiAgICAgZWxzZQpAQCAtNTIyLDEx
ICs1MTgsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlTGlzdDo6UQogCiAv
LyBJRE9NTm9kZUxpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9k
ZUxpc3Q6Oml0ZW0oIAotICAgIC8qIFtpbl0gKi8gVUlOVCBpbmRleCwKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KQorSFJFU1VMVCBET01Ob2RlTGlzdDo6aXRlbShV
SU5UIGluZGV4LCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQogewotICAgICpy
ZXN1bHQgPSAwOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
ICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIGlmICghbV9ub2RlTGlzdCkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIApAQCAtNTM4LDkgKzUzNCwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTU5vZGVMaXN0OjppCiAgICAgcmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGVMaXN0OjpsZW5ndGgoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQgKnJlc3VsdCkKK0hSRVNVTFQgRE9NTm9kZUxp
c3Q6Omxlbmd0aChfT3V0XyBVSU5UKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFtX25vZGVM
aXN0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtNTUxLDcgKzU0OCw2IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZUxpc3Q6OmwKIC8vIERPTU5vZGVMaXN0IC0gRE9NTm9k
ZUxpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogRE9NTm9kZUxpc3Q6OkRPTU5vZGVMaXN0KFdlYkNvcmU6Ok5vZGVMaXN0KiBsKQotOiBtX25v
ZGVMaXN0KDApCiB7CiAgICAgaWYgKGwpCiAgICAgICAgIGwtPnJlZigpOwpAQCAtNTY4LDIxICs1
NjQsMjMgQEAgRE9NTm9kZUxpc3Q6On5ET01Ob2RlTGlzdCgpCiBJRE9NTm9kZUxpc3QqIERPTU5v
ZGVMaXN0OjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpOb2RlTGlzdCogbCkKIHsKICAgICBpZiAo
IWwpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIElE
T01Ob2RlTGlzdCogZG9tTm9kZUxpc3QgPSAwOworICAgIElET01Ob2RlTGlzdCogZG9tTm9kZUxp
c3QgPSBudWxscHRyOwogICAgIERPTU5vZGVMaXN0KiBuZXdOb2RlTGlzdCA9IG5ldyBET01Ob2Rl
TGlzdChsKTsKICAgICBpZiAoRkFJTEVEKG5ld05vZGVMaXN0LT5RdWVyeUludGVyZmFjZShJSURf
SURPTU5vZGVMaXN0LCAodm9pZCoqKSZkb21Ob2RlTGlzdCkpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gZG9tTm9kZUxpc3Q7CiB9CiAK
IC8vIERPTURvY3VtZW50IC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01E
b2N1bWVudDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitI
UkVTVUxUIERPTURvY3VtZW50OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBp
ZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0
ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01Eb2N1bWVudCkp
CiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NRG9jdW1lbnQqPih0aGlzKTsK
ICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTVZpZXdDU1MpKQpAQCAtNTk4
LDMxICs1OTYsMzcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6UQog
CiAvLyBET01Eb2N1bWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
RG9jdW1lbnQ6OmRvY3R5cGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50
VHlwZSoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTURvY3VtZW50Ojpkb2N0eXBlKF9DT01fT3V0
cHRyX29wdF8gSURPTURvY3VtZW50VHlwZSoqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjppbXBsZW1lbnRhdGlvbiggCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NSW1wbGVtZW50YXRpb24qKiAvKnJlc3VsdCovKQorSFJFU1VM
VCBET01Eb2N1bWVudDo6aW1wbGVtZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJRE9NSW1wbGVt
ZW50YXRpb24qKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxw
dHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01Eb2N1bWVudDo6ZG9jdW1lbnRFbGVtZW50KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01FbGVtZW50KiogcmVzdWx0KQorSFJFU1VMVCBET01Eb2N1bWVudDo6ZG9jdW1lbnRFbGVt
ZW50KF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQqKiByZXN1bHQpCiB7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IERPTUVsZW1l
bnQ6OmNyZWF0ZUluc3RhbmNlKG1fZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKTsKICAgICBy
ZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoIAotICAgIC8qIFtpbl0gKi8gQlNUUiB0
YWdOYW1lLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQqKiByZXN1bHQpCitI
UkVTVUxUIERPTURvY3VtZW50OjpjcmVhdGVFbGVtZW50KF9Jbl8gQlNUUiB0YWdOYW1lLCBfQ09N
X091dHB0cl9vcHRfIElET01FbGVtZW50KiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIGlm
ICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNjMyLDY2ICs2MzYs
NzQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6YwogICAgIHJldHVy
biAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01Eb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NRG9jdW1lbnRGcmFnbWVudCoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTURv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTURvY3Vt
ZW50RnJhZ21lbnQqKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51
bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01Eb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAv
KmRhdGEqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01UZXh0KiogLypyZXN1bHQqLykK
K0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZVRleHROb2RlKF9J
bl8gQlNUUiAvKmRhdGEqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NVGV4dCoqIHJlc3VsdCkKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpjcmVhdGVD
b21tZW50KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypkYXRhKi8sCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NQ29tbWVudCoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTURvY3VtZW50Ojpj
cmVhdGVDb21tZW50KF9Jbl8gQlNUUiAvKmRhdGEqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQ29t
bWVudCoqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TURvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmRh
dGEqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01DREFUQVNlY3Rpb24qKiAvKnJlc3Vs
dCovKQorSFJFU1VMVCBET01Eb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKF9Jbl8gQlNUUiAv
KmRhdGEqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQ0RBVEFTZWN0aW9uKiogcmVzdWx0KQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbiggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qdGFyZ2V0Ki8sCi0g
ICAgLyogW2luXSAqLyBCU1RSIC8qZGF0YSovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbioqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTURvY3VtZW50
OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oX0luXyBCU1RSIC8qdGFyZ2V0Ki8sIF9Jbl8g
QlNUUiAvKmRhdGEqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
KiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAg
IHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9j
dW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZSggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZSovLAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBE
T01Eb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlKF9Jbl8gQlNUUiAvKm5hbWUqLywgX0NPTV9PdXRw
dHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTURvY3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UoIAotICAgIC8qIFtp
bl0gKi8gQlNUUiAvKm5hbWUqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbnRpdHlS
ZWZlcmVuY2UqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01Eb2N1bWVudDo6Y3JlYXRlRW50aXR5
UmVmZXJlbmNlKF9Jbl8gQlNUUiAvKm5hbWUqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NRW50aXR5
UmVmZXJlbmNlKiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxs
cHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lKCAKLSAgICAvKiBbaW5dICovIEJT
VFIgdGFnTmFtZSwKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIHJlc3Vs
dCkKK0hSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lKF9Jbl8gQlNUUiB0
YWdOYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3VsdCkKIHsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAg
LTcwMCwzOCArNzEyLDM4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6
OmcKICAgICByZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmltcG9ydE5vZGUoIAotICAgIC8qIFtpbl0gKi8g
SURPTU5vZGUqIC8qaW1wb3J0ZWROb2RlKi8sCi0gICAgLyogW2luXSAqLyBCT09MIC8qZGVlcCov
LAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiAvKnJlc3VsdCovKQorSFJFU1VM
VCBET01Eb2N1bWVudDo6aW1wb3J0Tm9kZShfSW5fb3B0XyBJRE9NTm9kZSogLyppbXBvcnRlZE5v
ZGUqLywgQk9PTCAvKmRlZXAqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpjcmVh
dGVFbGVtZW50TlMoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKm5hbWVzcGFjZVVSSSovLAotICAg
IC8qIFtpbl0gKi8gQlNUUiAvKnF1YWxpZmllZE5hbWUqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01FbGVtZW50KiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NRG9jdW1lbnQ6OmNyZWF0
ZUVsZW1lbnROUyhfSW5fIEJTVFIgLypuYW1lc3BhY2VVUkkqLywgX0luXyBCU1RSIC8qcXVhbGlm
aWVkTmFtZSovLCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiogcmVzdWx0KQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZUF0dHJp
YnV0ZU5TKCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lc3BhY2VVUkkqLywKLSAgICAvKiBb
aW5dICovIEJTVFIgLypxdWFsaWZpZWROYW1lKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NQXR0cioqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTURvY3VtZW50OjpjcmVhdGVBdHRyaWJ1
dGVOUyhfSW5fIEJTVFIgLypuYW1lc3BhY2VVUkkqLywgX0luXyBCU1RSIC8qcXVhbGlmaWVkTmFt
ZSovLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1l
TlMoIAotICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgLyogW2luXSAqLyBC
U1RSIGxvY2FsTmFtZSwKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIHJl
c3VsdCkKK0hSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoX0luXyBC
U1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NTm9kZUxpc3QqKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX2RvY3VtZW50
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC03NDEsMTAgKzc1MywxMSBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpnCiAgICAgcmV0dXJuICpyZXN1bHQgPyBT
X09LIDogRV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50
OjpnZXRFbGVtZW50QnlJZCggCi0gICAgLyogW2luXSAqLyBCU1RSIGVsZW1lbnRJZCwKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01FbGVtZW50KiogcmVzdWx0KQorSFJFU1VMVCBET01Eb2N1
bWVudDo6Z2V0RWxlbWVudEJ5SWQoX0luXyBCU1RSIGVsZW1lbnRJZCwgX0NPTV9PdXRwdHJfb3B0
XyBJRE9NRWxlbWVudCoqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBpZiAoIW1fZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTc1NSwxMiArNzY4LDEyIEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmcKIAogLy8gRE9NRG9jdW1lbnQgLSBJ
RE9NVmlld0NTUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpnZXRDb21wdXRl
ZFN0eWxlKCAKLSAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBlbHQsCi0gICAgLyogW2luXSAq
LyBCU1RSIHBzZXVkb0VsdCwKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01DU1NTdHlsZURl
Y2xhcmF0aW9uKiogcmVzdWx0KQorSFJFU1VMVCBET01Eb2N1bWVudDo6Z2V0Q29tcHV0ZWRTdHls
ZShfSW5fb3B0XyBJRE9NRWxlbWVudCogZWx0LCBfSW5fIEJTVFIgcHNldWRvRWx0LCBfQ09NX091
dHB0cl9vcHRfIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiogcmVzdWx0KQogewotICAgIGlmICgh
ZWx0IHx8ICFyZXN1bHQpCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CisgICAgaWYgKCFlbHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKICAgICBDT01QdHI8RE9NRWxlbWVudD4gZG9tRWxlOwpAQCAtNzgxLDEw
ICs3OTQsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6ZwogCiAv
LyBET01Eb2N1bWVudCAtIElET01Eb2N1bWVudEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9j
dW1lbnQ6OmNyZWF0ZUV2ZW50KCAKLSAgICAvKiBbaW5dICovIEJTVFIgZXZlbnRUeXBlLAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUV2ZW50ICoqcmVzdWx0KQorSFJFU1VMVCBET01Eb2N1
bWVudDo6Y3JlYXRlRXZlbnQoX0luXyBCU1RSIGV2ZW50VHlwZSwgX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NRXZlbnQqKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CisKICAgICBTdHJpbmcgZXZlbnRUeXBl
U3RyaW5nKGV2ZW50VHlwZSwgU3lzU3RyaW5nTGVuKGV2ZW50VHlwZSkpOwogICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICpyZXN1bHQgPSBET01FdmVudDo6Y3JlYXRlSW5z
dGFuY2UobV9kb2N1bWVudC0+Y3JlYXRlRXZlbnQoZXZlbnRUeXBlU3RyaW5nLCBlYykpOwpAQCAt
Nzk0LDggKzgwOSw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmMK
IC8vIERPTURvY3VtZW50IC0gRE9NRG9jdW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KFdlYkNv
cmU6OkRvY3VtZW50KiBkKQotOiBET01Ob2RlKGQpCi0sIG1fZG9jdW1lbnQoZCkKKyAgICA6IERP
TU5vZGUoZCkKKyAgICAsIG1fZG9jdW1lbnQoZCkKIHsKIH0KIApAQCAtODA2LDEwICs4MjEsMTAg
QEAgRE9NRG9jdW1lbnQ6On5ET01Eb2N1bWVudCgpCiBJRE9NRG9jdW1lbnQqIERPTURvY3VtZW50
OjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpEb2N1bWVudCogZCkKIHsKICAgICBpZiAoIWQpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEhSRVNVTFQg
aHI7Ci0gICAgSURPTURvY3VtZW50KiBkb21Eb2N1bWVudCA9IDA7CisgICAgSURPTURvY3VtZW50
KiBkb21Eb2N1bWVudCA9IG51bGxwdHI7CiAKICAgICBpZiAoZC0+aXNIVE1MRG9jdW1lbnQoKSkg
ewogICAgICAgICBET01IVE1MRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbmV3IERPTUhUTUxEb2N1
bWVudChkKTsKQEAgLTgyMCwxNiArODM1LDE4IEBAIElET01Eb2N1bWVudCogRE9NRG9jdW1lbnQ6
OmNyZWF0ZUluc3RhbmMKICAgICB9CiAKICAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRvbURvY3VtZW50
OwogfQogCiAvLyBET01XaW5kb3cgLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBET01XaW5kb3c6OlF1ZXJ5
SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01XaW5k
b3c6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAg
IGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTVdpbmRvdykpCiAgICAgICAgICpwcHZPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxJRE9NV2luZG93Kj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVh
bEdVSUQocmlpZCwgSUlEX0lET01FdmVudFRhcmdldCkpCkBAIC04NDMsOCArODYwLDcgQEAgSFJF
U1VMVCBET01XaW5kb3c6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRAogCiAvLyBET01XaW5kb3cgLSBJ
RE9NV2luZG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1IUkVTVUxUIERPTVdpbmRvdzo6ZG9jdW1lbnQoCi0gICAgLyogW291dCwgcmV0
dmFsXSAqLyBJRE9NRG9jdW1lbnQqKiByZXN1bHQpCitIUkVTVUxUIERPTVdpbmRvdzo6ZG9jdW1l
bnQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NRG9jdW1lbnQqKiByZXN1bHQpCiB7CiAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NTUsMjYgKzg3MSwy
MiBAQCBIUkVTVUxUIERPTVdpbmRvdzo6ZG9jdW1lbnQoCiAgICAgcmV0dXJuICpyZXN1bHQgPyBT
X09LIDogRV9GQUlMOwogfQogCi1IUkVTVUxUIERPTVdpbmRvdzo6Z2V0Q29tcHV0ZWRTdHlsZSgK
LSAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBlbGVtZW50LCAKLSAgICAvKiBbaW5dICovIEJT
VFIgcHNldWRvRWxlbWVudCkKK0hSRVNVTFQgRE9NV2luZG93OjpnZXRDb21wdXRlZFN0eWxlKF9J
bl9vcHRfIElET01FbGVtZW50KiBlbGVtZW50LCBfSW5fIEJTVFIgcHNldWRvRWxlbWVudCkKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1I
UkVTVUxUIERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKAotICAgIC8qIFtpbl0gKi8gSURP
TUVsZW1lbnQqIGVsZW1lbnQsIAotICAgIC8qIFtpbl0gKi8gQlNUUiBwc2V1ZG9FbGVtZW50LCAK
LSAgICAvKiBbaW5dICovIEJPT0wgYXV0aG9yT25seSwgCi0gICAgLyogW291dCwgcmV0dmFsXSAq
LyBJRE9NQ1NTUnVsZUxpc3QqKiByZXN1bHQpCitIUkVTVUxUIERPTVdpbmRvdzo6Z2V0TWF0Y2hl
ZENTU1J1bGVzKF9Jbl9vcHRfIElET01FbGVtZW50KiBlbGVtZW50LCBfSW5fIEJTVFIgcHNldWRv
RWxlbWVudCwgQk9PTCBhdXRob3JPbmx5LCBfQ09NX091dHB0cl9vcHRfIElET01DU1NSdWxlTGlz
dCoqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIERPTVdpbmRvdzo6ZGV2aWNlUGl4ZWxS
YXRpbygKLSAgICAvKiBbb3V0LCByZXR2YWxdICovIGRvdWJsZSogcmVzdWx0KQorSFJFU1VMVCBE
T01XaW5kb3c6OmRldmljZVBpeGVsUmF0aW8oX091dF8gZG91YmxlKiByZXN1bHQpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKQEAgLTg4MiwxMCAr
ODk0LDcgQEAgSFJFU1VMVCBET01XaW5kb3c6OmRldmljZVBpeGVsUmF0aW8oCiAKIC8vIERPTVdp
bmRvdyAtIElET01FdmVudFRhcmdldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVu
ZXIoCi0gICAgLyogW2luXSAqLyBCU1RSIHR5cGUsCi0gICAgLyogW2luXSAqLyBJRE9NRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIsCi0gICAgLyogW2luXSAqLyBCT09MIHVzZUNhcHR1cmUpCitIUkVT
VUxUIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8g
SURPTUV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBCT09MIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KCF0eXBlIHx8ICFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTg5Niwx
MCArOTA1LDcgQEAgSFJFU1VMVCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKAot
ICAgIC8qIFtpbl0gKi8gQlNUUiB0eXBlLAotICAgIC8qIFtpbl0gKi8gSURPTUV2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyLAotICAgIC8qIFtpbl0gKi8gQk9PTCB1c2VDYXB0dXJlKQorSFJFU1VMVCBE
T01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElE
T01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgQk9PTCB1c2VDYXB0dXJlKQogewogICAgIGlmICgh
dHlwZSB8fCAhbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC05MTAsOSAr
OTE2LDcgQEAgSFJFU1VMVCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KAotICAgIC8q
IFtpbl0gKi8gSURPTUV2ZW50KiBldnQsCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBy
ZXN1bHQpCitIUkVTVUxUIERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChfSW5fb3B0XyBJRE9NRXZl
bnQqIGV2dCwgX091dF8gQk9PTCogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0IHx8ICFldnQp
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC05MzMsNyArOTM3LDcgQEAgSFJFU1VMVCBE
T01XaW5kb3c6OmRpc3BhdGNoRXZlbnQoCiAvLyBET01XaW5kb3cgLSBET01XaW5kb3cgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRE9NV2luZG93
OjpET01XaW5kb3coV2ViQ29yZTo6RE9NV2luZG93KiB3KQotOiBtX3dpbmRvdyh3KQorICAgIDog
bV93aW5kb3codykKIHsKIH0KIApAQCAtOTQ0LDI0ICs5NDgsMjYgQEAgRE9NV2luZG93Ojp+RE9N
V2luZG93KCkKIElET01XaW5kb3cqIERPTVdpbmRvdzo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6
RE9NV2luZG93KiB3KQogewogICAgIGlmICghdykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgRE9NV2luZG93KiBuZXdXaW5kb3cgPSBuZXcgRE9NV2lu
ZG93KHcpOwogCi0gICAgSURPTVdpbmRvdyogZG9tV2luZG93ID0gMDsKKyAgICBJRE9NV2luZG93
KiBkb21XaW5kb3cgPSBudWxscHRyOwogICAgIEhSRVNVTFQgaHIgPSBuZXdXaW5kb3ctPlF1ZXJ5
SW50ZXJmYWNlKElJRF9JRE9NV2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmRvbVdp
bmRvdykpOwogCiAgICAgaWYgKEZBSUxFRChocikpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBkb21XaW5kb3c7CiB9CiAKIC8vIERPTUVs
ZW1lbnQgLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgRE9N
RWxlbWVudDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmpl
Y3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7
CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NRWxlbWVudCkpCiAgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NRWxlbWVudCo+KHRoaXMpOwogICAgIGVsc2UgaWYg
KElzRXF1YWxHVUlEKHJpaWQsIElJRF9ET01FbGVtZW50KSkKQEAgLTk4Myw5ICs5ODksMTEgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpRdQogCiAvLyBET01FbGVtZW50
IC0gSURPTU5vZGVFeHRlbnNpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Ym91bmRp
bmdCb3goIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gTFBSRUNUIHJlY3QpCitIUkVTVUxUIERP
TUVsZW1lbnQ6OmJvdW5kaW5nQm94KF9PdXRfIExQUkVDVCByZWN0KQogeworICAgIGlmICghcmVj
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIDo6U2V0UmVjdEVtcHR5KHJlY3Qp
OwogCiAgICAgaWYgKCFtX2VsZW1lbnQpCkBAIC0xMDAzLDMyICsxMDExLDMwIEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Ym8KICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpsaW5lQm94UmVjdHMoIAotICAg
IC8qIFtzaXplX2lzXVtpbl0gKi8gUkVDVCogLypyZWN0cyovLAotICAgIC8qIFtpbl0gKi8gaW50
IC8qY1JlY3RzKi8pCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmxpbmVC
b3hSZWN0cyhfX2lub3V0X2Vjb3VudF9mdWxsKGNSZWN0cykgUkVDVCogLypyZWN0cyovLCBpbnQg
Y1JlY3RzKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIC8vIElET01FbGVtZW50IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50Ojp0YWdOYW1lKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIERPTUVs
ZW1lbnQ6OnRhZ05hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKLSAgICBpZiAo
IW1fZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQogICAgIGlmICghcmVzdWx0KQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOworICAgIGlm
ICghbV9lbGVtZW50KQorICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgKnJlc3VsdCA9IEJT
dHJpbmcobV9lbGVtZW50LT50YWdOYW1lKCkpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Z2V0QXR0cmli
dXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBET01FbGVtZW50OjpnZXRBdHRyaWJ1dGUo
X0luXyBCU1RSIG5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxw
dHI7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgV1RG
OjpTdHJpbmcgbmFtZVN0cmluZyhuYW1lLCBTeXNTdHJpbmdMZW4obmFtZSkpOwpAQCAtMTAzOSw5
ICsxMDQ1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpnZQogICAg
IHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVt
ZW50OjpzZXRBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKQorSFJFU1VMVCBET01FbGVtZW50OjpzZXRBdHRyaWJ1
dGUoX0luXyBCU1RSIG5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIW1fZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEwNTMsMTE1ICsxMDU3LDEwOSBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNlCiAgICAgcmV0dXJuIGVjID8gRV9G
QUlMIDogU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZSovKQor
SFJFU1VMVCBET01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoX0luXyBCU1RSIC8qbmFtZSovKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAg
ICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5v
ZGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lKi8sCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTUF0dHIqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01FbGVtZW50Ojpn
ZXRBdHRyaWJ1dGVOb2RlKF9Jbl8gQlNUUiAvKm5hbWUqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9N
QXR0cioqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9N
QXR0ciogLypuZXdBdHRyKi8sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIq
KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKF9Jbl9v
cHRfIElET01BdHRyKiAvKm5ld0F0dHIqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJl
c3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVt
ZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NQXR0ciog
LypvbGRBdHRyKi8sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIqKiAvKnJl
c3VsdCovKQorSFJFU1VMVCBET01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKF9Jbl9vcHRf
IElET01BdHRyKiAvKm9sZEF0dHIqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3Vs
dCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKm5hbWUq
LywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QqKiAvKnJlc3VsdCov
KQorSFJFU1VMVCBET01FbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZShfSW5fIEJTVFIgLypu
YW1lKi8sIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVMaXN0KiogcmVzdWx0KQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9
CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0
ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiAvKmxvY2FsTmFtZSovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5T
KF9Jbl8gQlNUUiAvKm5hbWVzcGFjZVVSSSovLCBfSW5fIEJTVFIgLypsb2NhbE5hbWUqLywgX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiAvKm5hbWVzcGFjZVVSSSovLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypx
dWFsaWZpZWROYW1lKi8sCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKnZhbHVlKi8pCitIUkVT
VUxUIERPTUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiAvKm5hbWVzcGFjZVVSSSov
LCBfSW5fIEJTVFIgLypxdWFsaWZpZWROYW1lKi8sIF9Jbl8gQlNUUiAvKnZhbHVlKi8pCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lc3BhY2VVUkkqLywKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIC8qbG9jYWxOYW1lKi8pCitIUkVTVUxUIERPTUVsZW1lbnQ6OnJlbW92ZUF0
dHJpYnV0ZU5TKF9Jbl8gQlNUUiAvKm5hbWVzcGFjZVVSSSovLCBfSW5fIEJTVFIgLypsb2NhbE5h
bWUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpnZXRBdHRy
aWJ1dGVOb2RlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lc3BhY2VVUkkqLywK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbG9jYWxOYW1lKi8sCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTUF0dHIqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01FbGVtZW50Ojpn
ZXRBdHRyaWJ1dGVOb2RlTlMoX0luXyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sIF9Jbl8gQlNUUiAv
KmxvY2FsTmFtZSovLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNldEF0dHJp
YnV0ZU5vZGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUF0dHIqIC8qbmV3QXR0ciovLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogLypyZXN1bHQqLykKK0hSRVNV
TFQgRE9NRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKF9Jbl9vcHRfIElET01BdHRyKiAvKm5l
d0F0dHIqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
ICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpnZXRFbGVtZW50c0J5
VGFnTmFtZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKmxvY2FsTmFtZSovLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlTGlzdCoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUVsZW1lbnQ6
OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoX0luXyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sIF9Jbl8g
QlNUUiAvKmxvY2FsTmFtZSovLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3Vs
dCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50
OjpoYXNBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lKi8sCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NRWxl
bWVudDo6aGFzQXR0cmlidXRlKF9Jbl8gQlNUUiAvKm5hbWUqLywgX091dF8gQk9PTCogLypyZXN1
bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpoYXNBdHRy
aWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKm5hbWVzcGFjZVVSSSovLAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgLypsb2NhbE5hbWUqLywKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01FbGVtZW50OjpoYXNBdHRyaWJ1
dGVOUyhfSW5fIEJTVFIgLypuYW1lc3BhY2VVUkkqLywgX0luXyBCU1RSIC8qbG9jYWxOYW1lKi8s
IF9PdXRfIEJPT0wqIC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01F
bGVtZW50Ojpmb2N1cyggdm9pZCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6Zm9jdXMoKQogewogICAg
IGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTE2OSw3ICsxMTY3
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpmbwogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmJsdXIo
IHZvaWQpCitIUkVTVUxUIERPTUVsZW1lbnQ6OmJsdXIoKQogewogICAgIGlmICghbV9lbGVtZW50
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTE3OSw3ICsxMTc3LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpibAogCiAvLyBJRE9NRWxlbWVudFByaXZhdGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLUhSRVNVTFQgRE9NRWxlbWVudDo6Y29yZUVsZW1lbnQodm9pZCAqKmVsZW1lbnQpCitIUkVT
VUxUIERPTUVsZW1lbnQ6OmNvcmVFbGVtZW50KF9fZGVyZWZfb3B0X291dCB2b2lkICoqZWxlbWVu
dCkKIHsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEx
ODcsMTMgKzExODUsMTQgQEAgSFJFU1VMVCBET01FbGVtZW50Ojpjb3JlRWxlbWVudCh2b2lkICoq
ZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVs
ZW1lbnQ6OmlzRXF1YWwoIAotICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQgKm90aGVyLAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KQorSFJFU1VMVCBET01FbGVtZW50Ojpp
c0VxdWFsKF9Jbl9vcHRfIElET01FbGVtZW50KiBvdGhlciwgX091dF8gQk9PTCogcmVzdWx0KQog
eworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgKnJl
c3VsdCA9IEZBTFNFOwogCi0gICAgaWYgKCFvdGhlciB8fCAhcmVzdWx0KQorICAgIGlmICghb3Ro
ZXIpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBJRE9NRWxlbWVudFByaXZhdGUq
IG90aGVyUHJpdjsKQEAgLTEyMTEsOSArMTIxMCwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUVsZW1lbnQ6OmlzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6aXNGb2N1c2VkKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wgKnJlc3VsdCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6aXNGb2N1c2VkKF9PdXRfIEJP
T0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKQEAgLTEyMjUsMTQgKzEyMjYsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01FbGVtZW50OjppcwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmlubmVyVGV4dCgKLSAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6aW5uZXJUZXh0KF9fZGVy
ZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgfQog
CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fZWxlbWVudCkgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEyNDIs
NyArMTI0NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6aW4KICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50
Ojpmb250KFdlYkZvbnREZXNjcmlwdGlvbiogd2ViRm9udERlc2NyaXB0aW9uKQorSFJFU1VMVCBE
T01FbGVtZW50Ojpmb250KF9PdXRfIFdlYkZvbnREZXNjcmlwdGlvbiogd2ViRm9udERlc2NyaXB0
aW9uKQogewogICAgIGlmICghd2ViRm9udERlc2NyaXB0aW9uKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMTI3MSwxMyArMTI3MywxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUVsZW1lbnQ6OmZvCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkK
K0hSRVNVTFQgRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZShfX2RlcmVmX29wdF9vdXQgSEJJVE1B
UCogaW1hZ2UpCiB7CiAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICB9Ci0gICAgKmltYWdlID0gMDsK
KyAgICAqaW1hZ2UgPSBudWxscHRyOwogCiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAKQEAgLTEy
OTIsOCArMTI5NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6cmUK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVt
ZW50OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
KiBtYXJrZXJUZXh0KQorSFJFU1VMVCBET01FbGVtZW50OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0o
X19kZXJlZl9vcHRfb3V0IEJTVFIqIG1hcmtlclRleHQpCiB7CiAgICAgaWYgKCFtYXJrZXJUZXh0
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTMwNCw4ICsxMzA1LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjptYQogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBET01FbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTMxOCwxMSArMTMxOCwx
MSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNoCiAKIC8vIElET01F
bGVtZW50Q1NTSW5saW5lU3R5bGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50Ojpz
dHlsZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioq
IHJlc3VsdCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6c3R5bGUoX0NPTV9PdXRwdHJfb3B0XyBJRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbioqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBpZiAoIW1f
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtMTMzNiw5ICsxMzM2LDExIEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6c3QKIAogLy8gSURPTUVsZW1l
bnRFeHRlbnNpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Om9mZnNl
dExlZnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpCitIUkVTVUxUIERP
TUVsZW1lbnQ6Om9mZnNldExlZnQoX091dF8gaW50KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYg
KCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTEzNDYsOSArMTM0OCwx
MSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Om9mCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6b2Zmc2V0
VG9wKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KQorSFJFU1VMVCBET01F
bGVtZW50OjpvZmZzZXRUb3AoX091dF8gaW50KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFt
X2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTEzNTYsOSArMTM2MCwxMSBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Om9mCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6b2Zmc2V0V2lk
dGgoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpCitIUkVTVUxUIERPTUVs
ZW1lbnQ6Om9mZnNldFdpZHRoKF9PdXRfIGludCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSAwOwogICAgIGlmICgh
bV9lbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0xMzY2LDkgKzEzNzIsMTEg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpvZgogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Om9mZnNldEhl
aWdodCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKK0hSRVNVTFQgRE9N
RWxlbWVudDo6b2Zmc2V0SGVpZ2h0KF9PdXRfIGludCogcmVzdWx0KQogeworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSAwOwogICAgIGlm
ICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0xMzc2LDE3ICsxMzg0
LDIxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6b2YKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpvZmZz
ZXRQYXJlbnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQqKiAvKnJlc3Vs
dCovKQorSFJFU1VMVCBET01FbGVtZW50OjpvZmZzZXRQYXJlbnQoX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NRWxlbWVudCoqIHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Y2xpZW50V2lkdGgoIAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gaW50KiByZXN1bHQpCitIUkVTVUxUIERPTUVsZW1lbnQ6OmNsaWVudFdpZHRo
KF9PdXRfIGludCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpyZXN1bHQgPSAwOwogICAgIGlmICghbV9lbGVtZW50KQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCkBAIC0xMzk0LDkgKzE0MDYsMTEgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01FbGVtZW50OjpjbAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmNsaWVudEhlaWdodCggCi0gICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6Y2xpZW50SGVp
Z2h0KF9PdXRfIGludCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSAwOwogICAgIGlmICghbV9lbGVtZW50KQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0xNDA0LDkgKzE0MTgsMTEgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpjbAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNjcm9sbExlZnQoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpCitIUkVTVUxUIERPTUVsZW1lbnQ6OnNjcm9sbExl
ZnQoX091dF8gaW50KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTE0MTQsMTcgKzE0MzAsMTggQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpzYwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNldFNjcm9sbExlZnQoIAotICAgIC8q
IFtpbl0gKi8gaW50IC8qbmV3U2Nyb2xsTGVmdCovKQorSFJFU1VMVCBET01FbGVtZW50OjpzZXRT
Y3JvbGxMZWZ0KGludCAvKm5ld1Njcm9sbExlZnQqLykKIHsKICAgICAvLyBGSVhNRQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6c2Nyb2xsVG9wKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIGludCogcmVzdWx0KQorSFJFU1VMVCBET01FbGVtZW50OjpzY3JvbGxUb3AoX091
dF8gaW50KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKQEAgLTE0MzIsMTcgKzE0NDksMTggQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01FbGVtZW50OjpzYwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNldFNjcm9sbFRvcCggCi0gICAgLyogW2luXSAq
LyBpbnQgLypuZXdTY3JvbGxUb3AqLykKK0hSRVNVTFQgRE9NRWxlbWVudDo6c2V0U2Nyb2xsVG9w
KGludCAvKm5ld1Njcm9sbFRvcCovKQogewogICAgIC8vIEZJWE1FCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01FbGVtZW50OjpzY3JvbGxXaWR0aCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQqIHJlc3VsdCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6c2Nyb2xsV2lkdGgoX091dF8gaW50
KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKQEAgLTE0NTAsOSArMTQ2OCwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUVsZW1lbnQ6OnNjCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NRWxlbWVudDo6c2Nyb2xsSGVpZ2h0KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIGludCogcmVzdWx0KQorSFJFU1VMVCBET01FbGVtZW50OjpzY3JvbGxIZWlnaHQoX091dF8g
aW50KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKQEAgLTE0NjAsOCArMTQ4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NRWxlbWVudDo6c2MKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01FbGVtZW50OjpzY3JvbGxJbnRvVmlldyggCi0gICAgLyogW2luXSAqLyBC
T09MIGFsaWduV2l0aFRvcCkKK0hSRVNVTFQgRE9NRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoQk9P
TCBhbGlnbldpdGhUb3ApCiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CkBAIC0xNDcwLDggKzE0ODksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUVsZW1lbnQ6OnNjCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCggCi0gICAgLyogW2luXSAq
LyBCT09MIGNlbnRlcklmTmVlZGVkKQorSFJFU1VMVCBET01FbGVtZW50OjpzY3JvbGxJbnRvVmll
d0lmTmVlZGVkKEJPT0wgY2VudGVySWZOZWVkZWQpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xNDgzLDggKzE1MDEsOCBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNjCiAvLyBET01FbGVtZW50IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIERP
TUVsZW1lbnQ6OkRPTUVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZSkKLTogRE9NTm9kZShlKQot
LCBtX2VsZW1lbnQoZSkKKyAgICA6IERPTU5vZGUoZSkKKyAgICAsIG1fZWxlbWVudChlKQogewog
fQogCkBAIC0xNDk4LDcgKzE1MTYsNyBAQCBJRE9NRWxlbWVudCogRE9NRWxlbWVudDo6Y3JlYXRl
SW5zdGFuY2UoCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSFJFU1VMVCBocjsKLSAg
ICBJRE9NRWxlbWVudCogZG9tRWxlbWVudCA9IDA7CisgICAgSURPTUVsZW1lbnQqIGRvbUVsZW1l
bnQgPSBudWxscHRyOwogCiAgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4oKmUp
KSB7CiAgICAgICAgIERPTUhUTUxGb3JtRWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1M
Rm9ybUVsZW1lbnQoZSk7CkBAIC0xNTI3LDE1ICsxNTQ1LDE3IEBAIElET01FbGVtZW50KiBET01F
bGVtZW50OjpjcmVhdGVJbnN0YW5jZSgKICAgICB9CiAKICAgICBpZiAoRkFJTEVEKGhyKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRv
bUVsZW1lbnQ7CiB9CiAKIC8vIERPTVJhbmdlIC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBET01SYW5nZTo6
UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIERP
TVJhbmdlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKIHsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKICAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQo
cmlpZCwgSUlEX0lET01SYW5nZSkpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJ
RE9NUmFuZ2UqPih0aGlzKTsKQEAgLTE1NzEsMTEgKzE1OTEsMTEgQEAgSURPTVJhbmdlKiBET01S
YW5nZTo6Y3JlYXRlSW5zdGFuY2UoV2ViQwogICAgIHJldHVybiBuZXdSYW5nZTsKIH0KIAotSFJF
U1VMVCBET01SYW5nZTo6c3RhcnRDb250YWluZXIoSURPTU5vZGUqKiBub2RlKQorSFJFU1VMVCBE
T01SYW5nZTo6c3RhcnRDb250YWluZXIoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIG5vZGUp
CiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCisgICAgKm5v
ZGUgPSBudWxscHRyOwogICAgIGlmICghbV9yYW5nZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBF
Q1RFRDsKIApAQCAtMTU4NCwxMSArMTYwNCwxMSBAQCBIUkVTVUxUIERPTVJhbmdlOjpzdGFydENv
bnRhaW5lcihJRE9NTm9kCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRE9NUmFuZ2U6
OnN0YXJ0T2Zmc2V0KGludCogb2Zmc2V0KQorSFJFU1VMVCBET01SYW5nZTo6c3RhcnRPZmZzZXQo
X091dF8gaW50KiBvZmZzZXQpCiB7CiAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7Ci0KKyAgICAqb2Zmc2V0ID0gMDsKICAgICBpZiAoIW1fcmFuZ2UpCiAgICAgICAg
IHJldHVybiBFX1VORVhQRUNURUQ7CiAKQEAgLTE1OTcsMTEgKzE2MTcsMTEgQEAgSFJFU1VMVCBE
T01SYW5nZTo6c3RhcnRPZmZzZXQoaW50KiBvZmZzZQogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIERPTVJhbmdlOjplbmRDb250YWluZXIoSURPTU5vZGUqKiBub2RlKQorSFJFU1VMVCBE
T01SYW5nZTo6ZW5kQ29udGFpbmVyKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiBub2RlKQog
ewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQorICAgICpub2Rl
ID0gbnVsbHB0cjsKICAgICBpZiAoIW1fcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNU
RUQ7CiAKQEAgLTE2MTAsMTEgKzE2MzAsMTEgQEAgSFJFU1VMVCBET01SYW5nZTo6ZW5kQ29udGFp
bmVyKElET01Ob2RlKgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIERPTVJhbmdlOjpl
bmRPZmZzZXQoaW50KiBvZmZzZXQpCitIUkVTVUxUIERPTVJhbmdlOjplbmRPZmZzZXQoX091dF8g
aW50KiBvZmZzZXQpCiB7CiAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7Ci0KKyAgICAqb2Zmc2V0ID0gMDsKICAgICBpZiAoIW1fcmFuZ2UpCiAgICAgICAgIHJldHVy
biBFX1VORVhQRUNURUQ7CiAKQEAgLTE2MjMsMTEgKzE2NDMsMTEgQEAgSFJFU1VMVCBET01SYW5n
ZTo6ZW5kT2Zmc2V0KGludCogb2Zmc2V0KQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IERPTVJhbmdlOjpjb2xsYXBzZWQoQk9PTCogcmVzdWx0KQorSFJFU1VMVCBET01SYW5nZTo6Y29s
bGFwc2VkKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKLQorICAgICpyZXN1bHQgPSBGQUxTRTsKICAgICBpZiAoIW1fcmFu
Z2UpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKQEAgLTE2MzcsOTYgKzE2NTcsMTI1
IEBAIEhSRVNVTFQgRE9NUmFuZ2U6OmNvbGxhcHNlZChCT09MKiByZXN1bHQKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6Y29tbW9uQW5jZXN0b3JDb250YWluZXIoSURP
TU5vZGUqKiBjb250YWluZXIpCitIUkVTVUxUIERPTVJhbmdlOjpjb21tb25BbmNlc3RvckNvbnRh
aW5lcihfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogY29udGFpbmVyKQogeworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghY29udGFpbmVyKQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworICAgICpjb250YWluZXIgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAKLUhSRVNVTFQgRE9NUmFuZ2U6OnNldFN0YXJ0KElET01Ob2RlKiByZWZOb2RlLCBpbnQg
b2Zmc2V0KQorSFJFU1VMVCBET01SYW5nZTo6c2V0U3RhcnQoX0luX29wdF8gSURPTU5vZGUqIHJl
Zk5vZGUsIGludCBvZmZzZXQpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6c2V0RW5kKElET01Ob2RlKiBy
ZWZOb2RlLCBpbnQgb2Zmc2V0KQorSFJFU1VMVCBET01SYW5nZTo6c2V0RW5kKF9Jbl9vcHRfIElE
T01Ob2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0KQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgRE9NUmFuZ2U6OnNldFN0YXJ0
QmVmb3JlKElET01Ob2RlKiByZWZOb2RlKQorSFJFU1VMVCBET01SYW5nZTo6c2V0U3RhcnRCZWZv
cmUoX0luX29wdF8gSURPTU5vZGUqIHJlZk5vZGUpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6c2V0U3Rh
cnRBZnRlcihJRE9NTm9kZSogcmVmTm9kZSkKK0hSRVNVTFQgRE9NUmFuZ2U6OnNldFN0YXJ0QWZ0
ZXIoX0luX29wdF8gSURPTU5vZGUqIHJlZk5vZGUpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6c2V0RW5k
QmVmb3JlKElET01Ob2RlKiByZWZOb2RlKQorSFJFU1VMVCBET01SYW5nZTo6c2V0RW5kQmVmb3Jl
KF9Jbl9vcHRfICBJRE9NTm9kZSogcmVmTm9kZSkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIERPTVJhbmdlOjpzZXRFbmRB
ZnRlcihJRE9NTm9kZSogcmVmTm9kZSkKK0hSRVNVTFQgRE9NUmFuZ2U6OnNldEVuZEFmdGVyKF9J
bl9vcHRfICBJRE9NTm9kZSogcmVmTm9kZSkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiBIUkVTVUxUIERPTVJhbmdlOjpjb2xsYXBzZShC
T09MIHRvU3RhcnQpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6c2VsZWN0Tm9kZShJRE9NTm9kZSogcmVm
Tm9kZSkKK0hSRVNVTFQgRE9NUmFuZ2U6OnNlbGVjdE5vZGUoX0luX29wdF8gSURPTU5vZGUqIHJl
Zk5vZGUpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6c2VsZWN0Tm9kZUNvbnRlbnRzKElET01Ob2RlKiBy
ZWZOb2RlKQorSFJFU1VMVCBET01SYW5nZTo6c2VsZWN0Tm9kZUNvbnRlbnRzKF9Jbl9vcHRfIElE
T01Ob2RlKiByZWZOb2RlKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgRE9NUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50
cyh1bnNpZ25lZCBzaG9ydCBob3csIElET01SYW5nZSogc291cmNlUmFuZ2UpCitIUkVTVUxUIERP
TVJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHModW5zaWduZWQgc2hvcnQgaG93LCBfSW5fb3B0
XyBJRE9NUmFuZ2UqIHNvdXJjZVJhbmdlKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIEhSRVNVTFQgRE9NUmFuZ2U6OmRlbGV0ZUNvbnRl
bnRzKCkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogCi1IUkVTVUxUIERPTVJhbmdlOjpleHRyYWN0Q29udGVudHMoSURPTURvY3VtZW50RnJh
Z21lbnQqKiBmcmFnbWVudCkKK0hSRVNVTFQgRE9NUmFuZ2U6OmV4dHJhY3RDb250ZW50cyhfQ09N
X091dHB0cl9vcHRfIElET01Eb2N1bWVudEZyYWdtZW50KiogZnJhZ21lbnQpCiB7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFmcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKKyAgICAqZnJhZ21lbnQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAKLUhSRVNVTFQgRE9NUmFuZ2U6OmNsb25lQ29udGVudHMoSURPTURvY3VtZW50RnJhZ21l
bnQqKiBmcmFnbWVudCkKK0hSRVNVTFQgRE9NUmFuZ2U6OmNsb25lQ29udGVudHMoX0NPTV9PdXRw
dHJfb3B0XyBJRE9NRG9jdW1lbnRGcmFnbWVudCoqIGZyYWdtZW50KQogeworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKmZyYWdtZW50ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
Ci1IUkVTVUxUIERPTVJhbmdlOjppbnNlcnROb2RlKElET01Ob2RlKiBuZXdOb2RlKQorSFJFU1VM
VCBET01SYW5nZTo6aW5zZXJ0Tm9kZShfSW5fb3B0XyBJRE9NTm9kZSogbmV3Tm9kZSkKIHsKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVT
VUxUIERPTVJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKElET01Ob2RlKiBuZXdQYXJlbnQpCitIUkVT
VUxUIERPTVJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKF9Jbl9vcHRfIElET01Ob2RlKiBuZXdQYXJl
bnQpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotSFJFU1VMVCBET01SYW5nZTo6Y2xvbmVSYW5nZShJRE9NUmFuZ2UqKiByYW5nZSkKK0hS
RVNVTFQgRE9NUmFuZ2U6OmNsb25lUmFuZ2UoX0NPTV9PdXRwdHJfb3B0XyBJRE9NUmFuZ2UqKiBy
YW5nZSkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJhbmdlKQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyYW5nZSA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBET01SYW5nZTo6dG9TdHJpbmcoQlNUUiogc3RyKQor
SFJFU1VMVCBET01SYW5nZTo6dG9TdHJpbmcoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cikKIHsK
ICAgICBpZiAoIXN0cikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQorICAgICpzdHIgPSBu
dWxscHRyOwogICAgIGlmICghbV9yYW5nZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsK
IApAQCAtMTczOCw1ICsxNzg3LDYgQEAgSFJFU1VMVCBET01SYW5nZTo6dG9TdHJpbmcoQlNUUiog
c3RyKQogCiBIUkVTVUxUIERPTVJhbmdlOjpkZXRhY2goKQogeworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9ET01Db3JlQ2xhc3Nlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNv
cmVDbGFzc2VzLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNv
cmVDbGFzc2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDIw
NyArNDIsMTQ4IEBAIGNsYXNzIFJhbmdlOwogY2xhc3MgRE9NT2JqZWN0IDogcHVibGljIFdlYlNj
cmlwdE9iamVjdCwgcHVibGljIElET01PYmplY3QgewogcHVibGljOgogICAgIC8vIElVbmtub3du
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OkFkZFJlZigp
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIFdlYlNjcmlw
dE9iamVjdDo6QWRkUmVmKCk7IH0KICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IFJlbGVhc2Uodm9pZCkgeyByZXR1cm4gV2ViU2NyaXB0T2JqZWN0OjpSZWxlYXNlKCk7IH0KIAog
ICAgIC8vIElXZWJTY3JpcHRPYmplY3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGhyb3dFeGNlcHRpb24oCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25N
ZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1
cm4gV2ViU2NyaXB0T2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxX
ZWJTY3JpcHRNZXRob2QoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAv
KiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtp
bl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJl
c3VsdCkgeyByZXR1cm4gV2ViU2NyaXB0T2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUs
IGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
c2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyBy
ZXR1cm4gV2ViU2NyaXB0T2JqZWN0OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2Vi
U2NyaXB0S2V5KAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gV2ViU2Ny
aXB0T2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJu
IFdlYlNjcmlwdE9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRp
b24pOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNj
cmlwdFZhbHVlQXRJbmRleCgKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBX
ZWJTY3JpcHRPYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAg
ICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OnNl
dFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9uTWVz
c2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYlNjcmlw
dE9iamVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3Jp
cHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFS
SUFOVCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFdlYlNjcmlwdE9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBh
cmdzLCBjQXJncywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQsIF9PdXRf
IFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJTY3JpcHRPYmplY3Q6
OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJT
VFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OnJlbW92ZVdl
YlNjcmlwdEtleShuYW1lKTsgCisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQgQlNUUiog
c3RyaW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gV2ViU2NyaXB0T2Jq
ZWN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRl
eCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFSSUFOVCB2
YWwpCisgICAgeworICAgICAgICByZXR1cm4gV2ViU2NyaXB0T2JqZWN0OjpzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBkZXNjcmlwdGlvbikgeyByZXR1cm4gV2ViU2NyaXB0T2JqZWN0OjpzZXRFeGNlcHRpb24oZGVz
Y3JpcHRpb24pOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4
Y2VwdGlvbihfSW5fIEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gV2Vi
U2NyaXB0T2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIH07CiAKIGNs
YXNzIERFQ0xTUEVDX1VVSUQoIjA2MkFFRUUzLTlFNDItNDREQy1BOEE5LTIzNkIyMTZGRTAxMSIp
IERPTU5vZGUgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMgSURPTU5vZGUsIHB1YmxpYyBJRE9N
RXZlbnRUYXJnZXQgewogcHJvdGVjdGVkOgotICAgIERPTU5vZGUoV2ViQ29yZTo6Tm9kZSogbik7
CisgICAgRE9NTm9kZShXZWJDb3JlOjpOb2RlKik7CiAgICAgfkRPTU5vZGUoKTsKIAogcHVibGlj
OgotICAgIHN0YXRpYyBJRE9NTm9kZSogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6Tm9kZSogbik7
CisgICAgc3RhdGljIElET01Ob2RlKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpOb2RlKik7CiAK
IHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0g
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4g
RE9NT2JqZWN0OjpBZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
KSB7IHJldHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9CiAgICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6UmVsZWFzZSgp
OyB9CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZXhj
ZXB0aW9uTWVzc2FnZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQp
IHsgcmV0dXJuIERPTU9iamVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxs
V2ViU2NyaXB0TWV0aG9kKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAg
LyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAotICAgICAgICAvKiBb
aW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdz
LCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlw
dCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJu
IERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSgK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpIHsgcmV0dXJuIERPTU9iamVjdDo6cmVtb3Zl
V2ViU2NyaXB0S2V5KG5hbWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnN0cmlu
Z1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoCi0gICAg
ICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KAotICAgICAgICAvKiBbaW5d
ICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkg
eyByZXR1cm4gRE9NT2JqZWN0OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0
aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTU9i
amVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQotCi0gICAgLy8gSURPTU5vZGUKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldE5vZGVWYWx1ZSgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5vZGUqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwcmV2aW91c1NpYmxpbmcoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TU5vZGUqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBuZXh0U2libGluZygKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoq
IHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0
dHJpYnV0ZXMoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCoq
IHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93
bmVyRG9jdW1lbnQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50Kiog
cmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5z
ZXJ0QmVmb3JlKAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBuZXdDaGlsZCwKLSAgICAg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSogcmVmQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUq
IG5ld0NoaWxkLAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUNoaWxkKAotICAgICAgICAvKiBb
aW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSoqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGFwcGVuZENoaWxkKAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGls
ZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKAotICAgICAgICAvKiBbaW5d
ICovIEJPT0wgZGVlcCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJl
c3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0
aW9uKF9Jbl8gQlNUUiBleGNlcHRpb25NZXNzYWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNz
YWdlLCByZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbm9ybWFsaXplKCB2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZChfSW5fIEJTVFIgbmFtZSwgX19pbl9lY291bnRf
b3B0KGNBcmdzKSBjb25zdCBWQVJJQU5UIGFyZ3NbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5U
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0
TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBmZWF0dXJlLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIgc2NyaXB0
LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0
OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNUUiBuYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOworICAg
IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZml4KAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0
X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAg
ICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZp
eCgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHByZWZpeCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwg
X091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6
d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFS
SUFOVCB2YWwpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVzKAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEV4Y2VwdGlvbihfSW5fIEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKAotICAgICAgICAv
KiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpc0VxdWFsTm9kZSgKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dENvbnRlbnQoCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0
ZXh0KTsKKyAgICAvLyBJRE9NTm9kZQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBub2RlTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKF9Jbl8gQlNU
Uik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVUeXBlKF9PdXRf
IHVuc2lnbmVkIHNob3J0Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHBhcmVudE5vZGUoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcyhfQ09NX091dHB0cl9vcHRfIElET01O
b2RlTGlzdCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RD
aGlsZChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKF9D
T01fT3V0cHRyX29wdF8gSURPTU5vZGUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG5leHRTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoX0NPTV9PdXRwdHJf
b3B0XyBJRE9NTmFtZWROb2RlTWFwKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBvd25lckRvY3VtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTURvY3VtZW50KiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoX0luX29w
dF8gSURPTU5vZGUqIG5ld0NoaWxkLCBfSW5fb3B0XyBJRE9NTm9kZSogcmVmQ2hpbGQsIF9DT01f
T3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoX0luX29wdF8gSURPTU5vZGUqIG5ld0NoaWxkLCBf
SW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGls
ZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUq
KiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRD
aGlsZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXND
aGlsZE5vZGVzKF9PdXRfIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNsb25lTm9kZShCT09MIGRlZXAsIF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3Jt
YWxpemUoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0
ZWQoX0luXyBCU1RSIGZlYXR1cmUsIF9Jbl8gQlNUUiB2ZXJzaW9uLCBfT3V0XyBCT09MKiByZXN1
bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkko
X19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcHJlZml4KF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFByZWZpeChfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyhfT3V0
XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBp
c1NhbWVOb2RlKF9Jbl9vcHRfIElET01Ob2RlKiBvdGhlciwgX091dF8gQk9PTCogcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoX0luX29w
dF8gSURPTU5vZGUqIG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudChfX2RlcmVmX29wdF9vdXQgQlNUUiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudChf
SW5fIEJTVFIpOwogCiAgICAgLy8gSURPTUV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGFkZEV2ZW50TGlzdGVuZXIoCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB0eXBlLAotICAgICAgICAvKiBbaW5dICovIElET01FdmVudExpc3RlbmVyICpsaXN0ZW5l
ciwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIHVzZUNhcHR1cmUpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVFdmVudExpc3RlbmVyKAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgdHlwZSwKLSAgICAgICAgLyogW2luXSAqLyBJRE9NRXZlbnRMaXN0
ZW5lciAqbGlzdGVuZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCB1c2VDYXB0dXJlKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlzcGF0Y2hFdmVudCgK
LSAgICAgICAgLyogW2luXSAqLyBJRE9NRXZlbnQgKmV2dCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBhZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRM
aXN0ZW5lciosIEJPT0wgdXNlQ2FwdHVyZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElE
T01FdmVudExpc3RlbmVyKiwgQk9PTCB1c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlzcGF0Y2hFdmVudChfSW5fb3B0XyBJRE9NRXZlbnQqLCBfT3V0
XyBCT09MKiByZXN1bHQpOwogCiAgICAgLy8gRE9NTm9kZQogICAgIFdlYkNvcmU6Ok5vZGUqIG5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkNvcmU6
Ok5vZGUqIG1fbm9kZTsKKyAgICBXZWJDb3JlOjpOb2RlKiBtX25vZGUgeyBudWxscHRyIH07CiB9
OwogCiBjbGFzcyBET01Ob2RlTGlzdCA6IHB1YmxpYyBET01PYmplY3QsIHB1YmxpYyBJRE9NTm9k
ZUxpc3QgewpAQCAtMjU1LDUyICsxOTYsNTcgQEAgcHVibGljOgogCiBwdWJsaWM6CiAgICAgLy8g
SVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6QWRkUmVm
KCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkgeyByZXR1cm4gRE9NT2Jq
ZWN0OjpBZGRSZWYoKTsgfQogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVs
ZWFzZSh2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdl
YlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJv
d0V4Y2VwdGlvbigKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01PYmpl
Y3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCgK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lzXVtpbl0g
Ki8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3Ms
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBE
T01PYmplY3Q6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVX
ZWJTY3JpcHQoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmV2YWx1
YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBuYW1lKSB7IHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1l
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdS
ZXByZXNlbnRhdGlvbigKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdS
ZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NT2JqZWN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbihz
dHJpbmdSZXByZXNlbnRhdGlvbik7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KAotICAgICAgICAvKiBbaW5dICovIHVu
c2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dFdlYlNjcmlwdFZhbHVlQXRJbmRleCgKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQg
aW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERPTU9iamVj
dDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNUUiBleGNlcHRp
b25NZXNzYWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
T2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlw
dE1ldGhvZChfSW5fIEJTVFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJ
QU5UIGFyZ3NbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNB
cmdzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFO
VCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJT
Y3JpcHQoc2NyaXB0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNUUiBuYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOwor
ICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhj
ZXB0aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERP
TU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQg
QlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2Jq
ZWN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFSSUFOVCB2YWwpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
aW5kZXgsIHZhbCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRFeGNlcHRpb24oX0luXyBCU1RSIGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICB9CiAK
ICAgICAvLyBJRE9NTm9kZUxpc3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXRlbSgKLSAgICAgICAgLyogW2luXSAqLyBVSU5UIGluZGV4LAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IFVJTlQqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGl0
ZW0oVUlOVCBpbmRleCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxlbmd0aChfT3V0XyBVSU5UKiByZXN1
bHQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViQ29yZTo6Tm9kZUxpc3QqIG1fbm9kZUxpc3Q7Cisg
ICAgV2ViQ29yZTo6Tm9kZUxpc3QqIG1fbm9kZUxpc3QgeyBudWxscHRyIH07CiB9OwogCiBjbGFz
cyBET01Eb2N1bWVudCA6IHB1YmxpYyBET01Ob2RlLCBwdWJsaWMgSURPTURvY3VtZW50LCBwdWJs
aWMgSURPTVZpZXdDU1MsIHB1YmxpYyBJRE9NRG9jdW1lbnRFdmVudCB7CkBAIC0zMTMsMjIwICsy
NTksMjIxIEBAIHB1YmxpYzoKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFk
ZFJlZih2b2lkKSB7IHJldHVybiBET01Ob2RlOjpBZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBBZGRSZWYoKSB7IHJldHVybiBET01Ob2RlOjpBZGRSZWYoKTsgfQogICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01O
b2RlOjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3JpcHRPYmplY3QKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9u
TWVzc2FnZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZSwKLSAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAot
ICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNhbGxXZWJTY3JpcHRNZXRob2Qo
bmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2Ny
aXB0S2V5KAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NTm9kZTo6
cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01Ob2RlOjpz
dHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KAot
ICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OndlYlNjcmlwdFZh
bHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoCi0gICAgICAgIC8qIFtp
bl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFs
KSB7IHJldHVybiBET01Ob2RlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24o
X0luXyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01Ob2RlOjp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCBy
ZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0RXhjZXB0aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsg
cmV0dXJuIERPTU5vZGU6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KLQotICAgIC8vIElE
T01Ob2RlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9k
ZTo6bm9kZU5hbWUocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiBuYW1lLCBfX2luX2Vjb3VudF9vcHQo
Y0FyZ3MpIGNvbnN0IFZBUklBTlQgYXJnc1tdLCBpbnQgY0FyZ3MsIF9PdXRfIFZBUklBTlQqIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpjYWxsV2ViU2NyaXB0TWV0aG9k
KG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlw
dCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6
OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CiAgICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSgKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVWYWx1ZShy
ZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdl
YlNjcmlwdEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2Rl
OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9NTm9kZTo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihf
X2RlcmVmX29wdF9vdXQgQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NTm9kZTo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRp
b24pOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bm9kZVR5cGUoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZVR5cGUocmVzdWx0KTsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQg
aW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01O
b2RlOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7CisgICAgfQogICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJlbnROb2RlKAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpwYXJlbnROb2RlKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZh
bCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5k
ZXgoaW5kZXgsIHZhbCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjaGlsZE5vZGVzKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlTGlzdCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2hpbGROb2RlcyhyZXN1bHQpOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5f
IEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6c2V0RXhj
ZXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICB9CisKKyAgICAvLyBJRE9NTm9kZQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZShfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6Om5vZGVOYW1lKHJlc3Vs
dCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBm
aXJzdENoaWxkKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpmaXJzdENoaWxkKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKF9fZGVyZWZfb3B0X291dCBCU1RSKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6bm9kZVZhbHVlKHJlc3VsdCk7
CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0
Q2hpbGQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsg
cmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZShfSW5fIEJTVFIgdmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NTm9kZTo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsKKyAgICB9CiAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZygK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6cHJldmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoX091dF8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpub2RlVHlwZShyZXN1bHQpOworICAgIH0K
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmco
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJu
IERPTU5vZGU6Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OnBhcmVudE5vZGUocmVzdWx0KTsK
KyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJp
YnV0ZXMoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCoqIHJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXR0cmlidXRlcyhyZXN1bHQpOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMoX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NTm9kZUxpc3QqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6Y2hp
bGROb2RlcyhyZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NRG9jdW1lbnQqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om93bmVyRG9jdW1lbnQocmVz
dWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxk
KF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NTm9kZTo6Zmlyc3RDaGlsZChyZXN1bHQpOyAKKyAgICB9CiAgICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZSgKLSAgICAgICAgLyogW2lu
XSAqLyBJRE9NTm9kZSogbmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIHJl
ZkNoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQp
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZChfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOyAKKyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGlsZCgKLSAgICAgICAgLyogW2luXSAqLyBJ
RE9NTm9kZSogbmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG9sZENoaWxk
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyhfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TU5vZGU6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoCi0gICAgICAgIC8qIFtpbl0g
Ki8gSURPTU5vZGUqIG9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVz
dWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0U2libGlu
ZyhfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTU5vZGU6Om5leHRTaWJsaW5nKHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCgKLSAgICAgICAgLyogW2lu
XSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmFwcGVuZENoaWxkKG9sZENoaWxkLCBy
ZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0
ZXMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTmFtZWROb2RlTWFwKiogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTU5vZGU6OmF0dHJpYnV0ZXMocmVzdWx0KTsKKyAgICB9CiAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpo
YXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgb3duZXJEb2N1bWVudChfQ09NX091dHB0cl9vcHRfIElET01Eb2N1bWVudCoqIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpvd25lckRvY3VtZW50KHJlc3VsdCk7
IAorICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xv
bmVOb2RlKAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2xvbmVOb2Rl
KGRlZXAsIHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aW5zZXJ0QmVmb3JlKF9Jbl9vcHRfIElET01Ob2RlKiBuZXdDaGlsZCwgX0luX29wdF8gSURPTU5v
ZGUqIHJlZkNoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTU5vZGU6Omluc2VydEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQs
IHJlc3VsdCk7IAorICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbm9ybWFsaXplKCB2b2lkKSB7IHJldHVybiBET01Ob2RlOjpub3JtYWxpemUoKTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoX0luX29w
dF8gSURPTU5vZGUqIG5ld0NoaWxkLCBfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01f
T3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
Tm9kZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgCisgICAgfQog
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCgK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIGZlYXR1cmUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB2ZXJzaW9uLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZChfSW5fb3B0
XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQsIHJl
c3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBuYW1lc3BhY2VVUkkoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpuYW1lc3BhY2VVUkkocmVzdWx0KTsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZChfSW5fb3B0XyBJRE9NTm9kZSog
b2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NTm9kZTo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAg
fQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmVmaXgoCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpwcmVmaXgocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYXNDaGlsZE5vZGVzKF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01Ob2RlOjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBwcmVmaXgpIHsgcmV0dXJuIERPTU5vZGU6OnNldFByZWZpeChwcmVmaXgpOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZShCT09MIGRlZXAs
IF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NTm9kZTo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IAorICAgIH0KICAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1l
KHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFs
aXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpub3JtYWxpemUoKTsKKyAgICB9
CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0
ZXMoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoX0luXyBCU1RSIGZlYXR1cmUsIF9Jbl8gQlNUUiB2
ZXJzaW9uLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9k
ZTo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsKKyAgICB9CiAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSgKLSAgICAgICAgLyog
W2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1NhbWVOb2RlKG90aGVyLCByZXN1bHQpOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSShfX2Rl
cmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6
Om5hbWVzcGFjZVVSSShyZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUqIG90aGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6aXNFcXVhbE5vZGUob3RoZXIsIHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZml4KF9fZGVyZWZfb3B0X291dCBCU1RSKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7Cisg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29u
dGVudCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJu
IERPTU5vZGU6OnRleHRDb250ZW50KHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KF9Jbl8gQlNUUiBwcmVmaXgpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NTm9kZTo6c2V0UHJlZml4KHByZWZpeCk7CisgICAgfQogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCgKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTU5vZGU6OnNldFRleHRDb250ZW50KHRl
eHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZShf
X2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5v
ZGU6OmxvY2FsTmFtZShyZXN1bHQpOworICAgIH0KICAgICAKLSAgICAvLyBJRE9NRG9jdW1lbnQK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9jdHlwZSgKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnRUeXBlKiogcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyhfT3V0XyBCT09MKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6aGFzQXR0cmlidXRlcyhyZXN1
bHQpOworICAgIH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1Nh
bWVOb2RlKF9Jbl9vcHRfIElET01Ob2RlKiBvdGhlciwgX091dF8gQk9PTCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7Cisg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbXBsZW1l
bnRhdGlvbigKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NSW1wbGVtZW50YXRpb24q
KiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFs
Tm9kZShfSW5fb3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01Ob2RlOjppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsKKyAg
ICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRvY3VtZW50
RWxlbWVudCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCoqIHJlc3Vs
dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRleHRDb250ZW50KF9f
ZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9k
ZTo6dGV4dENvbnRlbnQocmVzdWx0KTsKKyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUVsZW1lbnQoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0YWdOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbGVtZW50KiogcmVz
dWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1l
bnRGcmFnbWVudCoqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNyZWF0ZVRleHROb2RlKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGF0YSwK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NVGV4dCoqIHJlc3VsdCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUNvbW1lbnQoCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBkYXRhLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Db21tZW50KiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY3JlYXRlQ0RBVEFTZWN0aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGF0
YSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ0RBVEFTZWN0aW9uKiogcmVzdWx0
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGFyZ2V0LAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZGF0YSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlQXR0cmlidXRlKAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIHJl
c3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0
ZUVudGl0eVJlZmVyZW5jZSgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVudGl0eVJlZmVyZW5jZSoqIHJlc3VsdCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdO
YW1lKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGFnTmFtZSwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbXBvcnROb2RlKAotICAgICAgICAvKiBbaW5dICovIElE
T01Ob2RlKiBpbXBvcnRlZE5vZGUsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRWxlbWVudE5TKAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
cXVhbGlmaWVkTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCoq
IHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNy
ZWF0ZUF0dHJpYnV0ZU5TKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgcXVhbGlmaWVkTmFtZSwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NQXR0cioqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5h
bWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0KiogcmVzdWx0KTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudEJ5
SWQoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBlbGVtZW50SWQsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTUVsZW1lbnQqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudChfSW5fIEJTVFIgdGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01Ob2RlOjpzZXRUZXh0Q29udGVudCh0ZXh0KTsKKyAgICB9CisgICAg
CisgICAgLy8gSURPTURvY3VtZW50CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRvY3R5cGUoX0NPTV9PdXRwdHJfb3B0XyBJRE9NRG9jdW1lbnRUeXBlKiopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbXBsZW1lbnRhdGlvbihfQ09NX091dHB0
cl9vcHRfIElET01JbXBsZW1lbnRhdGlvbioqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZG9jdW1lbnRFbGVtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQq
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUVsZW1lbnQo
X0luXyBCU1RSIHRhZ05hbWUsIF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQqKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
X0NPTV9PdXRwdHJfb3B0XyBJRE9NRG9jdW1lbnRGcmFnbWVudCoqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlVGV4dE5vZGUoX0luXyBCU1RSIGRhdGEsIF9D
T01fT3V0cHRyX29wdF8gSURPTVRleHQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNyZWF0ZUNvbW1lbnQoX0luXyBCU1RSIGRhdGEsIF9DT01fT3V0cHRyX29wdF8g
SURPTUNvbW1lbnQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNy
ZWF0ZUNEQVRBU2VjdGlvbihfSW5fIEJTVFIgZGF0YSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQ0RB
VEFTZWN0aW9uKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVh
dGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oX0luXyBCU1RSIHRhcmdldCwgX0luXyBCU1RSIGRhdGEs
IF9DT01fT3V0cHRyX29wdF8gSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbioqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlQXR0cmlidXRlKF9Jbl8gQlNUUiBu
YW1lLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoX0luXyBCU1RSIG5hbWUsIF9D
T01fT3V0cHRyX29wdF8gSURPTUVudGl0eVJlZmVyZW5jZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWUoX0luXyBCU1RSIHRhZ05h
bWUsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVMaXN0KiopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpbXBvcnROb2RlKF9Jbl9vcHRfIElET01Ob2RlKiBpbXBvcnRl
ZE5vZGUsIEJPT0wgZGVlcCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRWxlbWVudE5TKF9Jbl8gQlNUUiBu
YW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBxdWFsaWZpZWROYW1lLCBfQ09NX091dHB0cl9vcHRfIElE
T01FbGVtZW50KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVh
dGVBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgcXVhbGlmaWVk
TmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhfSW5fIEJTVFIgbmFtZXNw
YWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlz
dCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudEJ5
SWQoX0luXyBCU1RSIGVsZW1lbnRJZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NRWxlbWVudCoqKTsK
IAogICAgIC8vIElET01WaWV3Q1NTCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdldENvbXB1dGVkU3R5bGUoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqIGVs
dCwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHBzZXVkb0VsdCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioqIHJlc3VsdCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldENvbXB1dGVkU3R5bGUoX0luX29wdF8gSURP
TUVsZW1lbnQqIGVsdCwgX0luXyBCU1RSIHBzZXVkb0VsdCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbioqKTsKIAogICAgIC8vIElET01Eb2N1bWVudEV2ZW50Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUV2ZW50KAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgZXZlbnRUeXBlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01FdmVudCoqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNyZWF0ZUV2ZW50KF9Jbl8gQlNUUiBldmVudFR5cGUsIF9DT01fT3V0cHRyX29wdF8gSURPTUV2
ZW50KiopOwogCiAgICAgLy8gRE9NRG9jdW1lbnQKICAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9j
dW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CkBAIC01NDUsNzEgKzQ5Miw1OCBAQCBwdWJs
aWM6CiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVj
dCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyBy
ZXR1cm4gRE9NT2JqZWN0OjpBZGRSZWYoKTsgfQotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OlJlbGVhc2UoKTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSB7IHJldHVybiBET01PYmplY3Q6OkFk
ZFJlZigpOyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCkg
eyByZXR1cm4gRE9NT2JqZWN0OjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3JpcHRPYmpl
Y3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24o
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4
Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZB
UklBTlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojpj
YWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0ZVdlYlNjcmlw
dChzY3JpcHQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZSkgeyByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRp
b24oCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRp
b24pIHsgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVz
ZW50YXRpb24pOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlNjcmlwdFZhbHVlQXRJbmRleCgKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQg
aW5kZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJl
dHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAg
ICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNj
cmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRp
b24pOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9jdW1lbnQo
Ci0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSURPTURvY3VtZW50KiopOwotCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldENvbXB1dGVkU3R5bGUoCi0gICAgICAg
IC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqLCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSKTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRNYXRjaGVkQ1NTUnVsZXMo
Ci0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqLCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSLCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MLCAKLSAgICAgICAgLyogW291dCwgcmV0dmFs
XSAqLyBJRE9NQ1NTUnVsZUxpc3QqKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGV2aWNlUGl4ZWxSYXRpbygKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBk
b3VibGUqKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRFdmVu
dExpc3RlbmVyKAotICAgICAgICAvKiBbaW5dICovIEJTVFIsCi0gICAgICAgIC8qIFtpbl0gKi8g
SURPTUV2ZW50TGlzdGVuZXIgKiwKLSAgICAgICAgLyogW2luXSAqLyBCT09MKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlRXZlbnRMaXN0ZW5lcigK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSLAotICAgICAgICAvKiBbaW5dICovIElET01FdmVudExp
c3RlbmVyICosCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpc3BhdGNoRXZlbnQoCi0gICAgICAgIC8qIFtpbl0g
Ki8gSURPTUV2ZW50ICosCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oX0luXyBC
U1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
YWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiBuYW1lLCBfX2luX2Vjb3VudF9vcHQoY0FyZ3Mp
IGNvbnN0IFZBUklBTlQgYXJnc1tdLCBpbnQgY0FyZ3MsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFt
ZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIgc2NyaXB0LCBf
T3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojpl
dmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoX0luXyBCU1RS
IG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRL
ZXkobmFtZSk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVw
cmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2ln
bmVkIGluZGV4LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIFZBUklBTlQgdmFsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTU9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhj
ZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01P
YmplY3Q6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7CisgICAgfQorCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRvY3VtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTURv
Y3VtZW50KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRDb21w
dXRlZFN0eWxlKF9Jbl9vcHRfIElET01FbGVtZW50KiwgX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0TWF0Y2hlZENTU1J1bGVzKF9Jbl9vcHRfIElE
T01FbGVtZW50KiwgX0luXyBCU1RSLCBCT09MLCBfQ09NX091dHB0cl9vcHRfIElET01DU1NSdWxl
TGlzdCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGV2aWNlUGl4
ZWxSYXRpbyhfT3V0XyBkb3VibGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgYWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIsIF9Jbl9vcHRfIElET01FdmVudExpc3Rl
bmVyKiwgQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92
ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lciosIEJP
T0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXNwYXRjaEV2ZW50
KF9Jbl9vcHRfIElET01FdmVudCAqLCBfT3V0XyBCT09MKik7CiAKICAgICAvLyBET01XaW5kb3cK
ICAgICBXZWJDb3JlOjpET01XaW5kb3cqIHdpbmRvdygpIHsgcmV0dXJuIG1fd2luZG93OyB9CkBA
IC02MjksMjk1ICs1NjMsMjUwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSURPTUVsZW1lbnQqIGNy
ZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkVsZW1lbnQqIGUpOwogCiAgICAgLy8gSVVua25vd24KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlE
IHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OkFkZFJlZigpOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTU5vZGU6OkFkZFJlZigpOyB9
CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0
dXJuIERPTU5vZGU6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbigKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0aHJvd0V4Y2VwdGlvbihl
eGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJn
c1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2FsbFdlYlNjcmlw
dE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIHNjcmlwdCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5U
KiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVXZWJTY3JpcHRLZXkoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBE
T01Ob2RlOjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERP
TU5vZGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0
SW5kZXgoCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6d2Vi
U2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCgKLSAgICAg
ICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFS
SUFOVCB2YWwpIHsgcmV0dXJuIERPTU5vZGU6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRl
eCwgdmFsKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4
Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1l
c3NhZ2UsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiBuYW1lLCBfX2luX2Vjb3Vu
dF9vcHQoY0FyZ3MpIGNvbnN0IFZBUklBTlQgYXJnc1tdLCBpbnQgY0FyZ3MsIF9PdXRfIFZBUklB
TlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpjYWxsV2ViU2NyaXB0
TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTU5vZGU6OnNldEV4Y2VwdGlvbihk
ZXNjcmlwdGlvbik7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZh
bHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01Ob2RlOjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IAorICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24o
X19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU5vZGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0
aW9uKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgX091dF8gVkFSSUFOVCogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OndlYlNjcmlwdFZhbHVlQXRJbmRl
eChpbmRleCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFS
SUFOVCB2YWwpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6c2V0V2ViU2NyaXB0VmFs
dWVBdEluZGV4KGluZGV4LCB2YWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlwdGlvbikKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOwor
ICAgIH0KIAogICAgIC8vIElET01Ob2RlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIG5vZGVOYW1lKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3Vs
dCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZU5hbWUocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6Om5vZGVOYW1lKHJlc3VsdCk7Cisg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVmFs
dWUoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjpub2RlVmFsdWUocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBub2RlVmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01Ob2RlOjpub2RlVmFsdWUocmVzdWx0KTsKKyAgICB9CiAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZSgKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01Ob2RlOjpzZXROb2RlVmFs
dWUodmFsdWUpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5v
ZGVWYWx1ZShfSW5fIEJTVFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6
c2V0Tm9kZVZhbHVlKHZhbHVlKTsKKyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG5vZGVUeXBlKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVu
c2lnbmVkIHNob3J0KiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVUeXBlKHJlc3VsdCk7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoX091dF8g
dW5zaWduZWQgc2hvcnQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpu
b2RlVHlwZShyZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cGFyZW50Tm9kZShyZXN1bHQpOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoX0NPTV9PdXRw
dHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2Rl
OjpwYXJlbnROb2RlKHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Ob2RlTGlzdCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2hpbGROb2RlcyhyZXN1
bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMo
X0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NTm9kZTo6Y2hpbGROb2RlcyhyZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZCgKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Zmlyc3RD
aGlsZChyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZp
cnN0Q2hpbGQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01Ob2RlOjpmaXJzdENoaWxkKHJlc3VsdCk7CisgICAgfQogICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omxh
c3RDaGlsZChyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGxhc3RDaGlsZChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOworICAgIH0KICAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBwcmV2aW91c1NpYmxpbmcoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpwcmV2aW91c1NpYmxpbmco
cmVzdWx0KTsKKyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG5leHRTaWJsaW5nKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiog
cmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpuZXh0U2libGluZyhyZXN1bHQpOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKF9DT01fT3V0cHRyX29w
dF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6bmV4
dFNpYmxpbmcocmVzdWx0KTsKKyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TU5hbWVkTm9kZU1hcCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXR0cmlidXRlcyhyZXN1
bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMo
X0NPTV9PdXRwdHJfb3B0XyBJRE9NTmFtZWROb2RlTWFwKiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU5vZGU6OmF0dHJpYnV0ZXMocmVzdWx0KTsKKyAgICB9CiAgICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50KiogcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudChfQ09NX091dHB0cl9vcHRfIElET01Eb2N1bWVudCoq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Ob2RlOjpvd25lckRvY3VtZW50KHJl
c3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpbnNlcnRCZWZvcmUoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG5ld0NoaWxkLAot
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiByZWZDaGlsZCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aW5zZXJ0QmVm
b3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoX0luX29wdF8gSURPTU5vZGUqIG5ld0NoaWxk
LCBfSW5fb3B0XyAgSURPTU5vZGUqIHJlZkNoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2Rl
KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6Omluc2VydEJlZm9yZShu
ZXdDaGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoCi0gICAgICAgIC8qIFtpbl0gKi8g
SURPTU5vZGUqIG5ld0NoaWxkLAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGls
ZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1
cm4gRE9NTm9kZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoX0luX29w
dF8gIElET01Ob2RlKiBuZXdDaGlsZCwgX0luX29wdF8gIElET01Ob2RlKiBvbGRDaGlsZCwgX0NP
TV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01Ob2RlOjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOworICAgIH0K
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQo
Ci0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG9sZENoaWxkLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpyZW1vdmVD
aGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSByZW1vdmVDaGlsZChfSW5fb3B0XyAgSURPTU5vZGUqIG9sZENoaWxkLCBfQ09NX091
dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5v
ZGU6OnJlbW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOworICAgIH0KICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQoCi0gICAgICAgIC8qIFtp
bl0gKi8gSURPTU5vZGUqIG9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphcHBlbmRDaGlsZChvbGRDaGlsZCwg
cmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRD
aGlsZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6YXBwZW5kQ2hpbGQo
b2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVzKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoX091
dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6Omhhc0NoaWxk
Tm9kZXMocmVzdWx0KTsKKyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNsb25lTm9kZSgKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGRlZXAsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OmNsb25lTm9kZShkZWVwLCByZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNsb25lTm9kZShCT09MIGRlZXAsIF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6Y2xvbmVOb2RlKGRl
ZXAsIHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBub3JtYWxpemUoIHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6Om5vcm1hbGl6ZSgpOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vcm1hbGl6ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NTm9kZTo6bm9ybWFsaXplKCk7CisgICAgfQogICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCgKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIGZlYXR1cmUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2ZXJzaW9u
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZChfSW5fIEJTVFIgZmVhdHVy
ZSwgX0luXyAgQlNUUiB2ZXJzaW9uLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NTm9kZTo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsK
KyAgICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVz
cGFjZVVSSSgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0
dXJuIERPTU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1bHQp
OworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJl
Zml4KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcHJlZml4KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7CisgICAgfQogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBwcmVmaXgpIHsgcmV0dXJuIERPTU5vZGU6OnNldFByZWZpeChwcmVmaXgpOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZpeChfSW5fIEJT
VFIgcHJlZml4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OnNldFByZWZpeChwcmVm
aXgpOworICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bG9jYWxOYW1lKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7CisgICAg
fQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1
dGVzKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6aGFzQXR0cmlidXRlcyhyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTU5vZGU6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsKKyAgICB9CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSgKLSAgICAg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1NhbWVOb2RlKG90aGVyLCByZXN1
bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUo
X0luX29wdF8gSURPTU5vZGUqIG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NTm9kZTo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0KTsKKyAgICB9CiAg
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1YWxOb2RlKAot
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzRXF1YWxOb2RlKG90aGVy
LCByZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1
YWxOb2RlKF9Jbl9vcHRfIElET01Ob2RlKiBvdGhlciwgX091dF8gQk9PTCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OmlzRXF1YWxOb2RlKG90aGVyLCByZXN1bHQpOwor
ICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dENv
bnRlbnQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjp0ZXh0Q29udGVudChyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHRleHRDb250ZW50KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NTm9kZTo6dGV4dENvbnRlbnQocmVzdWx0KTsKKyAg
ICB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRD
b250ZW50KAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NTm9kZTo6
c2V0VGV4dENvbnRlbnQodGV4dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0VGV4dENvbnRlbnQoX0luXyBCU1RSIHRleHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQodGV4dCk7CisgICAgfQogICAgIAogICAgIC8vIElE
T01FbGVtZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhZ05hbWUo
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlKAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBy
ZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRB
dHRyaWJ1dGUoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdmFsdWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVBdHRyaWJ1dGUoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9k
ZSgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUF0dHIqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOb2RlKAotICAgICAgICAvKiBbaW5dICovIElET01B
dHRyICpuZXdBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogcmVz
dWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3Zl
QXR0cmlidXRlTm9kZSgKLSAgICAgICAgLyogW2luXSAqLyBJRE9NQXR0ciAqb2xkQXR0ciwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIHJlc3VsdCk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lKAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOUygKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5h
bWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOUygKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmllZE5h
bWUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5TKAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxO
YW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0
cmlidXRlTm9kZU5TKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01BdHRyKiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZU5TKAotICAgICAgICAvKiBbaW5dICovIElET01B
dHRyICpuZXdBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogcmVz
dWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxl
bWVudHNCeVRhZ05hbWVOUygKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGUoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBuYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZU5TKAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgbG9jYWxOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXMoIHZvaWQp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBibHVyKCB2b2lk
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFnTmFtZShfX2RlcmVm
X29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBn
ZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoX0lu
XyBCU1RSIG5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZShfSW5fIEJTVFIgbmFtZSk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5vZGUoX0luXyBCU1RSIG5h
bWUsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIqIG5ld0F0
dHIsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIqIG9s
ZEF0dHIsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lKF9Jbl8gQlNUUiBuYW1lLCBf
Q09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0lu
XyBCU1RSIGxvY2FsTmFtZSwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBu
YW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBxdWFsaWZpZWROYW1lLCBfSW5fIEJTVFIgdmFsdWUpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOUyhf
SW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9kZU5TKF9Jbl8gQlNUUiBu
YW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0
dHIqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0
ZU5vZGVOUyhfSW5fb3B0XyBJRE9NQXR0ciosIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdO
YW1lTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX0NPTV9P
dXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGhhc0F0dHJpYnV0ZShfSW5fIEJTVFIgbmFtZSwgX091dF8gQk9PTCogcmVzdWx0
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlTlMo
X0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX091dF8gQk9PTCog
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXMoKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmx1cigpOwogCiAgICAgLy8g
SURPTU5vZGVFeHRlbnNpb25zCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGJvdW5kaW5nQm94KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIExQUkVDVCByZWN0KTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGluZUJveFJlY3Rz
KAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIFJFQ1QqIHJlY3RzLAotICAgICAgICAvKiBb
aW5dICovIGludCBjUmVjdHMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBib3VuZGluZ0JveChfT3V0XyBMUFJFQ1QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBsaW5lQm94UmVjdHMoX19pbm91dF9lY291bnRfZnVsbChjUmVjdHMpIFJFQ1Qq
LCBpbnQgY1JlY3RzKTsKIAogICAgIC8vIElET01FbGVtZW50UHJpdmF0ZQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3JlRWxlbWVudCgKLSAgICAgICAgdm9pZCoqIGVs
ZW1lbnQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1YWwo
Ci0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqIG90aGVyLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaXNGb2N1c2VkKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5uZXJU
ZXh0KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7Ci0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9udCgKLSAgICAgICAgV2ViRm9udERl
c2NyaXB0aW9uKiB3ZWJGb250RGVzY3JpcHRpb24pOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbmRlcmVkSW1hZ2UoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSEJJVE1BUCogaW1hZ2UpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG1hcmtlclRleHRGb3JMaXN0SXRlbSgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiBtYXJrZXJUZXh0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzaGFkb3dQc2V1ZG9JZCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1
bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3JlRWxlbWVudChf
X2RlcmVmX29wdF9vdXQgdm9pZCoqIGVsZW1lbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc0VxdWFsKF9Jbl9vcHRfIElET01FbGVtZW50KiBvdGhlciwgX091dF8g
Qk9PTCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNG
b2N1c2VkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaW5uZXJUZXh0KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb250KF9PdXRfIFdlYkZvbnREZXNjcmlwdGlvbiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW5kZXJlZEltYWdlKF9f
ZGVyZWZfb3B0X291dCBIQklUTUFQKiBpbWFnZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIG1hcmtlclRleHRGb3JMaXN0SXRlbShfX2RlcmVmX29wdF9vdXQgQlNUUiog
bWFya2VyVGV4dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNoYWRv
d1BzZXVkb0lkKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOwogCiAgICAgLy8gSURPTUVs
ZW1lbnRDU1NJbmxpbmVTdHlsZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdHlsZSgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbioqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0
eWxlKF9DT01fT3V0cHRyX29wdF8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qKik7CiAKICAgICAv
LyBJRE9NRWxlbWVudEV4dGVuc2lvbnMKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgb2Zmc2V0TGVmdCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldFRv
cCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldFdpZHRoKAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgb2Zmc2V0SGVpZ2h0KAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIGludCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgb2Zmc2V0UGFyZW50KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01F
bGVtZW50KiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY2xpZW50V2lkdGgoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGllbnRI
ZWlnaHQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxMZWZ0KAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2Nyb2xsTGVmdCgKLSAgICAgICAgLyogW2luXSAq
LyBpbnQgbmV3U2Nyb2xsTGVmdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNjcm9sbFRvcCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJl
c3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNj
cm9sbFRvcCgKLSAgICAgICAgLyogW2luXSAqLyBpbnQgbmV3U2Nyb2xsVG9wKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsV2lkdGgoCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxIZWlnaHQoCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gaW50KiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzY3JvbGxJbnRvVmlldygKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGFsaWdu
V2l0aFRvcCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQoCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjZW50ZXJJZk5l
ZWRlZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldExlZnQo
X091dF8gaW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNl
dFRvcChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
b2Zmc2V0V2lkdGgoX091dF8gaW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIG9mZnNldEhlaWdodChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgb2Zmc2V0UGFyZW50KF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQq
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsaWVudFdpZHRoKF9P
dXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGllbnRI
ZWlnaHQoX091dF8gaW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNjcm9sbExlZnQoX091dF8gaW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldFNjcm9sbExlZnQoaW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2Nyb2xsVG9wKF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRTY3JvbGxUb3AoaW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2Nyb2xsV2lkdGgoX091dF8gaW50Kik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNjcm9sbEhlaWdodChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsSW50b1ZpZXcoQk9PTCBhbGlnbldp
dGhUb3ApOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKEJPT0wgY2VudGVySWZOZWVkZWQpOwogCiAgICAgLy8gRE9NRWxlbWVudAog
ICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KQEAg
LTkzNiwzNyArODI1LDM3IEBAIHB1YmxpYzoKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJ
RCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERP
TU9iamVjdDo6UmVsZWFzZSgpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigp
IHsgcmV0dXJuIERPTU9iamVjdDo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2UoKSB7IHJldHVybiBET01PYmplY3Q6OlJlbGVhc2UoKTsgfQog
CiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIEJPT0wqIHJlc3Vs
dCkKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24o
X0luXyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2Us
IHJlc3VsdCk7CiAgICAgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNhbGxXZWJTY3JpcHRNZXRob2QoQlNUUiBuYW1lLCBjb25zdCBWQVJJQU5UIGFyZ3NbXSwgaW50
IGNBcmdzLCBWQVJJQU5UKiByZXN1bHQpCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29w
dChjQXJncykgY29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCog
cmVzdWx0KQogICAgIHsKICAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1l
dGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoQlNUUiBzY3JpcHQsIFZB
UklBTlQqIHJlc3VsdCkKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZh
bHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0
LCByZXN1bHQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVXZWJTY3JpcHRLZXkoQlNUUiBuYW1lKQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoX0luXyBCU1RSIG5hbWUpCiAgICAgewog
ICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQgQlNU
Uiogc3RyaW5nUmVwcmVzZW50YXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gRE9NT2JqZWN0
OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRl
eCh1bnNpZ25lZCBpbmRleCwgVkFSSUFOVCogcmVzdWx0KQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9P
dXRfIFZBUklBTlQqIHJlc3VsdCkKICAgICB7CiAgICAgICAgIHJldHVybiBET01PYmplY3Q6Ondl
YlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsKICAgICB9CkBAIC05NzYsMzQgKzg2
NSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZh
bHVlQXRJbmRleChpbmRleCwgdmFsKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKEJTVFIgZGVzY3JpcHRpb24pCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5fIEJTVFIgZGVzY3Jp
cHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24oZGVz
Y3JpcHRpb24pOwogICAgIH0KIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdGFydENvbnRhaW5lcihJRE9NTm9kZSoqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc3RhcnRPZmZzZXQoaW50Kik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGVuZENvbnRhaW5lcihJRE9NTm9kZSoqKTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZW5kT2Zmc2V0KGludCopOwotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjb2xsYXBzZWQoQk9PTCopOwotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjb21tb25BbmNlc3RvckNvbnRhaW5lcihJRE9NTm9kZSoqKTsK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhcnQoSURPTU5vZGUq
LCBpbnQgb2Zmc2V0KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
RW5kKElET01Ob2RlKiwgaW50IG9mZnNldCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFN0YXJ0QmVmb3JlKElET01Ob2RlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFN0YXJ0QWZ0ZXIoSURPTU5vZGUqKTsKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RW5kQmVmb3JlKElET01Ob2RlKik7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEVuZEFmdGVyKElET01Ob2RlKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0YXJ0Q29udGFpbmVyKF9D
T01fT3V0cHRyX29wdF8gSURPTU5vZGUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHN0YXJ0T2Zmc2V0KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBlbmRDb250YWluZXIoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZW5kT2Zmc2V0KF9PdXRf
IGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb2xsYXBzZWQo
X091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb21t
b25BbmNlc3RvckNvbnRhaW5lcihfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTdGFydChfSW5fb3B0XyBJRE9NTm9k
ZSosIGludCBvZmZzZXQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRFbmQoX0luX29wdF8gSURPTU5vZGUqLCBpbnQgb2Zmc2V0KTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhcnRCZWZvcmUoX0luX29wdF8gSURPTU5vZGUqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhcnRBZnRlcihfSW5f
b3B0XyBJRE9NTm9kZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRFbmRCZWZvcmUoX0luX29wdF8gSURPTU5vZGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RW5kQWZ0ZXIoX0luX29wdF8gSURPTU5vZGUqKTsKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29sbGFwc2UoQk9PTCk7Ci0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVjdE5vZGUoSURPTU5vZGUqKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VsZWN0Tm9kZUNvbnRlbnRzKElET01O
b2RlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbXBhcmVCb3Vu
ZGFyeVBvaW50cyh1bnNpZ25lZCBzaG9ydCBob3csIElET01SYW5nZSogc291cmNlUmFuZ2UpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWxlY3ROb2RlKF9Jbl9vcHRf
IElET01Ob2RlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVj
dE5vZGVDb250ZW50cyhfSW5fb3B0XyBJRE9NTm9kZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjb21wYXJlQm91bmRhcnlQb2ludHModW5zaWduZWQgc2hvcnQgaG93
LCBfSW5fb3B0XyBJRE9NUmFuZ2UqIHNvdXJjZVJhbmdlKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlQ29udGVudHMoKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZXh0cmFjdENvbnRlbnRzKElET01Eb2N1bWVudEZyYWdtZW50Kiop
OwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZUNvbnRlbnRzKElE
T01Eb2N1bWVudEZyYWdtZW50KiopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBpbnNlcnROb2RlKElET01Ob2RlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHN1cnJvdW5kQ29udGVudHMoSURPTU5vZGUqIG5ld1BhcmVudCk7Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lUmFuZ2UoSURPTVJhbmdlKiopOwot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0b1N0cmluZyhCU1RSKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV4dHJhY3RDb250ZW50cyhfQ09N
X091dHB0cl9vcHRfIElET01Eb2N1bWVudEZyYWdtZW50KiopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZUNvbnRlbnRzKF9DT01fT3V0cHRyX29wdF8gSURPTURv
Y3VtZW50RnJhZ21lbnQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGluc2VydE5vZGUoX0luX29wdF8gSURPTU5vZGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc3Vycm91bmRDb250ZW50cyhfSW5fb3B0XyBJRE9NTm9kZSogbmV3UGFy
ZW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVSYW5nZShf
Q09NX091dHB0cl9vcHRfIElET01SYW5nZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgdG9TdHJpbmcoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGV0YWNoKCk7CiAKIHByb3RlY3RlZDoKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCShyZXZpc2lvbiAxODg2MzgpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM3LDkgKzM3LDExIEBACiAKIC8vIERPTUV2ZW50TGlzdGVuZXIgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudExpc3RlbmVyOjpRdWVyeUludGVyZmFj
ZShjb25zdCBJSUQgJnJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIERPTUV2ZW50TGlz
dGVuZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwog
ICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTUV2ZW50TGlzdGVuZXIpKQogICAgICAg
ICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SURPTUV2ZW50TGlzdGVuZXIqPih0aGlzKTsKICAg
ICBlbHNlCkBAIC00OSw4ICs1MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRXZl
bnRMaXN0ZW4KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01FdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCggCi0gICAgLyogW2luXSAqLyBJRE9NRXZl
bnQqIC8qZXZ0Ki8pCitIUkVTVUxUIERPTUV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KF9Jbl9v
cHRfIElET01FdmVudCogLypldnQqLykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQpAQCAt
ODgsNyArODksNiBAQCBQYXNzUmVmUHRyPFdlYkV2ZW50TGlzdGVuZXI+IFdlYkV2ZW50TGlzCiAv
LyBET01FdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIERPTUV2ZW50OjpET01FdmVudChQYXNzUmVmUHRyPFdl
YkNvcmU6OkV2ZW50PiBlKQotOiBtX2V2ZW50KDApCiB7CiAgICAgbV9ldmVudCA9IGU7CiB9CkBA
IC0xMDAsMTAgKzEwMCwxMCBAQCBET01FdmVudDo6fkRPTUV2ZW50KCkKIElET01FdmVudCogRE9N
RXZlbnQ6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpCiB7CiAg
ICAgaWYgKCFlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBIUkVTVUxUIGhyOwotICAgIElET01FdmVudCogZG9tRXZlbnQgPSAwOworICAgIElET01F
dmVudCogZG9tRXZlbnQgPSBudWxscHRyOwogCiAgICAgaWYgKGUtPmlzS2V5Ym9hcmRFdmVudCgp
KSB7CiAgICAgICAgIERPTUtleWJvYXJkRXZlbnQqIG5ld0V2ZW50ID0gbmV3IERPTUtleWJvYXJk
RXZlbnQoZSk7CkBAIC0xMjksMTQgKzEyOSwxNiBAQCBJRE9NRXZlbnQqIERPTUV2ZW50OjpjcmVh
dGVJbnN0YW5jZShQYXNzCiAgICAgfQogCiAgICAgaWYgKEZBSUxFRChocikpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBkb21FdmVudDsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6UXVlcnlJbnRlcmZhY2Uo
Y29uc3QgSUlEICZyaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01FdmVudDo6UXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElz
RXF1YWxHVUlEKHJpaWQsIElJRF9ET01FdmVudCkpCiAgICAgICAgICpwcHZPYmplY3QgPSB0aGlz
OwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NRXZlbnQpKQpAQCAtMTQ4
LDcxICsxNTAsODIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6UXVlcgog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUV2ZW50
Ojp0eXBlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVT
VUxUIERPTUV2ZW50Ojp0eXBlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6dGFyZ2V0KCAKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01FdmVudFRhcmdldCoqIC8qcmVzdWx0Ki8pCitIUkVTVUxU
IERPTUV2ZW50Ojp0YXJnZXQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1
bHQpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6Y3Vy
cmVudFRhcmdldCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnRUYXJnZXQqKiAv
KnJlc3VsdCovKQorSFJFU1VMVCBET01FdmVudDo6Y3VycmVudFRhcmdldChfQ09NX091dHB0cl9v
cHRfIElET01FdmVudFRhcmdldCoqIHJlc3VsdCkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVz
dWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUV2ZW50OjpldmVudFBoYXNlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIHVuc2lnbmVkIHNob3J0KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01FdmVudDo6ZXZlbnRQ
aGFzZShfT3V0XyB1bnNpZ25lZCBzaG9ydCogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUV2ZW50OjpidWJibGVzKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUV2ZW50OjpidWJibGVzKF9PdXRfIEJPT0wqIC8q
cmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6Y2FuY2VsYWJs
ZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBE
T01FdmVudDo6Y2FuY2VsYWJsZShfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NRXZlbnQ6OnRpbWVTdGFtcCggCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBET01UaW1lU3RhbXAqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUV2ZW50Ojp0aW1lU3Rh
bXAoX091dF8gRE9NVGltZVN0YW1wKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRXZlbnQ6OnN0b3BQcm9wYWdhdGlvbiggdm9pZCkKK0hSRVNVTFQgRE9NRXZlbnQ6
OnN0b3BQcm9wYWdhdGlvbigpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6
cHJldmVudERlZmF1bHQoIHZvaWQpCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUV2ZW50
OjpwcmV2ZW50RGVmYXVsdCgpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FdmVudDo6
aW5pdEV2ZW50KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypldmVudFR5cGVBcmcqLywKLSAgICAv
KiBbaW5dICovIEJPT0wgLypjYW5CdWJibGVBcmcqLywKLSAgICAvKiBbaW5dICovIEJPT0wgLypj
YW5jZWxhYmxlQXJnKi8pCitIUkVTVUxUIERPTUV2ZW50Ojppbml0RXZlbnQoX0luXyBCU1RSIC8q
ZXZlbnRUeXBlQXJnKi8sIEJPT0wgLypjYW5CdWJibGVBcmcqLywgQk9PTCAvKmNhbmNlbGFibGVB
cmcqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogCiAvLyBET01VSUV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NVUlFdmVudDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmpl
Y3QpCitIUkVTVUxUIERPTVVJRXZlbnQ6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQs
IF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOwor
ICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZP
YmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTVVJRXZl
bnQpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SURPTVVJRXZlbnQqPih0aGlz
KTsKICAgICBlbHNlCkBAIC0yMjIsNzUgKzIzNSw3NiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTVVJRXZlbnQ6OlF1CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NVUlFdmVudDo6dmlldyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NV2luZG93KiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NVUlFdmVudDo6dmlldyhfQ09NX091
dHB0cl9vcHRfIElET01XaW5kb3cqKiByZXN1bHQpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJl
c3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01VSUV2ZW50OjpkZXRhaWwoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NVUlFdmVudDo6ZGV0YWlsKF9PdXRfIGxv
bmcqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01VSUV2ZW50Ojpp
bml0VUlFdmVudCggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qdHlwZSovLAotICAgIC8qIFtpbl0g
Ki8gQk9PTCAvKmNhbkJ1YmJsZSovLAotICAgIC8qIFtpbl0gKi8gQk9PTCAvKmNhbmNlbGFibGUq
LywKLSAgICAvKiBbaW5dICovIElET01XaW5kb3cqIC8qdmlldyovLAotICAgIC8qIFtpbl0gKi8g
bG9uZyAvKmRldGFpbCovKQorSFJFU1VMVCBET01VSUV2ZW50Ojppbml0VUlFdmVudChfSW5fIEJT
VFIgLyp0eXBlKi8sIEJPT0wgLypjYW5CdWJibGUqLywgQk9PTCAvKmNhbmNlbGFibGUqLywgX0lu
X29wdF8gSURPTVdpbmRvdyogLyp2aWV3Ki8sIGxvbmcgLypkZXRhaWwqLykKIHsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTVVJRXZlbnQ6OmtleUNvZGUoIAotICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NVUlFdmVudDo6a2V5Q29kZShfT3V0
XyBsb25nKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NVUlFdmVu
dDo6Y2hhckNvZGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1bHQqLykK
K0hSRVNVTFQgRE9NVUlFdmVudDo6Y2hhckNvZGUoX091dF8gbG9uZyogLypyZXN1bHQqLykKIHsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVVJRXZlbnQ6OnVudXNlZDEoCi0gICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBsb25nKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01VSUV2ZW50Ojp1bnVz
ZWQxKF9PdXRfIGxvbmcqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01VSUV2ZW50Ojp1bnVzZWQyKAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1
bHQqLykKK0hSRVNVTFQgRE9NVUlFdmVudDo6dW51c2VkMihfT3V0XyBsb25nKiAvKnJlc3VsdCov
KQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NVUlFdmVudDo6cGFnZVgoIAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NVUlFdmVudDo6
cGFnZVgoX091dF8gbG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTVVJRXZlbnQ6OnBhZ2VZKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIC8qcmVz
dWx0Ki8pCitIUkVTVUxUIERPTVVJRXZlbnQ6OnBhZ2VZKF9PdXRfIGxvbmcqIC8qcmVzdWx0Ki8p
CiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01VSUV2ZW50Ojp3aGljaCggCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBsb25nKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01VSUV2ZW50Ojp3
aGljaChfT3V0XyBsb25nKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIC8vIERPTUtleWJvYXJkRXZlbnQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01LZXlib2FyZEV2ZW50OjpRdWVyeUludGVyZmFj
ZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NS2V5Ym9hcmRFdmVu
dDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAg
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NS2V5Ym9hcmRFdmVudCkpCiAgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NS2V5Ym9hcmRFdmVudCo+KHRoaXMpOwogICAgIGVs
c2UKQEAgLTMwMCwyNyArMzE0LDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NS2V5
Ym9hcmRFdmUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVyKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUtleWJvYXJkRXZlbnQ6OmxvY2F0aW9uKAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gdW5zaWduZWQgbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NS2V5
Ym9hcmRFdmVudDo6bG9jYXRpb24oX091dF8gdW5zaWduZWQgbG9uZyogLypyZXN1bHQqLykKIHsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUtleWJvYXJkRXZlbnQ6OmtleUxvY2F0aW9uKCAK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVT
VUxUIERPTUtleWJvYXJkRXZlbnQ6OmtleUxvY2F0aW9uKF9PdXRfIHVuc2lnbmVkIGxvbmcqIC8q
cmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01LZXlib2FyZEV2ZW50Ojpj
dHJsS2V5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQg
RE9NS2V5Ym9hcmRFdmVudDo6Y3RybEtleShfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IEZBTFNF
OwogICAgIGlmICghbV9ldmVudCB8fCAhbV9ldmVudC0+aXNLZXlib2FyZEV2ZW50KCkpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CkBAIC0zMzAsOSArMzQ4LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NS2V5Ym9hcmRFdmUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01LZXlib2FyZEV2ZW50OjpzaGlmdEtleSggCi0gICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIERPTUtleWJvYXJkRXZlbnQ6OnNo
aWZ0S2V5KF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKCFtX2V2ZW50
IHx8ICFtX2V2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
QEAgLTM0Miw5ICszNjEsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01LZXlib2Fy
ZEV2ZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUtleWJvYXJkRXZlbnQ6OmFsdEtleSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBy
ZXN1bHQpCitIUkVTVUxUIERPTUtleWJvYXJkRXZlbnQ6OmFsdEtleShfT3V0XyBCT09MKiByZXN1
bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAg
KnJlc3VsdCA9IEZBTFNFOwogICAgIGlmICghbV9ldmVudCB8fCAhbV9ldmVudC0+aXNLZXlib2Fy
ZEV2ZW50KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0zNTQsOSArMzc0LDEwIEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NS2V5Ym9hcmRFdmUKICAgICByZXR1cm4gU19PSzsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01LZXlib2FyZEV2ZW50OjptZXRhS2V5
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRE9NS2V5
Ym9hcmRFdmVudDo6bWV0YUtleShfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IEZBTFNFOwogICAg
IGlmICghbV9ldmVudCB8fCAhbV9ldmVudC0+aXNLZXlib2FyZEV2ZW50KCkpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CkBAIC0zNjYsOSArMzg3LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NS2V5Ym9hcmRFdmUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01LZXlib2FyZEV2ZW50OjphbHRHcmFwaEtleSggCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIERPTUtleWJvYXJkRXZlbnQ6OmFsdEdy
YXBoS2V5KF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKCFtX2V2ZW50
IHx8ICFtX2V2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
QEAgLTM3OCwzNCArNDAwLDI3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NS2V5Ym9h
cmRFdmUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01LZXlib2FyZEV2ZW50OjpnZXRNb2RpZmllclN0YXRlKCAKLSAgICAvKiBbaW5dICovIEJTVFIg
LyprZXlJZGVudGlmaWVyQXJnKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiAvKnJl
c3VsdCovKQorSFJFU1VMVCBET01LZXlib2FyZEV2ZW50OjpnZXRNb2RpZmllclN0YXRlKF9Jbl8g
QlNUUiAvKmtleUlkZW50aWZpZXJBcmcqLywgX091dF8gQk9PTCogLypyZXN1bHQqLykKIHsKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50
KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLyp0eXBlKi8sCi0gICAgLyogW2luXSAqLyBCT09MIC8q
Y2FuQnViYmxlKi8sCi0gICAgLyogW2luXSAqLyBCT09MIC8qY2FuY2VsYWJsZSovLAotICAgIC8q
IFtpbl0gKi8gSURPTVdpbmRvdyogLyp2aWV3Ki8sCi0gICAgLyogW2luXSAqLyBCU1RSIC8qa2V5
SWRlbnRpZmllciovLAotICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyAvKmtleUxvY2F0aW9u
Ki8sCi0gICAgLyogW2luXSAqLyBCT09MIC8qY3RybEtleSovLAotICAgIC8qIFtpbl0gKi8gQk9P
TCAvKmFsdEtleSovLAotICAgIC8qIFtpbl0gKi8gQk9PTCAvKnNoaWZ0S2V5Ki8sCi0gICAgLyog
W2luXSAqLyBCT09MIC8qbWV0YUtleSovLAotICAgIC8qIFtpbl0gKi8gQk9PTCAvKmdyYXBoS2V5
Ki8pCitIUkVTVUxUIERPTUtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KF9Jbl8gQlNU
UiAvKnR5cGUqLywgQk9PTCAvKmNhbkJ1YmJsZSovLCBCT09MIC8qY2FuY2VsYWJsZSovLAorICAg
IF9Jbl9vcHRfIElET01XaW5kb3cqIC8qdmlldyovLCBfSW5fIEJTVFIgLyprZXlJZGVudGlmaWVy
Ki8sIHVuc2lnbmVkIGxvbmcgLyprZXlMb2NhdGlvbiovLAorICAgIEJPT0wgLypjdHJsS2V5Ki8s
IEJPT0wgLyphbHRLZXkqLywgQk9PTCAvKnNoaWZ0S2V5Ki8sIEJPT0wgLyptZXRhS2V5Ki8sIEJP
T0wgLypncmFwaEtleSovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAKIC8vIERPTU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwg
dm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NTW91c2VFdmVudDo6UXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAg
KnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJp
aWQsIElJRF9JRE9NTW91c2VFdmVudCkpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJRE9NTW91c2VFdmVudCo+KHRoaXMpOwogICAgIGVsc2UKQEAgLTQxNSwzMyArNDMwLDM0IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTW91c2VFdmVudDoKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50OjpzY3JlZW5Y
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERP
TU1vdXNlRXZlbnQ6OnNjcmVlblgoX091dF8gbG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTU1vdXNlRXZlbnQ6OnNjcmVlblkoIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTW91c2VFdmVudDo6c2NyZWVu
WShfT3V0XyBsb25nKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
TW91c2VFdmVudDo6Y2xpZW50WCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiAvKnJl
c3VsdCovKQorSFJFU1VMVCBET01Nb3VzZUV2ZW50OjpjbGllbnRYKF9PdXRfIGxvbmcqIC8qcmVz
dWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50OjpjbGllbnRZ
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERP
TU1vdXNlRXZlbnQ6OmNsaWVudFkoX091dF8gbG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTU1vdXNlRXZlbnQ6OmN0cmxLZXkoIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogcmVzdWx0KQorSFJFU1VMVCBET01Nb3VzZUV2ZW50OjpjdHJsS2V5KF9P
dXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKICAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKCFtX2V2ZW50IHx8ICFtX2V2
ZW50LT5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTQ1MSw5ICs0
NjcsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50OgogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU1vdXNlRXZlbnQ6
OnNoaWZ0S2V5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNV
TFQgRE9NTW91c2VFdmVudDo6c2hpZnRLZXkoX091dF8gQk9PTCogcmVzdWx0KQogeworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSBGQUxT
RTsKICAgICBpZiAoIW1fZXZlbnQgfHwgIW1fZXZlbnQtPmlzTW91c2VFdmVudCgpKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwpAQCAtNDYzLDkgKzQ4MCwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTU1vdXNlRXZlbnQ6CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTW91c2VFdmVudDo6YWx0S2V5KCAKLSAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRE9NTW91c2VFdmVudDo6YWx0S2V5KF9PdXRf
IEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKICAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKCFtX2V2ZW50IHx8ICFtX2V2ZW50
LT5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTQ3NSw5ICs0OTMs
MTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50OgogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU1vdXNlRXZlbnQ6Om1l
dGFLZXkoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQorSFJFU1VMVCBE
T01Nb3VzZUV2ZW50OjptZXRhS2V5KF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gRkFMU0U7CiAg
ICAgaWYgKCFtX2V2ZW50IHx8ICFtX2V2ZW50LT5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKQEAgLTQ4Nyw3OSArNTA2LDc5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NTW91c2VFdmVudDoKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50OjpidXR0b24oIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gdW5zaWduZWQgc2hvcnQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU1vdXNlRXZlbnQ6OmJ1
dHRvbihfT3V0XyB1bnNpZ25lZCBzaG9ydCogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTU1vdXNlRXZlbnQ6OnJlbGF0ZWRUYXJnZXQoIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTUV2ZW50VGFyZ2V0KiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTW91c2VF
dmVudDo6cmVsYXRlZFRhcmdldChfQ09NX091dHB0cl9vcHRfIElET01FdmVudFRhcmdldCoqIHJl
c3VsdCkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU1vdXNlRXZl
bnQ6OmluaXRNb3VzZUV2ZW50KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLyp0eXBlKi8sCi0gICAg
LyogW2luXSAqLyBCT09MIC8qY2FuQnViYmxlKi8sCi0gICAgLyogW2luXSAqLyBCT09MIC8qY2Fu
Y2VsYWJsZSovLAotICAgIC8qIFtpbl0gKi8gSURPTVdpbmRvdyogLyp2aWV3Ki8sCi0gICAgLyog
W2luXSAqLyBsb25nIC8qZGV0YWlsKi8sCi0gICAgLyogW2luXSAqLyBsb25nIC8qc2NyZWVuWCov
LAotICAgIC8qIFtpbl0gKi8gbG9uZyAvKnNjcmVlblkqLywKLSAgICAvKiBbaW5dICovIGxvbmcg
LypjbGllbnRYKi8sCi0gICAgLyogW2luXSAqLyBsb25nIC8qY2xpZW50WSovLAotICAgIC8qIFtp
bl0gKi8gQk9PTCAvKmN0cmxLZXkqLywKLSAgICAvKiBbaW5dICovIEJPT0wgLyphbHRLZXkqLywK
LSAgICAvKiBbaW5dICovIEJPT0wgLypzaGlmdEtleSovLAotICAgIC8qIFtpbl0gKi8gQk9PTCAv
Km1ldGFLZXkqLywKLSAgICAvKiBbaW5dICovIHVuc2lnbmVkIHNob3J0IC8qYnV0dG9uKi8sCi0g
ICAgLyogW2luXSAqLyBJRE9NRXZlbnRUYXJnZXQqIC8qcmVsYXRlZFRhcmdldCovKQorSFJFU1VM
VCBET01Nb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChfSW5fIEJTVFIgLyp0eXBlKi8sIEJPT0wg
LypjYW5CdWJibGUqLywgQk9PTCAvKmNhbmNlbGFibGUqLywKKyAgICBfSW5fb3B0XyBJRE9NV2lu
ZG93KiAvKnZpZXcqLywgbG9uZyAvKmRldGFpbCovLCBsb25nIC8qc2NyZWVuWCovLCBsb25nIC8q
c2NyZWVuWSovLCBsb25nIC8qY2xpZW50WCovLCBsb25nIC8qY2xpZW50WSovLAorICAgIEJPT0wg
LypjdHJsS2V5Ki8sIEJPT0wgLyphbHRLZXkqLywgQk9PTCAvKnNoaWZ0S2V5Ki8sIEJPT0wgLypt
ZXRhS2V5Ki8sIHVuc2lnbmVkIHNob3J0IC8qYnV0dG9uKi8sCisgICAgX0luX29wdF8gSURPTUV2
ZW50VGFyZ2V0KiAvKnJlbGF0ZWRUYXJnZXQqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTU1vdXNlRXZlbnQ6Om9mZnNldFgoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyog
LypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTW91c2VFdmVudDo6b2Zmc2V0WChfT3V0XyBsb25nKiAv
KnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05P
VElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTW91c2VFdmVudDo6b2Zm
c2V0WSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiAvKnJlc3VsdCovKQorSFJFU1VM
VCBET01Nb3VzZUV2ZW50OjpvZmZzZXRZKF9PdXRfIGxvbmcqIC8qcmVzdWx0Ki8pCiB7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01Nb3VzZUV2ZW50Ojp4KCAKLSAgICAvKiBbcmV0dmFsXVtv
dXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU1vdXNlRXZlbnQ6OngoX091dF8g
bG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU1vdXNlRXZl
bnQ6OnkoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNV
TFQgRE9NTW91c2VFdmVudDo6eShfT3V0XyBsb25nKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTW91c2VFdmVudDo6ZnJvbUVsZW1lbnQoIAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUqKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01Nb3VzZUV2ZW50
Ojpmcm9tRWxlbWVudChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQogeworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTW91c2VFdmVudDo6dG9FbGVtZW50
KAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiAvKnJlc3VsdCovKQorSFJFU1VM
VCBET01Nb3VzZUV2ZW50Ojp0b0VsZW1lbnQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJl
c3VsdCkKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogCiAvLyBET01NdXRhdGlvbkV2ZW50IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTXV0YXRpb25FdmVudDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIERPTU11dGF0aW9uRXZlbnQ6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQog
ewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFs
R1VJRChyaWlkLCBJSURfSURPTU11dGF0aW9uRXZlbnQpKQogICAgICAgICAqcHB2T2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SURPTU11dGF0aW9uRXZlbnQqPih0aGlzKTsKICAgICBlbHNlCkBAIC01Njks
NTQgKzU4OCw2NiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU11dGF0aW9uRXZlCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTXV0YXRp
b25FdmVudDo6cmVsYXRlZE5vZGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUq
KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01NdXRhdGlvbkV2ZW50OjpyZWxhdGVkTm9kZShfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpy
ZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTXV0YXRpb25FdmVudDo6cHJldlZhbHVlKCAKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU11dGF0aW9uRXZlbnQ6
OnByZXZWYWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogeworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTXV0YXRpb25FdmVudDo6bmV3VmFsdWUoIAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NTXV0YXRp
b25FdmVudDo6bmV3VmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU11dGF0aW9uRXZlbnQ6OmF0dHJOYW1l
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERP
TU11dGF0aW9uRXZlbnQ6OmF0dHJOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01NdXRhdGlvbkV2ZW50Ojph
dHRyQ2hhbmdlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0KiAvKnJl
c3VsdCovKQorSFJFU1VMVCBET01NdXRhdGlvbkV2ZW50OjphdHRyQ2hhbmdlKF9PdXRfIHVuc2ln
bmVkIHNob3J0KiByZXN1bHQpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IDA7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01N
dXRhdGlvbkV2ZW50Ojppbml0TXV0YXRpb25FdmVudCgKLSAgICAvKiBbaW5dICovIEJTVFIgLyp0
eXBlKi8sCi0gICAgLyogW2luXSAqLyBCT09MIC8qY2FuQnViYmxlKi8sCi0gICAgLyogW2luXSAq
LyBCT09MIC8qY2FuY2VsYWJsZSovLAotICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIC8qcmVsYXRl
ZE5vZGUqLywKLSAgICAvKiBbaW5dICovIEJTVFIgLypwcmV2VmFsdWUqLywKLSAgICAvKiBbaW5d
ICovIEJTVFIgLypuZXdWYWx1ZSovLAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmF0dHJOYW1lKi8s
Ci0gICAgLyogW2luXSAqLyB1bnNpZ25lZCBzaG9ydCAvKmF0dHJDaGFuZ2UqLykKK0hSRVNVTFQg
RE9NTXV0YXRpb25FdmVudDo6aW5pdE11dGF0aW9uRXZlbnQoX0luXyBCU1RSIC8qdHlwZSovLCBC
T09MIC8qY2FuQnViYmxlKi8sIEJPT0wgLypjYW5jZWxhYmxlKi8sCisgICAgX0luX29wdF8gSURP
TU5vZGUqIC8qcmVsYXRlZE5vZGUqLywgX0luXyBCU1RSIC8qcHJldlZhbHVlKi8sIF9Jbl8gQlNU
UiAvKm5ld1ZhbHVlKi8sIF9Jbl8gQlNUUiAvKmF0dHJOYW1lKi8sCisgICAgdW5zaWduZWQgc2hv
cnQgLyphdHRyQ2hhbmdlKi8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAogLy8gRE9NT3ZlcmZsb3dFdmVudCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTU92ZXJmbG93RXZlbnQ6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01PdmVyZmxvd0V2ZW50OjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
IHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVh
bEdVSUQocmlpZCwgSUlEX0lET01PdmVyZmxvd0V2ZW50KSkKICAgICAgICAgKnBwdk9iamVjdCA9
IHN0YXRpY19jYXN0PElET01PdmVyZmxvd0V2ZW50Kj4odGhpcyk7CiAgICAgZWxzZQpAQCAtNjI2
LDI5ICs2NTcsMzEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01PdmVyZmxvd0V2ZQog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU92ZXJm
bG93RXZlbnQ6Om9yaWVudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9y
dCogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NT3ZlcmZsb3dFdmVudDo6b3JpZW50KF9PdXRfIHVu
c2lnbmVkIHNob3J0KiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
T3ZlcmZsb3dFdmVudDo6aG9yaXpvbnRhbE92ZXJmbG93KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTU92ZXJmbG93RXZlbnQ6Omhvcml6b250
YWxPdmVyZmxvdyhfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NT3ZlcmZsb3dFdmVudDo6dmVydGljYWxPdmVyZmxvdyggCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01PdmVyZmxvd0V2ZW50Ojp2
ZXJ0aWNhbE92ZXJmbG93KF9PdXRfIEJPT0wqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAogLy8gRE9NV2hlZWxFdmVu
dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVdoZWVsRXZlbnQ6OlF1ZXJ5
SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01XaGVl
bEV2ZW50OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVj
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsK
ICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01XaGVlbEV2ZW50KSkKICAgICAgICAg
KnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01XaGVlbEV2ZW50Kj4odGhpcyk7CiAgICAgZWxz
ZQpAQCAtNjU4LDExNCArNjkxLDEwNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVdo
ZWVsRXZlbnQ6CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NV2hlZWxFdmVudDo6c2NyZWVuWCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25n
KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01XaGVlbEV2ZW50OjpzY3JlZW5YKF9PdXRfIGxvbmcq
IC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaGVlbEV2ZW50Ojpz
Y3JlZW5ZKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVT
VUxUIERPTVdoZWVsRXZlbnQ6OnNjcmVlblkoX091dF8gIGxvbmcqIC8qcmVzdWx0Ki8pCiB7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaGVlbEV2ZW50OjpjbGllbnRYKCAKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTVdoZWVsRXZlbnQ6
OmNsaWVudFgoX091dF8gIGxvbmcqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01XaGVlbEV2ZW50OjpjbGllbnRZKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxv
bmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTVdoZWVsRXZlbnQ6OmNsaWVudFkoX091dF8gIGxv
bmcqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaGVlbEV2ZW50
OjpjdHJsS2V5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIC8qcmVzdWx0Ki8pCitI
UkVTVUxUIERPTVdoZWVsRXZlbnQ6OmN0cmxLZXkoX091dF8gIEJPT0wqIC8qcmVzdWx0Ki8pCiB7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaGVlbEV2ZW50OjpzaGlmdEtleSggCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01XaGVlbEV2
ZW50OjpzaGlmdEtleShfT3V0XyAgQk9PTCogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTVdoZWVsRXZlbnQ6OmFsdEtleSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01XaGVlbEV2ZW50OjphbHRLZXkoX091dF8g
IEJPT0wqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaGVlbEV2
ZW50OjptZXRhS2V5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIC8qcmVzdWx0Ki8p
CitIUkVTVUxUIERPTVdoZWVsRXZlbnQ6Om1ldGFLZXkoX091dF8gIEJPT0wqIC8qcmVzdWx0Ki8p
CiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaGVlbEV2ZW50Ojp3aGVlbERlbHRhKCAK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGEoX091dF8gbG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFYKCAKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIGxvbmcqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTVdoZWVsRXZlbnQ6Ondo
ZWVsRGVsdGFYKF9PdXRfIGxvbmcqIC8qcmVzdWx0Ki8pCiB7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01XaGVlbEV2ZW50Ojp3aGVlbERlbHRhWSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBsb25nKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01XaGVlbEV2ZW50Ojp3aGVlbERlbHRhWShf
T3V0XyAgbG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVdo
ZWVsRXZlbnQ6Om9mZnNldFgoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1
bHQqLykKK0hSRVNVTFQgRE9NV2hlZWxFdmVudDo6b2Zmc2V0WChfT3V0XyAgbG9uZyogLypyZXN1
bHQqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVdoZWVsRXZlbnQ6Om9mZnNldFko
IAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9N
V2hlZWxFdmVudDo6b2Zmc2V0WShfT3V0XyAgbG9uZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTVdoZWVsRXZlbnQ6OngoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NV2hlZWxFdmVudDo6eChfT3V0XyAgbG9u
ZyogLypyZXN1bHQqLykKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVdoZWVsRXZlbnQ6
OnkoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogLypyZXN1bHQqLykKK0hSRVNVTFQg
RE9NV2hlZWxFdmVudDo6eShfT3V0XyBsb25nKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NV2hlZWxFdmVudDo6aXNIb3Jpem9udGFsKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTVdoZWVsRXZlbnQ6OmlzSG9y
aXpvbnRhbChfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NV2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQoIAotICAgIC8qIFtpbl0gKi8gbG9uZyAv
KndoZWVsRGVsdGFYKi8sCi0gICAgLyogW2luXSAqLyBsb25nIC8qd2hlZWxEZWx0YVkqLywKLSAg
ICAvKiBbaW5dICovIElET01XaW5kb3cqIC8qdmlldyovLAotICAgIC8qIFtpbl0gKi8gbG9uZyAv
KnNjcmVlblgqLywKLSAgICAvKiBbaW5dICovIGxvbmcgLypzY3JlZW5ZKi8sCi0gICAgLyogW2lu
XSAqLyBsb25nIC8qY2xpZW50WCovLAotICAgIC8qIFtpbl0gKi8gbG9uZyAvKmNsaWVudFkqLywK
LSAgICAvKiBbaW5dICovIEJPT0wgLypjdHJsS2V5Ki8sCi0gICAgLyogW2luXSAqLyBCT09MIC8q
YWx0S2V5Ki8sCi0gICAgLyogW2luXSAqLyBCT09MIC8qc2hpZnRLZXkqLywKLSAgICAvKiBbaW5d
ICovIEJPT0wgLyptZXRhS2V5Ki8pCitIUkVTVUxUIERPTVdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2
ZW50KGxvbmcgLyp3aGVlbERlbHRhWCovLCBsb25nIC8qd2hlZWxEZWx0YVkqLywKKyAgICBfSW5f
b3B0XyBJRE9NV2luZG93KiAvKnZpZXcqLywgbG9uZyAvKnNjcmVlblgqLywgbG9uZyAvKnNjcmVl
blkqLywgbG9uZyAvKmNsaWVudFgqLywgbG9uZyAvKmNsaWVudFkqLywKKyAgICBCT09MIC8qY3Ry
bEtleSovLCBCT09MIC8qYWx0S2V5Ki8sIEJPT0wgLypzaGlmdEtleSovLCBCT09MIC8qbWV0YUtl
eSovKQogeworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCShyZXZpc2lvbiAxODg2
MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywg
MjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01Nyw0NSArNTcsNTMgQEAgY2xhc3MgRE9NRXZlbnRMaXN0ZW5lciA6
IHB1YmxpYyBET01PYmplYwogewogcHVibGljOgogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFk
ZFJlZih2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQs
IF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTU9iamVjdDo6QWRkUmVmKCk7IH0KICAg
ICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCkgeyByZXR1cm4g
RE9NT2JqZWN0OjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3JpcHRPYmplY3QKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oIAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6dGhyb3dFeGNlcHRpb24o
ZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBh
cmdzWyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmNhbGxXZWJT
Y3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZB
UklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0ZVdlYlNjcmlwdChzY3Jp
cHQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcmVtb3ZlV2ViU2NyaXB0S2V5KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpIHsg
cmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikg
eyByZXR1cm4gRE9NT2JqZWN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRh
dGlvbik7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
U2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5k
ZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVy
biBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1
ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAg
ICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyByZXR1cm4gRE9NT2JqZWN0OjpzZXRXZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlv
bik7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRp
b24oX0luXyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3Nh
Z2UsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiBuYW1lLCBfX2luX2Vjb3VudF9v
cHQoY0FyZ3MpIGNvbnN0IFZBUklBTlQgYXJnc1tdLCBpbnQgY0FyZ3MsIF9PdXRfIFZBUklBTlQq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OmNhbGxXZWJTY3JpcHRN
ZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIg
c2NyaXB0LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
T2JqZWN0OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXko
X0luXyBCU1RSIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVX
ZWJTY3JpcHRLZXkobmFtZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQgQlNUUiog
c3RyaW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojpz
dHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5k
ZXgodW5zaWduZWQgaW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdl
YlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFSSUFOVCB2YWwpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgs
IHZhbCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRFeGNlcHRpb24oX0luXyBCU1RSIGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICB9CiAKICAgICAv
LyBJRE9NRXZlbnRMaXN0ZW5lcgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYW5kbGVFdmVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUV2ZW50KiBldnQpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYW5kbGVFdmVudChfSW5fb3B0XyBJ
RE9NRXZlbnQqKTsKIH07CiAKIGNsYXNzIERPTUV2ZW50IDogcHVibGljIERPTU9iamVjdCwgcHVi
bGljIElET01FdmVudApAQCAtMTA4LDcyICsxMTYsNjIgQEAgcHJvdGVjdGVkOgogCiBwdWJsaWM6
CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU9iamVj
dDo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkgeyByZXR1
cm4gRE9NT2JqZWN0OjpBZGRSZWYoKTsgfQogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OlJlbGVhc2UoKTsgfQogCiAg
ICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25N
ZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1
cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3Jp
cHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3Np
emVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAotICAgICAgICAvKiBbaW5dICov
IGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQp
IHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJn
cywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01P
YmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJT
Y3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnN0cmluZ1Jl
cHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAotICAgICAg
ICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0VmFsdWVB
dEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7
IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRp
b24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTU9i
amVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9uTWVzc2Fn
ZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6
dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2Qo
X0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFSSUFOVCBhcmdz
W10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQsIF9PdXRfIFZBUklBTlQqIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNj
cmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikKKyAgICB7
CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1Jl
cHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgX091dF8gVkFS
SUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0
VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVk
IGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnNl
dFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5fIEJTVFIgZGVz
Y3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24o
ZGVzY3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElET01FdmVudAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0eXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB0YXJnZXQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FdmVudFRhcmdl
dCoqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGN1cnJlbnRUYXJnZXQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FdmVudFRh
cmdldCoqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGV2ZW50UGhhc2UoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNo
b3J0KiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBidWJibGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5jZWxhYmxlKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aW1lU3RhbXAoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIERPTVRpbWVTdGFtcCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RvcFByb3BhZ2F0aW9uKCB2b2lkKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmVudERlZmF1bHQoIHZv
aWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0RXZl
bnQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZXZlbnRUeXBlQXJnLAotICAgICAgICAvKiBb
aW5dICovIEJPT0wgY2FuQnViYmxlQXJnLAotICAgICAgICAvKiBbaW5dICovIEJPT0wgY2FuY2Vs
YWJsZUFyZyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHR5cGUoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdGFyZ2V0KF9DT01fT3V0cHRyX29wdF8gSURPTUV2ZW50VGFyZ2V0KiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXJyZW50VGFyZ2V0KF9DT01fT3V0cHRyX29w
dF8gSURPTUV2ZW50VGFyZ2V0KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBldmVudFBoYXNlKF9PdXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBidWJibGVzKF9PdXRfIEJPT0wqIHJlc3VsdCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbmNlbGFibGUoX091dF8g
Qk9PTCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGlt
ZVN0YW1wKF9PdXRfIERPTVRpbWVTdGFtcCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHByZXZlbnREZWZhdWx0KCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGluaXRFdmVudChfSW5fIEJTVFIgZXZlbnRUeXBlQXJnLCBCT09M
IGNhbkJ1YmJsZUFyZywgQk9PTCBjYW5jZWxhYmxlQXJnKTsKIAogICAgIC8vIERPTUV2ZW50IG1l
dGhvZHMKICAgICBXZWJDb3JlOjpFdmVudCogY29yZUV2ZW50KCkgeyByZXR1cm4gbV9ldmVudC5n
ZXQoKTsgfQpAQCAtMTg4LDEwNyArMTg2LDExMyBAQCBwdWJsaWM6CiAgICAgRE9NVUlFdmVudChQ
YXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKSA6IERPTUV2ZW50KGUpIHt9CiAKICAgICAvLyBJ
VW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NRXZlbnQ6OkFkZFJlZigp
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTUV2ZW50
OjpBZGRSZWYoKTsgfQogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFz
ZSh2b2lkKSB7IHJldHVybiBET01FdmVudDo6UmVsZWFzZSgpOyB9CiAKICAgICAvLyBJV2ViU2Ny
aXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhj
ZXB0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6
OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICov
IGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9N
T2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2Vi
U2NyaXB0KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVh
dGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBuYW1lKSB7IHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1l
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdS
ZXByZXNlbnRhdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5n
UmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24o
c3RyaW5nUmVwcmVzZW50YXRpb24pOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8g
dW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQq
IHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgs
IHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBp
bnQgaW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERPTU9i
amVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbiggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNl
cHRpb24oZGVzY3JpcHRpb24pOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNUUiBleGNlcHRpb25NZXNzYWdlLCBfT3V0XyBCT09M
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlv
bihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZChfSW5fIEJTVFIgbmFt
ZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJQU5UIGFyZ3NbXSwgaW50IGNBcmdz
LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0
OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJT
Y3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVt
b3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNUUiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oX19kZXJl
Zl9vcHRfb3V0IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24p
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
U2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
aW5kZXgsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIFZBUklB
TlQgdmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6c2V0V2ViU2NyaXB0VmFs
dWVBdEluZGV4KGluZGV4LCB2YWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlwdGlvbikKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7
CisgICAgfQogCiAgICAgLy8gSURPTUV2ZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3Vs
dCkgeyByZXR1cm4gRE9NRXZlbnQ6OnR5cGUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YXJnZXQoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01FdmVudFRhcmdldCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OnRhcmdl
dChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGN1cnJlbnRUYXJnZXQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FdmVudFRh
cmdldCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OmN1cnJlbnRUYXJnZXQocmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmVudFBoYXNl
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KSB7
IHJldHVybiBET01FdmVudDo6ZXZlbnRQaGFzZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJ1YmJsZXMoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OmJ1YmJsZXMocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5jZWxh
YmxlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJu
IERPTUV2ZW50OjpjYW5jZWxhYmxlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdGltZVN0YW1wKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBET01UaW1lU3RhbXAqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OnRpbWVTdGFtcChy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0
b3BQcm9wYWdhdGlvbiggdm9pZCkgeyByZXR1cm4gRE9NRXZlbnQ6OnN0b3BQcm9wYWdhdGlvbigp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZlbnRE
ZWZhdWx0KCB2b2lkKSB7IHJldHVybiBET01FdmVudDo6cHJldmVudERlZmF1bHQoKTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0RXZlbnQoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZXZlbnRUeXBlQXJnLAotICAgICAgICAvKiBbaW5dICovIEJP
T0wgY2FuQnViYmxlQXJnLAotICAgICAgICAvKiBbaW5dICovIEJPT0wgY2FuY2VsYWJsZUFyZykg
eyByZXR1cm4gRE9NRXZlbnQ6OmluaXRFdmVudChldmVudFR5cGVBcmcsIGNhbkJ1YmJsZUFyZywg
Y2FuY2VsYWJsZUFyZyk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dHlwZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUV2ZW50Ojp0eXBlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0YXJnZXQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NRXZlbnRUYXJn
ZXQqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OnRhcmdldChyZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y3VycmVudFRhcmdldChfQ09NX091dHB0cl9vcHRfIElET01FdmVudFRhcmdldCoqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6Y3VycmVudFRhcmdldChyZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZlbnRQ
aGFzZShfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUV2ZW50OjpldmVudFBoYXNlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBidWJibGVzKF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6YnViYmxlcyhyZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuY2VsYWJsZShfT3V0
XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OmNhbmNlbGFi
bGUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHRpbWVTdGFtcChfT3V0XyBET01UaW1lU3RhbXAqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01FdmVudDo6dGltZVN0YW1wKHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdG9wUHJvcGFnYXRpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50OjpzdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZlbnREZWZhdWx0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6cHJldmVudERlZmF1bHQoKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRFdmVu
dChfSW5fIEJTVFIgZXZlbnRUeXBlQXJnLCBCT09MIGNhbkJ1YmJsZUFyZywgQk9PTCBjYW5jZWxh
YmxlQXJnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50Ojppbml0RXZlbnQoZXZlbnRU
eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOworICAgIH0KIAogICAgIC8vIElE
T01VSUV2ZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpZXcoIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01XaW5kb3cqKiByZXN1bHQpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZXRhaWwoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRVSUV2ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIHR5cGUsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjYW5CdWJibGUsCi0gICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBjYW5jZWxhYmxlLAotICAgICAgICAvKiBbaW5dICovIElET01XaW5kb3cq
IHZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gbG9uZyBkZXRhaWwpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBrZXlDb2RlKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjaGFyQ29kZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9u
ZyogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dW51c2VkMSgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQyKAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhZ2VYKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwYWdlWSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2hpY2goIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpZXcoX0NPTV9PdXRwdHJfb3B0XyBJRE9NV2luZG93
KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZXRhaWwoX091dF8g
bG9uZyogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5p
dFVJRXZlbnQoX0luXyBCU1RSIHR5cGUsIEJPT0wgY2FuQnViYmxlLCBCT09MIGNhbmNlbGFibGUs
IF9Jbl9vcHRfIElET01XaW5kb3cqIHZpZXcsIGxvbmcgZGV0YWlsKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUga2V5Q29kZShfT3V0XyBsb25nKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoYXJDb2RlKF9PdXRfIGxvbmcqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMShfT3V0XyBsb25nKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDIoX091dF8gbG9uZyop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlWChfT3V0XyBsb25n
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhZ2VZKF9PdXRfIGxv
bmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2hpY2goX091dF8g
bG9uZyopOwogfTsKIAogY2xhc3MgRE9NS2V5Ym9hcmRFdmVudCA6IHB1YmxpYyBET01VSUV2ZW50
LCBwdWJsaWMgSURPTUtleWJvYXJkRXZlbnQKQEAgLTI5NywxNDkgKzMwMSwxNjQgQEAgcHVibGlj
OgogICAgIERPTUtleWJvYXJkRXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSkgOiBE
T01VSUV2ZW50KGUpIHsgfQogCiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZP
YmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQp
IHsgcmV0dXJuIERPTVVJRXZlbnQ6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OkFkZFJlZigpOyB9CiAgICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTVVJRXZl
bnQ6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRp
b25NZXNzYWdlLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
bmFtZSwKLSAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBd
LAotICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1l
dGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCog
cmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVXZWJTY3JpcHRLZXkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4g
RE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVy
biBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9i
amVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCggCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBb
aW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVl
QXRJbmRleChpbmRleCwgdmFsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3Jp
cHRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5f
IEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU9iamVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNhbGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJn
cykgY29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChu
YW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQs
IF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6
OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJT
VFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlw
dEtleShuYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdS
ZXByZXNlbnRhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnN0cmluZ1Jl
cHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNp
Z25lZCBpbmRleCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTU9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0
VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4
Y2VwdGlvbihfSW5fIEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9N
T2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElET01F
dmVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0eXBlKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50Ojp0
eXBlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdGFyZ2V0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnRUYXJnZXQq
KiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50Ojp0YXJnZXQocmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXJyZW50VGFyZ2V0KCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpIHsgcmV0dXJu
IERPTUV2ZW50OjpjdXJyZW50VGFyZ2V0KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZlbnRQaGFzZSggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OmV2ZW50
UGhhc2UocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBidWJibGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQp
IHsgcmV0dXJuIERPTUV2ZW50OjpidWJibGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuY2VsYWJsZSggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6Y2FuY2VsYWJsZShy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRp
bWVTdGFtcCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gRE9NVGltZVN0YW1wKiByZXN1
bHQpIHsgcmV0dXJuIERPTUV2ZW50Ojp0aW1lU3RhbXAocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdG9wUHJvcGFnYXRpb24oIHZvaWQpIHsg
cmV0dXJuIERPTUV2ZW50OjpzdG9wUHJvcGFnYXRpb24oKTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2ZW50RGVmYXVsdCggdm9pZCkgeyByZXR1cm4g
RE9NRXZlbnQ6OnByZXZlbnREZWZhdWx0KCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW5pdEV2ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV2
ZW50VHlwZUFyZywKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGNhbkJ1YmJsZUFyZywKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MIGNhbmNlbGFibGVBcmcpIHsgcmV0dXJuIERPTUV2ZW50Ojppbml0
RXZlbnQoZXZlbnRUeXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHR5cGUoX19kZXJlZl9vcHRfb3V0IEJT
VFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6dHlwZShyZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFy
Z2V0KF9DT01fT3V0cHRyX29wdF8gSURPTUV2ZW50VGFyZ2V0KiogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTUV2ZW50Ojp0YXJnZXQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGN1cnJlbnRUYXJnZXQoX0NPTV9PdXRw
dHJfb3B0XyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRXZlbnQ6OmN1cnJlbnRUYXJnZXQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2ZW50UGhhc2UoX091dF8gdW5zaWduZWQgc2hv
cnQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6ZXZlbnRQaGFzZShy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgYnViYmxlcyhfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
RXZlbnQ6OmJ1YmJsZXMocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNhbmNlbGFibGUoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUV2ZW50OjpjYW5jZWxhYmxlKHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aW1lU3RhbXAoX091dF8g
RE9NVGltZVN0YW1wKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OnRp
bWVTdGFtcChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc3RvcFByb3BhZ2F0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01F
dmVudDo6c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2ZW50RGVmYXVsdCgpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NRXZlbnQ6OnByZXZlbnREZWZhdWx0KCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0RXZlbnQoX0luXyBCU1RSIGV2ZW50VHlwZUFy
ZywgQk9PTCBjYW5CdWJibGVBcmcsIEJPT0wgY2FuY2VsYWJsZUFyZykKKyAgICB7CisgICAgICAg
IHJldHVybiBET01FdmVudDo6aW5pdEV2ZW50KGV2ZW50VHlwZUFyZywgY2FuQnViYmxlQXJnLCBj
YW5jZWxhYmxlQXJnKTsKKyAgICB9CiAKICAgICAvLyBJRE9NVUlFdmVudAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aWV3KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NV2luZG93KiogcmVzdWx0KSB7IHJldHVybiBET01VSUV2ZW50Ojp2aWV3KHJlc3Vs
dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlldyhfQ09NX091
dHB0cl9vcHRfIElET01XaW5kb3cqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
VUlFdmVudDo6dmlldyhyZXN1bHQpOworICAgIH0KICAgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGV0YWlsKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBs
b25nKiByZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OmRldGFpbChyZXN1bHQpOyB9CiAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRVSUV2ZW50KCAKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIHR5cGUsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjYW5C
dWJibGUsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjYW5jZWxhYmxlLAotICAgICAgICAvKiBb
aW5dICovIElET01XaW5kb3cqIHZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gbG9uZyBkZXRhaWwp
IHsgcmV0dXJuIERPTVVJRXZlbnQ6OmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdmlldywgZGV0YWlsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBrZXlDb2RlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OmtleUNvZGUocmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGFyQ29kZSggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KSB7IHJldHVybiBET01VSUV2ZW50OjpjaGFy
Q29kZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHVudXNlZDEoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KSB7
IHJldHVybiBET01VSUV2ZW50Ojp1bnVzZWQxKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMigKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBsb25nKiByZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OnVudXNlZDIocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlWCgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KSB7IHJldHVybiBET01V
SUV2ZW50OjpwYWdlWChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHBhZ2VZKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OnBhZ2VZKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2hpY2goIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyByZXR1cm4gRE9NVUlFdmVudDo6d2hpY2gocmVz
dWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0VUlFdmVu
dChfSW5fIEJTVFIgdHlwZSwgQk9PTCBjYW5CdWJibGUsIEJPT0wgY2FuY2VsYWJsZSwgX0luX29w
dF8gSURPTVdpbmRvdyogdmlldywgbG9uZyBkZXRhaWwpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NVUlFdmVudDo6aW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3
LCBkZXRhaWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUga2V5Q29kZShfT3V0XyBsb25nKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NVUlFdmVudDo6a2V5Q29kZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hhckNvZGUoX091dF8gbG9uZyogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTVVJRXZlbnQ6OmNoYXJDb2RlKHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQxKF9PdXRf
IGxvbmcqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01VSUV2ZW50Ojp1bnVzZWQx
KHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB1bnVzZWQyKF9PdXRfIGxvbmcqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01VSUV2ZW50Ojp1bnVzZWQyKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlWChfT3V0XyBsb25nKiByZXN1bHQpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NVUlFdmVudDo6cGFnZVgocmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhZ2VZKF9PdXRfIGxvbmcqIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01VSUV2ZW50OjpwYWdlWShyZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2hpY2go
X091dF8gbG9uZyogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTVVJRXZlbnQ6Ondo
aWNoKHJlc3VsdCk7CisgICAgfQogCiAgICAgLy8gSURPTUtleWJvYXJkRXZlbnQKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUga2V5SWRlbnRpZmllciggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYXRpb24oCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gdW5zaWduZWQgbG9uZyogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUga2V5TG9jYXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IHVuc2lnbmVkIGxvbmcqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGN0cmxLZXkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNo
aWZ0S2V5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbHRLZXkoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ldGFLZXkoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGFsdEdyYXBoS2V5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBn
ZXRNb2RpZmllclN0YXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGtleUlkZW50aWZpZXJB
cmcsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdEtleWJvYXJkRXZlbnQoIAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgdHlwZSwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGNh
bkJ1YmJsZSwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGNhbmNlbGFibGUsCi0gICAgICAgIC8q
IFtpbl0gKi8gSURPTVdpbmRvdyogdmlldywKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGtleUlk
ZW50aWZpZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyBrZXlMb2NhdGlvbiwK
LSAgICAgICAgLyogW2luXSAqLyBCT09MIGN0cmxLZXksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9P
TCBhbHRLZXksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBzaGlmdEtleSwKLSAgICAgICAgLyog
W2luXSAqLyBCT09MIG1ldGFLZXksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBncmFwaEtleSk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGtleUlkZW50aWZpZXIoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGxvY2F0aW9uKF9PdXRfIHVuc2lnbmVkIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUga2V5TG9jYXRpb24oX091dF8gdW5zaWduZWQgbG9uZyop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdHJsS2V5KF9PdXRfIEJP
T0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hpZnRLZXkoX091
dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbHRLZXko
X091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZXRh
S2V5KF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YWx0R3JhcGhLZXkoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBnZXRNb2RpZmllclN0YXRlKF9Jbl8gQlNUUiBrZXlJZGVudGlmaWVyQXJnLCBfT3V0
XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBp
bml0S2V5Ym9hcmRFdmVudChfSW5fIEJTVFIgdHlwZSwgQk9PTCBjYW5CdWJibGUsIEJPT0wgY2Fu
Y2VsYWJsZSwKKyAgICAgICAgX0luX29wdF8gSURPTVdpbmRvdyogdmlldywgX0luXyBCU1RSIGtl
eUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcga2V5TG9jYXRpb24sIEJPT0wgY3RybEtleSwKKyAg
ICAgICAgQk9PTCBhbHRLZXksIEJPT0wgc2hpZnRLZXksIEJPT0wgbWV0YUtleSwgQk9PTCBncmFw
aEtleSk7CiB9OwogCiBjbGFzcyBET01Nb3VzZUV2ZW50IDogcHVibGljIERPTVVJRXZlbnQsIHB1
YmxpYyBJRE9NTW91c2VFdmVudApAQCAtNDQ4LDE3MyArNDY3LDE3MyBAQCBwdWJsaWM6CiAgICAg
RE9NTW91c2VFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBlKSA6IERPTVVJRXZlbnQo
ZSkgeyB9CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0g
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4g
RE9NVUlFdmVudDo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVm
KCkgeyByZXR1cm4gRE9NVUlFdmVudDo6QWRkUmVmKCk7IH0KICAgICB2aXJ0dWFsIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCkgeyByZXR1cm4gRE9NVUlFdmVudDo6UmVsZWFz
ZSgpOyB9CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVz
dWx0KSB7IHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2Us
IHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y2FsbFdlYlNjcmlwdE1ldGhvZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAg
ICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCi0gICAgICAg
IC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUs
IGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IHNjcmlwdCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsg
cmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlw
dEtleSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01PYmplY3Q6
OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbiggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTU9iamVj
dDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRl
eCggCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAg
ICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFS
SUFOVCB2YWwpIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGlu
ZGV4LCB2YWwpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldEV4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyBy
ZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNUUiBleGNl
cHRpb25NZXNzYWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNj
cmlwdE1ldGhvZChfSW5fIEJTVFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBW
QVJJQU5UIGFyZ3NbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3Ms
IGNBcmdzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFS
SUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVX
ZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNUUiBuYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3Ry
aW5nUmVwcmVzZW50YXRpb24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRp
b24oc3RyaW5nUmVwcmVzZW50YXRpb24pOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4
LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0
Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5k
ZXgodW5zaWduZWQgaW5kZXgsIFZBUklBTlQgdmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TU9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9J
bl8gQlNUUiBkZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnNl
dEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7CisgICAgfQogCiAgICAgLy8gSURPTUV2ZW50Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHR5cGUoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OnR5cGUocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YXJnZXQo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FdmVudFRhcmdldCoqIHJlc3VsdCkg
eyByZXR1cm4gRE9NRXZlbnQ6OnRhcmdldChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGN1cnJlbnRUYXJnZXQoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01FdmVudFRhcmdldCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6
OmN1cnJlbnRUYXJnZXQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBldmVudFBoYXNlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1
bnNpZ25lZCBzaG9ydCogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6ZXZlbnRQaGFzZShyZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJ1YmJs
ZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4g
RE9NRXZlbnQ6OmJ1YmJsZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjYW5jZWxhYmxlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50OjpjYW5jZWxhYmxlKHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGltZVN0YW1wKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBET01UaW1lU3RhbXAqIHJlc3VsdCkgeyByZXR1
cm4gRE9NRXZlbnQ6OnRpbWVTdGFtcChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHN0b3BQcm9wYWdhdGlvbiggdm9pZCkgeyByZXR1cm4gRE9N
RXZlbnQ6OnN0b3BQcm9wYWdhdGlvbigpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHByZXZlbnREZWZhdWx0KCB2b2lkKSB7IHJldHVybiBET01FdmVudDo6
cHJldmVudERlZmF1bHQoKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpbml0RXZlbnQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZXZlbnRUeXBlQXJn
LAotICAgICAgICAvKiBbaW5dICovIEJPT0wgY2FuQnViYmxlQXJnLAotICAgICAgICAvKiBbaW5d
ICovIEJPT0wgY2FuY2VsYWJsZUFyZykgeyByZXR1cm4gRE9NRXZlbnQ6OmluaXRFdmVudChldmVu
dFR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHlwZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50Ojp0eXBlKHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YXJnZXQoX0NPTV9P
dXRwdHJfb3B0XyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NRXZlbnQ6OnRhcmdldChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3VycmVudFRhcmdldChfQ09NX091dHB0cl9vcHRfIElE
T01FdmVudFRhcmdldCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6
Y3VycmVudFRhcmdldChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZXZlbnRQaGFzZShfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50OjpldmVudFBoYXNlKHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBidWJibGVz
KF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6YnVi
YmxlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2FuY2VsYWJsZShfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NRXZlbnQ6OmNhbmNlbGFibGUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRpbWVTdGFtcChfT3V0XyBET01UaW1lU3Rh
bXAqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6dGltZVN0YW1wKHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdG9wUHJvcGFnYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50OjpzdG9w
UHJvcGFnYXRpb24oKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHByZXZlbnREZWZhdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVu
dDo6cHJldmVudERlZmF1bHQoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGluaXRFdmVudChfSW5fIEJTVFIgZXZlbnRUeXBlQXJnLCBCT09MIGNh
bkJ1YmJsZUFyZywgQk9PTCBjYW5jZWxhYmxlQXJnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUV2ZW50Ojppbml0RXZlbnQoZXZlbnRUeXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVB
cmcpOworICAgIH0KIAogICAgIC8vIElET01VSUV2ZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHZpZXcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01X
aW5kb3cqKiByZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OnZpZXcocmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZXRhaWwoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyByZXR1cm4gRE9NVUlFdmVudDo6
ZGV0YWlsKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaW5pdFVJRXZlbnQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdHlwZSwKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MIGNhbkJ1YmJsZSwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGNh
bmNlbGFibGUsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTVdpbmRvdyogdmlldywKLSAgICAgICAg
LyogW2luXSAqLyBsb25nIGRldGFpbCkgeyByZXR1cm4gRE9NVUlFdmVudDo6aW5pdFVJRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGtleUNvZGUoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyByZXR1cm4gRE9NVUlFdmVudDo6a2V5Q29k
ZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNoYXJDb2RlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1bHQpIHsg
cmV0dXJuIERPTVVJRXZlbnQ6OmNoYXJDb2RlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMSgKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBsb25nKiByZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OnVudXNlZDEocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQy
KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyByZXR1cm4gRE9N
VUlFdmVudDo6dW51c2VkMihyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBhZ2VYKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25n
KiByZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OnBhZ2VYKHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFnZVkoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyByZXR1cm4gRE9NVUlFdmVudDo6cGFnZVko
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
aGljaCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KSB7IHJldHVy
biBET01VSUV2ZW50Ojp3aGljaChyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHZpZXcoX0NPTV9PdXRwdHJfb3B0XyBJRE9NV2luZG93KiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTVVJRXZlbnQ6OnZpZXcocmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRldGFpbChfT3V0XyBs
b25nKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NVUlFdmVudDo6ZGV0YWlsKHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpbml0VUlFdmVudChfSW5fIEJTVFIgdHlwZSwgQk9PTCBjYW5CdWJibGUsIEJPT0wgY2FuY2Vs
YWJsZSwgX0luX29wdF8gSURPTVdpbmRvdyogdmlldywgbG9uZyBkZXRhaWwpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NVUlFdmVudDo6aW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUga2V5Q29kZShfT3V0XyBsb25nKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NVUlFdmVudDo6a2V5Q29kZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hhckNvZGUoX091dF8gbG9uZyog
cmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTVVJRXZlbnQ6OmNoYXJDb2RlKHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1
bnVzZWQxKF9PdXRfIGxvbmcqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01VSUV2
ZW50Ojp1bnVzZWQxKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB1bnVzZWQyKF9PdXRfIGxvbmcqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01VSUV2ZW50Ojp1bnVzZWQyKHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlWChfT3V0XyBsb25nKiByZXN1
bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NVUlFdmVudDo6cGFnZVgocmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhZ2VZKF9P
dXRfIGxvbmcqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01VSUV2ZW50OjpwYWdl
WShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2hpY2goX091dF8gbG9uZyogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TVVJRXZlbnQ6OndoaWNoKHJlc3VsdCk7CisgICAgfQogCiAgICAgLy8gSURPTU1vdXNlRXZlbnQK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NyZWVuWCggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NyZWVuWSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gbG9uZyogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2xpZW50WCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVz
dWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xpZW50
WSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3RybEtleSggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hpZnRLZXkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGFsdEtleSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWV0YUtleSgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYnV0dG9uKCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVsYXRlZFRhcmdldCggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTUV2ZW50VGFyZ2V0KiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdE1vdXNlRXZlbnQoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgdHlwZSwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGNhbkJ1YmJsZSwK
LSAgICAgICAgLyogW2luXSAqLyBCT09MIGNhbmNlbGFibGUsCi0gICAgICAgIC8qIFtpbl0gKi8g
SURPTVdpbmRvdyogdmlldywKLSAgICAgICAgLyogW2luXSAqLyBsb25nIGRldGFpbCwKLSAgICAg
ICAgLyogW2luXSAqLyBsb25nIHNjcmVlblgsCi0gICAgICAgIC8qIFtpbl0gKi8gbG9uZyBzY3Jl
ZW5ZLAotICAgICAgICAvKiBbaW5dICovIGxvbmcgY2xpZW50WCwKLSAgICAgICAgLyogW2luXSAq
LyBsb25nIGNsaWVudFksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjdHJsS2V5LAotICAgICAg
ICAvKiBbaW5dICovIEJPT0wgYWx0S2V5LAotICAgICAgICAvKiBbaW5dICovIEJPT0wgc2hpZnRL
ZXksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBtZXRhS2V5LAotICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwKLSAgICAgICAgLyogW2luXSAqLyBJRE9NRXZlbnRUYXJn
ZXQqIHJlbGF0ZWRUYXJnZXQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBvZmZzZXRYKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvZmZzZXRZ
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB4KCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmcm9tRWxl
bWVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0b0VsZW1lbnQoCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JlZW5YKF9PdXRfIGxvbmcqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NyZWVuWShfT3V0XyBsb25nKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsaWVudFgoX091dF8gbG9uZyop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGllbnRZKF9PdXRfIGxv
bmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3RybEtleShfT3V0
XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNoaWZ0S2V5
KF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWx0
S2V5KF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bWV0YUtleShfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGJ1dHRvbihfT3V0XyB1bnNpZ25lZCBzaG9ydCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSByZWxhdGVkVGFyZ2V0KF9DT01fT3V0cHRyX29wdF8gSURPTUV2ZW50
VGFyZ2V0KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0TW91
c2VFdmVudChfSW5fIEJTVFIgdHlwZSwgQk9PTCBjYW5CdWJibGUsIEJPT0wgY2FuY2VsYWJsZSwg
X0luX29wdF8gSURPTVdpbmRvdyogdmlldywKKyAgICAgICAgbG9uZyBkZXRhaWwsIGxvbmcgc2Ny
ZWVuWCwgbG9uZyBzY3JlZW5ZLCBsb25nIGNsaWVudFgsIGxvbmcgY2xpZW50WSwgQk9PTCBjdHJs
S2V5LCBCT09MIGFsdEtleSwgQk9PTCBzaGlmdEtleSwgQk9PTCBtZXRhS2V5LAorICAgICAgICB1
bnNpZ25lZCBzaG9ydCBidXR0b24sIF9Jbl9vcHRfIElET01FdmVudFRhcmdldCogcmVsYXRlZFRh
cmdldCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldFgoX091
dF8gbG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvZmZzZXRZ
KF9PdXRfIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgeChf
T3V0XyBsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHkoX091
dF8gbG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmcm9tRWxl
bWVudChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB0b0VsZW1lbnQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqKTsK
IH07CiAKIGNsYXNzIERPTU11dGF0aW9uRXZlbnQgOiBwdWJsaWMgRE9NRXZlbnQsIHB1YmxpYyBJ
RE9NTXV0YXRpb25FdmVudApAQCAtNjIzLDk4ICs2NDIsMTExIEBAIHB1YmxpYzoKICAgICBET01N
dXRhdGlvbkV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+IGUpIDogRE9NRXZlbnQoZSkg
eyB9CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9N
RXZlbnQ6OkFkZFJlZigpOyB9Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBS
ZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTUV2ZW50OjpSZWxlYXNlKCk7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkgeyByZXR1cm4gRE9NRXZlbnQ6OkFkZFJlZigpOyB9Cisg
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCkgeyByZXR1cm4gRE9N
RXZlbnQ6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNl
cHRpb25NZXNzYWdlLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgbmFtZSwKLSAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3Nb
ICBdLAotICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlw
dE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFO
VCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwg
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZW1vdmVXZWJTY3JpcHRLZXkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1
cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJl
dHVybiBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9u
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERP
TU9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJ
bmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAv
KiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZh
bHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVz
Y3JpcHRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihf
SW5fIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTU9iamVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChj
QXJncykgY29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhv
ZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3Jp
cHQsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmpl
Y3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5f
IEJTVFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNj
cmlwdEtleShuYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJp
bmdSZXByZXNlbnRhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnN0cmlu
Z1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1
bnNpZ25lZCBpbmRleCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2Ny
aXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFs
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEV4Y2VwdGlvbihfSW5fIEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4g
RE9NT2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElE
T01FdmVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0eXBlKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50
Ojp0eXBlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGFyZ2V0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnRUYXJn
ZXQqKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50Ojp0YXJnZXQocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXJyZW50VGFyZ2V0KCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpIHsgcmV0
dXJuIERPTUV2ZW50OjpjdXJyZW50VGFyZ2V0KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZlbnRQaGFzZSggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OmV2
ZW50UGhhc2UocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBidWJibGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1
bHQpIHsgcmV0dXJuIERPTUV2ZW50OjpidWJibGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuY2VsYWJsZSggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6Y2FuY2VsYWJs
ZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHRpbWVTdGFtcCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gRE9NVGltZVN0YW1wKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50Ojp0aW1lU3RhbXAocmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdG9wUHJvcGFnYXRpb24oIHZvaWQp
IHsgcmV0dXJuIERPTUV2ZW50OjpzdG9wUHJvcGFnYXRpb24oKTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2ZW50RGVmYXVsdCggdm9pZCkgeyByZXR1
cm4gRE9NRXZlbnQ6OnByZXZlbnREZWZhdWx0KCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdEV2ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IGV2ZW50VHlwZUFyZywKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGNhbkJ1YmJsZUFyZywKLSAg
ICAgICAgLyogW2luXSAqLyBCT09MIGNhbmNlbGFibGVBcmcpIHsgcmV0dXJuIERPTUV2ZW50Ojpp
bml0RXZlbnQoZXZlbnRUeXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHR5cGUoX19kZXJlZl9vcHRfb3V0
IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6dHlwZShyZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dGFyZ2V0KF9DT01fT3V0cHRyX29wdF8gSURPTUV2ZW50VGFyZ2V0KiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUV2ZW50Ojp0YXJnZXQocmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGN1cnJlbnRUYXJnZXQoX0NPTV9P
dXRwdHJfb3B0XyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NRXZlbnQ6OmN1cnJlbnRUYXJnZXQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2ZW50UGhhc2UoX091dF8gdW5zaWduZWQg
c2hvcnQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6ZXZlbnRQaGFz
ZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgYnViYmxlcyhfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRXZlbnQ6OmJ1YmJsZXMocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNhbmNlbGFibGUoX091dF8gQk9PTCogcmVzdWx0KQorICAg
IHsgCisgICAgICAgIHJldHVybiBET01FdmVudDo6Y2FuY2VsYWJsZShyZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGltZVN0YW1wKF9P
dXRfIERPTVRpbWVTdGFtcCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50
Ojp0aW1lU3RhbXAocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHN0b3BQcm9wYWdhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRXZlbnQ6OnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmVudERlZmF1bHQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUV2ZW50OjpwcmV2ZW50RGVmYXVsdCgpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdEV2ZW50KF9Jbl8gQlNUUiBldmVudFR5
cGVBcmcsIEJPT0wgY2FuQnViYmxlQXJnLCBCT09MIGNhbmNlbGFibGVBcmcpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NRXZlbnQ6OmluaXRFdmVudChldmVudFR5cGVBcmcsIGNhbkJ1YmJsZUFy
ZywgY2FuY2VsYWJsZUFyZyk7CisgICAgfQogCiAgICAgLy8gSURPTU11dGF0aW9uRXZlbnQKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVsYXRlZE5vZGUoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldlZhbHVlKCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBuZXdWYWx1ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgYXR0ck5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJDaGFuZ2Uo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0TXV0YXRpb25F
dmVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0eXBlLAotICAgICAgICAvKiBbaW5dICov
IEJPT0wgY2FuQnViYmxlLAotICAgICAgICAvKiBbaW5dICovIEJPT0wgY2FuY2VsYWJsZSwKLSAg
ICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogcmVsYXRlZE5vZGUsCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBwcmV2VmFsdWUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuZXdWYWx1ZSwKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIGF0dHJOYW1lLAotICAgICAgICAvKiBbaW5dICovIHVuc2ln
bmVkIHNob3J0IGF0dHJDaGFuZ2UpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZWxhdGVkTm9kZShfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2VmFsdWUoX19kZXJlZl9vcHRfb3V0IEJT
VFIqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5ld1Zh
bHVlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhdHRyTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0ckNoYW5nZShfT3V0XyB1
bnNpZ25lZCBzaG9ydCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaW5pdE11dGF0aW9uRXZlbnQoX0luXyBCU1RSIHR5cGUsIEJPT0wgY2FuQnViYmxlLCBC
T09MIGNhbmNlbGFibGUsCisgICAgICAgIF9Jbl9vcHRfIElET01Ob2RlKiByZWxhdGVkTm9kZSwg
X0luXyBCU1RSIHByZXZWYWx1ZSwgX0luXyBCU1RSIG5ld1ZhbHVlLCBfSW5fIEJTVFIgYXR0ck5h
bWUsCisgICAgICAgIHVuc2lnbmVkIHNob3J0IGF0dHJDaGFuZ2UpOwogfTsKIAogY2xhc3MgRE9N
T3ZlcmZsb3dFdmVudCA6IHB1YmxpYyBET01FdmVudCwgcHVibGljIElET01PdmVyZmxvd0V2ZW50
CkBAIC03MjMsODIgKzc1NSwxMDYgQEAgcHVibGljOgogICAgIERPTU92ZXJmbG93RXZlbnQoUGFz
c1JlZlB0cjxXZWJDb3JlOjpFdmVudD4gZSkgOiBET01FdmVudChlKSB7IH0KIAogICAgIC8vIElV
bmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJm
YWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01FdmVudDo6QWRkUmVmKCk7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkgeyByZXR1cm4gRE9NRXZlbnQ6
OkFkZFJlZigpOyB9CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNl
KHZvaWQpIHsgcmV0dXJuIERPTUV2ZW50OjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3Jp
cHRPYmplY3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNl
cHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6
dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8g
Y29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01P
YmplY3Q6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJT
Y3JpcHQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0
ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIG5hbWUpIHsgcmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdS
ZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NT2JqZWN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbihz
dHJpbmdSZXByZXNlbnRhdGlvbik7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1
bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCog
cmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwg
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGlu
dCBpbmRleCwKLSAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyByZXR1cm4gRE9NT2Jq
ZWN0OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnNldEV4Y2Vw
dGlvbihkZXNjcmlwdGlvbik7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdGhyb3dFeGNlcHRpb24oX0luXyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9u
KGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiBuYW1l
LCBfX2luX2Vjb3VudF9vcHQoY0FyZ3MpIGNvbnN0IFZBUklBTlQgYXJnc1tdLCBpbnQgY0FyZ3Ms
IF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6
OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNj
cmlwdChfSW5fIEJTVFIgc2NyaXB0LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVXZWJTY3JpcHRLZXkoX0luXyBCU1RSIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
T2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVm
X29wdF9vdXQgQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1
cm4gRE9NT2JqZWN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChp
bmRleCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFSSUFO
VCB2YWwpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRXZWJTY3JpcHRWYWx1
ZUF0SW5kZXgoaW5kZXgsIHZhbCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oX0luXyBCU1RSIGRlc2NyaXB0aW9uKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsK
KyAgICB9CiAKICAgICAvLyBJRE9NRXZlbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdHlwZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KSB7IHJldHVybiBET01FdmVudDo6dHlwZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhcmdldCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUV2ZW50VGFyZ2V0KiogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6dGFyZ2V0
KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y3VycmVudFRhcmdldCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUV2ZW50VGFy
Z2V0KiogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6Y3VycmVudFRhcmdldChyZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2ZW50UGhhc2Uo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpIHsg
cmV0dXJuIERPTUV2ZW50OjpldmVudFBoYXNlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYnViYmxlcyggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6YnViYmxlcyhyZXN1bHQp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbmNlbGFi
bGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4g
RE9NRXZlbnQ6OmNhbmNlbGFibGUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aW1lU3RhbXAoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIERPTVRpbWVTdGFtcCogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6dGltZVN0YW1wKHJl
c3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3Rv
cFByb3BhZ2F0aW9uKCB2b2lkKSB7IHJldHVybiBET01FdmVudDo6c3RvcFByb3BhZ2F0aW9uKCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmVudERl
ZmF1bHQoIHZvaWQpIHsgcmV0dXJuIERPTUV2ZW50OjpwcmV2ZW50RGVmYXVsdCgpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRFdmVudCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBldmVudFR5cGVBcmcsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9P
TCBjYW5CdWJibGVBcmcsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjYW5jZWxhYmxlQXJnKSB7
IHJldHVybiBET01FdmVudDo6aW5pdEV2ZW50KGV2ZW50VHlwZUFyZywgY2FuQnViYmxlQXJnLCBj
YW5jZWxhYmxlQXJnKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
eXBlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRXZlbnQ6OnR5cGUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRhcmdldChfQ09NX091dHB0cl9vcHRfIElET01FdmVudFRhcmdl
dCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6dGFyZ2V0KHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
dXJyZW50VGFyZ2V0KF9DT01fT3V0cHRyX29wdF8gSURPTUV2ZW50VGFyZ2V0KiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50OjpjdXJyZW50VGFyZ2V0KHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmVudFBo
YXNlKF9PdXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRXZlbnQ6OmV2ZW50UGhhc2UocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJ1YmJsZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50OjpidWJibGVzKHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5jZWxhYmxlKF9PdXRf
IEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6Y2FuY2VsYWJs
ZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGltZVN0YW1wKF9PdXRfIERPTVRpbWVTdGFtcCogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUV2ZW50Ojp0aW1lU3RhbXAocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0b3BQcm9wYWdhdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmVudERlZmF1bHQo
KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6cHJldmVudERlZmF1bHQoKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRFdmVu
dChfSW5fIEJTVFIgZXZlbnRUeXBlQXJnLCBCT09MIGNhbkJ1YmJsZUFyZywgQk9PTCBjYW5jZWxh
YmxlQXJnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50Ojppbml0RXZlbnQoZXZlbnRU
eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOworICAgIH0KIAogICAgIC8vIElE
T01PdmVyZmxvd0V2ZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9y
aWVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhvcml6b250
YWxPdmVyZmxvdyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmVydGljYWxPdmVy
ZmxvdyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3JpZW50KF9PdXRfIHVuc2lnbmVkIHNo
b3J0Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhvcml6b250YWxP
dmVyZmxvdyhfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHZlcnRpY2FsT3ZlcmZsb3coX091dF8gQk9PTCopOwogfTsKIAogY2xhc3MgRE9NV2hlZWxF
dmVudCA6IHB1YmxpYyBET01VSUV2ZW50LCBwdWJsaWMgSURPTVdoZWVsRXZlbnQKQEAgLTgwNywx
NjkgKzg2MywxNzIgQEAgcHVibGljOgogICAgIERPTVdoZWVsRXZlbnQoUGFzc1JlZlB0cjxXZWJD
b3JlOjpFdmVudD4gZSkgOiBET01VSUV2ZW50KGUpIHsgfQogCiAgICAgLy8gSVVua25vd24KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlE
IHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OkFkZFJlZigpOyB9Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERP
TVVJRXZlbnQ6OlJlbGVhc2UoKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
KSB7IHJldHVybiBET01VSUV2ZW50OjpBZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpIHsgcmV0dXJuIERPTVVJRXZlbnQ6OlJlbGVhc2UoKTsg
fQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNl
cHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkg
eyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxX
ZWJTY3JpcHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAg
LyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAotICAgICAgICAvKiBb
aW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdz
LCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3Jp
cHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVy
biBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXko
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NT2JqZWN0OjpyZW1v
dmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnN0
cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAot
ICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0
VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8q
IFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQg
dmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwg
dmFsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRF
eGNlcHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJu
IERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9u
TWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9i
amVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRN
ZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFSSUFO
VCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJn
cywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQsIF9PdXRfIFZBUklBTlQq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2Ny
aXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikK
KyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0
cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgX091
dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6d2Vi
U2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVu
c2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmpl
Y3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5fIEJT
VFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNl
cHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElET01FdmVudAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0eXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50Ojp0eXBlKHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFyZ2V0KCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpIHsgcmV0
dXJuIERPTUV2ZW50Ojp0YXJnZXQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjdXJyZW50VGFyZ2V0KCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NRXZlbnRUYXJnZXQqKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2ZW50OjpjdXJy
ZW50VGFyZ2V0KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZXZlbnRQaGFzZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWdu
ZWQgc2hvcnQqIHJlc3VsdCkgeyByZXR1cm4gRE9NRXZlbnQ6OmV2ZW50UGhhc2UocmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBidWJibGVzKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTUV2
ZW50OjpidWJibGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2FuY2VsYWJsZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCogcmVzdWx0KSB7IHJldHVybiBET01FdmVudDo6Y2FuY2VsYWJsZShyZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRpbWVTdGFtcCggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gRE9NVGltZVN0YW1wKiByZXN1bHQpIHsgcmV0dXJuIERP
TUV2ZW50Ojp0aW1lU3RhbXAocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzdG9wUHJvcGFnYXRpb24oIHZvaWQpIHsgcmV0dXJuIERPTUV2ZW50
OjpzdG9wUHJvcGFnYXRpb24oKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwcmV2ZW50RGVmYXVsdCggdm9pZCkgeyByZXR1cm4gRE9NRXZlbnQ6OnByZXZl
bnREZWZhdWx0KCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaW5pdEV2ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV2ZW50VHlwZUFyZywKLSAg
ICAgICAgLyogW2luXSAqLyBCT09MIGNhbkJ1YmJsZUFyZywKLSAgICAgICAgLyogW2luXSAqLyBC
T09MIGNhbmNlbGFibGVBcmcpIHsgcmV0dXJuIERPTUV2ZW50Ojppbml0RXZlbnQoZXZlbnRUeXBl
QXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHR5cGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6dHlwZShyZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFyZ2V0KF9DT01fT3V0cHRy
X29wdF8gSURPTUV2ZW50VGFyZ2V0KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUV2ZW50Ojp0YXJnZXQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGN1cnJlbnRUYXJnZXQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NRXZl
bnRUYXJnZXQqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OmN1cnJl
bnRUYXJnZXQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGV2ZW50UGhhc2UoX091dF8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01FdmVudDo6ZXZlbnRQaGFzZShyZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYnViYmxlcyhfT3V0
XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OmJ1YmJsZXMo
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNhbmNlbGFibGUoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsgCisgICAgICAgIHJldHVy
biBET01FdmVudDo6Y2FuY2VsYWJsZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGltZVN0YW1wKF9PdXRfIERPTVRpbWVTdGFtcCog
cmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUV2ZW50Ojp0aW1lU3RhbXAocmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0
b3BQcm9wYWdhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OnN0b3BQcm9w
YWdhdGlvbigpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcHJldmVudERlZmF1bHQoKQorICAgIHsgcmV0dXJuIERPTUV2ZW50OjpwcmV2ZW50RGVm
YXVsdCgpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaW5pdEV2ZW50KF9Jbl8gQlNUUiBldmVudFR5cGVBcmcsIEJPT0wgY2FuQnViYmxlQXJnLCBC
T09MIGNhbmNlbGFibGVBcmcpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRXZlbnQ6OmluaXRF
dmVudChldmVudFR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7CisgICAgfQog
CiAgICAgLy8gSURPTVVJRXZlbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdmlldyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTVdpbmRvdyoqIHJlc3Vs
dCkgeyByZXR1cm4gRE9NVUlFdmVudDo6dmlldyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRldGFpbCggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gbG9uZyogcmVzdWx0KSB7IHJldHVybiBET01VSUV2ZW50OjpkZXRhaWwocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0VUlF
dmVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0eXBlLAotICAgICAgICAvKiBbaW5dICov
IEJPT0wgY2FuQnViYmxlLAotICAgICAgICAvKiBbaW5dICovIEJPT0wgY2FuY2VsYWJsZSwKLSAg
ICAgICAgLyogW2luXSAqLyBJRE9NV2luZG93KiB2aWV3LAotICAgICAgICAvKiBbaW5dICovIGxv
bmcgZGV0YWlsKSB7IHJldHVybiBET01VSUV2ZW50Ojppbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUga2V5Q29kZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gbG9uZyogcmVzdWx0KSB7IHJldHVybiBET01VSUV2ZW50OjprZXlDb2RlKHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hhckNvZGUoIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyByZXR1cm4gRE9NVUlF
dmVudDo6Y2hhckNvZGUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB1bnVzZWQxKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcq
IHJlc3VsdCkgeyByZXR1cm4gRE9NVUlFdmVudDo6dW51c2VkMShyZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDIoCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gbG9uZyogcmVzdWx0KSB7IHJldHVybiBET01VSUV2ZW50Ojp1bnVz
ZWQyKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcGFnZVgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NVUlFdmVudDo6cGFnZVgocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlWSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gbG9uZyogcmVzdWx0KSB7IHJldHVybiBET01VSUV2ZW50OjpwYWdlWShyZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdoaWNoKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1bHQpIHsgcmV0dXJuIERPTVVJRXZlbnQ6
OndoaWNoKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dmlldyhfQ09NX091dHB0cl9vcHRfIElET01XaW5kb3cqKiByZXN1bHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NVUlFdmVudDo6dmlldyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGV0YWlsKF9PdXRfIGxvbmcqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01VSUV2ZW50OjpkZXRhaWwocmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRVSUV2ZW50
KF9Jbl8gQlNUUiB0eXBlLCBCT09MIGNhbkJ1YmJsZSwgQk9PTCBjYW5jZWxhYmxlLCBfSW5fb3B0
XyBJRE9NV2luZG93KiB2aWV3LCBsb25nIGRldGFpbCkKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01VSUV2ZW50Ojppbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcs
IGRldGFpbCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBrZXlDb2RlKF9PdXRfIGxvbmcqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01VSUV2ZW50OjprZXlDb2RlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGFyQ29kZShfT3V0XyBsb25nKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NVUlFdmVudDo6Y2hhckNvZGUocmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDEoX091dF8g
bG9uZyogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTVVJRXZlbnQ6OnVudXNlZDEo
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHVudXNlZDIoX091dF8gbG9uZyogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TVVJRXZlbnQ6OnVudXNlZDIocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHBhZ2VYKF9PdXRfIGxvbmcqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01VSUV2ZW50OjpwYWdlWChyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFnZVkoX091dF8gbG9uZyogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTVVJRXZlbnQ6OnBhZ2VZKHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aGljaChf
T3V0XyBsb25nKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NVUlFdmVudDo6d2hp
Y2gocmVzdWx0KTsKKyAgICB9CiAKICAgICAvLyBJRE9NV2hlZWxFdmVudAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JlZW5YKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzY3JlZW5ZKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiBy
ZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGll
bnRYKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGllbnRZKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdHJsS2V5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzaGlmdEtleSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVz
dWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWx0S2V5
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZXRhS2V5KCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB3aGVlbERlbHRhKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBsb25nKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB3aGVlbERlbHRhWCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyog
cmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2hl
ZWxEZWx0YVkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldFgoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldFkoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIGxvbmcqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHkoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzSG9yaXpvbnRhbCggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdoZWVsRXZlbnQoIAotICAgICAgICAvKiBbaW5dICovIGxv
bmcgd2hlZWxEZWx0YVgsCi0gICAgICAgIC8qIFtpbl0gKi8gbG9uZyB3aGVlbERlbHRhWSwKLSAg
ICAgICAgLyogW2luXSAqLyBJRE9NV2luZG93KiB2aWV3LAotICAgICAgICAvKiBbaW5dICovIGxv
bmcgc2NyZWVuWCwKLSAgICAgICAgLyogW2luXSAqLyBsb25nIHNjcmVlblksCi0gICAgICAgIC8q
IFtpbl0gKi8gbG9uZyBjbGllbnRYLAotICAgICAgICAvKiBbaW5dICovIGxvbmcgY2xpZW50WSwK
LSAgICAgICAgLyogW2luXSAqLyBCT09MIGN0cmxLZXksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9P
TCBhbHRLZXksCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBzaGlmdEtleSwKLSAgICAgICAgLyog
W2luXSAqLyBCT09MIG1ldGFLZXkpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzY3JlZW5YKF9PdXRfIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2NyZWVuWShfT3V0XyBsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNsaWVudFgoX091dF8gbG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjbGllbnRZKF9PdXRfIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY3RybEtleShfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNoaWZ0S2V5KF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWx0S2V5KF9PdXRfIEJPT0wqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWV0YUtleShfT3V0XyBCT09MKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdoZWVsRGVsdGEoX091dF8gbG9u
ZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aGVlbERlbHRhWChf
T3V0XyBsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdoZWVs
RGVsdGFZKF9PdXRfIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgb2Zmc2V0WChfT3V0XyBsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIG9mZnNldFkoX091dF8gbG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB4KF9PdXRfIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgeShfT3V0XyBsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlzSG9yaXpvbnRhbChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGluaXRXaGVlbEV2ZW50KGxvbmcgd2hlZWxEZWx0YVgsIGxvbmcgd2hl
ZWxEZWx0YVksCisgICAgICAgIF9Jbl9vcHRfIElET01XaW5kb3cqIHZpZXcsIGxvbmcgc2NyZWVu
WCwgbG9uZyBzY3JlZW5ZLCBsb25nIGNsaWVudFgsIGxvbmcgY2xpZW50WSwKKyAgICAgICAgQk9P
TCBjdHJsS2V5LCBCT09MIGFsdEtleSwgQk9PTCBzaGlmdEtleSwgQk9PTCBtZXRhS2V5KTsKIH07
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAkocmV2aXNp
b24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAwNywgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTczLDkgKzczLDExIEBAIElET01IVE1M
Q29sbGVjdGlvbiogRE9NSFRNTENvbGxlY3Rpb246OmMKIAogLy8gRE9NSFRNTENvbGxlY3Rpb24g
LSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxDb2xsZWN0aW9uOjpRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NSFRNTENv
bGxlY3Rpb246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyAg
dm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9i
amVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0
cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01IVE1MQ29sbGVjdGlvbikpCiAg
ICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NSFRNTENvbGxlY3Rpb24qPih0aGlz
KTsKICAgICBlbHNlCkBAIC04Nyw5ICs4OSwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxDb2xsZWN0CiAKIC8vIERPTUhUTUxDb2xsZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFVJTlQqIHJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTENvbGxlY3Rpb246Omxlbmd0
aChfT3V0XyBVSU5UKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IDA7CiAgICAgaWYgKCFtX2NvbGxlY3Rpb24pCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC05OCwxMSArMTAxLDExIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTENvbGxlY3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MQ29sbGVjdGlvbjo6aXRlbSggCi0gICAgLyog
W2luXSAqLyBVSU5UIGluZGV4LAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiBu
b2RlKQorSFJFU1VMVCBET01IVE1MQ29sbGVjdGlvbjo6aXRlbShVSU5UIGluZGV4LCBfQ09NX091
dHB0cl9vcHRfIElET01Ob2RlKiogbm9kZSkKIHsKLSAgICAqbm9kZSA9IDA7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpub2RlID0gbnVsbHB0cjsKICAg
ICBpZiAoIW1fY29sbGVjdGlvbikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIApAQCAtMTEw
LDE5ICsxMTMsMjIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MQ29sbGVjdAog
ICAgIHJldHVybiAqbm9kZSA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbSggCi0gICAgLyogW2luXSAqLyBC
U1RSIC8qbmFtZSovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiAvKm5vZGUq
LykKK0hSRVNVTFQgRE9NSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShfSW5fIEJTVFIgLypuYW1l
Ki8sIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiBub2RlKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqbm9kZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAogLy8gRE9NSFRN
TE9wdGlvbnNDb2xsZWN0aW9uIC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3Qp
CitIUkVTVUxUIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0luXyBS
RUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9i
amVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJ
RF9JRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRp
Y19jYXN0PElET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24qPih0aGlzKTsKICAgICBlbHNlCkBAIC0x
NDIsMjAgKzE0OCwxOSBAQCBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb246OkRPTUhUTUxPcHRpb25z
CiBJRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNy
ZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlvbikK
IHsKICAgICBpZiAoIWNvbGxlY3Rpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIElET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24qIG9wdGlvbnNDb2xs
ZWN0aW9uID0gMDsKKyAgICBJRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBvcHRpb25zQ29sbGVj
dGlvbiA9IG51bGxwdHI7CiAgICAgRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBuZXdDb2xsZWN0
aW9uID0gbmV3IERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbihjb2xsZWN0aW9uKTsKICAgICBpZiAo
RkFJTEVEKG5ld0NvbGxlY3Rpb24tPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTE9wdGlvbnND
b2xsZWN0aW9uLCAodm9pZCoqKSZvcHRpb25zQ29sbGVjdGlvbikpKSB7CiAgICAgICAgIGRlbGV0
ZSBuZXdDb2xsZWN0aW9uOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgcmV0dXJuIG9wdGlvbnNDb2xsZWN0aW9uOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoKCAKLSAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIGludCogcmVzdWx0KQorSFJFU1VMVCBET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb246Omxlbmd0aChfT3V0XyB1bnNpZ25lZCogcmVzdWx0KQogewog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTY0LDE2ICsx
NjksMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MT3B0aW9ucwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6c2V0TGVuZ3RoKCAKLSAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCAvKmxl
bmd0aCovKQorSFJFU1VMVCBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aCh1bnNp
Z25lZCAvKmxlbmd0aCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjppdGVtKCAKLSAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KQorSFJFU1VMVCBET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgsIF9DT01fT3V0cHRyX29w
dF8gSURPTU5vZGUqKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CkBAIC0xODMsMTkgKzE4NSwyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxPcHRpb25zCiAgICAgcmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
bmFtZWRJdGVtKCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lKi8sCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NTm9kZSoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6bmFtZWRJdGVtKF9Jbl8gQlNUUiAvKm5hbWUqLywgX0NPTV9PdXRwdHJfb3B0
XyBJRE9NTm9kZSoqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBET01IVE1MRG9jdW1lbnQgLSBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTERvY3VtZW50OjpRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NSFRNTERvY3Vt
ZW50OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAg
ICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01IVE1MRG9jdW1lbnQpKQogICAgICAgICAq
cHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SURPTUhUTUxEb2N1bWVudCo+KHRoaXMpOwogICAgIGVs
c2UKQEAgLTIwNywxMyArMjEyLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TERvY3VtZW4KIAogLy8gRE9NSFRNTERvY3VtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxEb2N1bWVudDo6dGl0bGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTERvY3VtZW50Ojp0aXRsZShfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IDA7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7
CiAKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0yMjIsMjkgKzIyNiwzMyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVuCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAg
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6c2V0VGl0bGUoIAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgLyp0aXRsZSovKQorSFJFU1VMVCBET01IVE1MRG9jdW1l
bnQ6OnNldFRpdGxlKF9Jbl8gQlNUUiAvKnRpdGxlKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTERvY3VtZW50OjpyZWZlcnJlciggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTERvY3VtZW50OjpyZWZl
cnJlcihfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisg
ICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTERvY3VtZW50Ojpkb21haW4oIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxE
b2N1bWVudDo6ZG9tYWluKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwog
fQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbnQ6OlVSTCgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBET01I
VE1MRG9jdW1lbnQ6OlVSTChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjUzLDkgKzI2MSwxMSBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVuCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6
Ym9keSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUhUTUxFbGVtZW50KiogYm9k
eUVsZW1lbnQpCitIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6Ym9keShfQ09NX091dHB0cl9vcHRf
IElET01IVE1MRWxlbWVudCoqIGJvZHlFbGVtZW50KQogeworICAgIGlmICghYm9keUVsZW1lbnQp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICAqYm9keUVsZW1lbnQgPSBudWxscHRy
OwogICAgIGlmICghaXM8SFRNTERvY3VtZW50PihtX2RvY3VtZW50KSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKQEAgLTI2OCwzNyArMjc4LDQzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTERvY3VtZW4KICAgICByZXR1cm4gRV9GQUlMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbnQ6OnNldEJvZHkoIAotICAgICAgICAvKiBbaW5d
ICovIElET01IVE1MRWxlbWVudCogLypib2R5Ki8pCitIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6
c2V0Qm9keShfSW5fb3B0XyBJRE9NSFRNTEVsZW1lbnQqIC8qYm9keSovKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6aW1hZ2VzKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NSFRNTENvbGxlY3Rpb24qKiAvKmNvbGxlY3Rpb24qLykKK0hS
RVNVTFQgRE9NSFRNTERvY3VtZW50OjppbWFnZXMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTENv
bGxlY3Rpb24qKiBjb2xsZWN0aW9uKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IGlmICghY29sbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqY29sbGVj
dGlvbiA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTERvY3VtZW50OjphcHBsZXRzKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NSFRNTENvbGxlY3Rpb24qKiAvKmNvbGxlY3Rpb24qLykKK0hS
RVNVTFQgRE9NSFRNTERvY3VtZW50OjphcHBsZXRzKF9DT01fT3V0cHRyX29wdF8gSURPTUhUTUxD
b2xsZWN0aW9uKiogY29sbGVjdGlvbikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBpZiAoIWNvbGxlY3Rpb24pCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmNvbGxl
Y3Rpb24gPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6bGlua3MoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIElET01IVE1MQ29sbGVjdGlvbioqIC8qY29sbGVjdGlvbiovKQorSFJF
U1VMVCBET01IVE1MRG9jdW1lbnQ6OmxpbmtzKF9DT01fT3V0cHRyX29wdF8gSURPTUhUTUxDb2xs
ZWN0aW9uKiogY29sbGVjdGlvbikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBp
ZiAoIWNvbGxlY3Rpb24pCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmNvbGxlY3Rp
b24gPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6Zm9ybXMoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01IVE1MQ29sbGVjdGlvbioqIGNvbGxlY3Rpb24pCitIUkVTVUxUIERP
TUhUTUxEb2N1bWVudDo6Zm9ybXMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTENvbGxlY3Rpb24q
KiBjb2xsZWN0aW9uKQogeworICAgIGlmICghY29sbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKICAgICAqY29sbGVjdGlvbiA9IG51bGxwdHI7CiAgICAgaWYgKCFpczxIVE1MRG9j
dW1lbnQ+KG1fZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzA5LDI4ICsz
MjUsMzEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbgogICAgIHJl
dHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9j
dW1lbnQ6OmFuY2hvcnMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01IVE1MQ29s
bGVjdGlvbioqIC8qY29sbGVjdGlvbiovKQorSFJFU1VMVCBET01IVE1MRG9jdW1lbnQ6OmFuY2hv
cnMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTENvbGxlY3Rpb24qKiBjb2xsZWN0aW9uKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghY29sbGVjdGlvbikKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqY29sbGVjdGlvbiA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTERv
Y3VtZW50Ojpjb29raWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVz
dWx0Ki8pCitIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6Y29va2llKF9fZGVyZWZfb3B0X291dCBC
U1RSKiBjb29raWUpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFjb29r
aWUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmNvb2tpZSA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTERvY3VtZW50OjpzZXRDb29raWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypj
b29raWUqLykKK0hSRVNVTFQgRE9NSFRNTERvY3VtZW50OjpzZXRDb29raWUoX0luXyBCU1RSIC8q
Y29va2llKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTERvY3VtZW50
OjpvcGVuKCB2b2lkKQorSFJFU1VMVCBET01IVE1MRG9jdW1lbnQ6Om9wZW4oKQogewogICAgIGlm
ICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTMzOSw3ICszNTgsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVuCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6
Y2xvc2UoIHZvaWQpCitIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6Y2xvc2UoKQogewogICAgIGlm
ICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTM0OCw3ICszNjcsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVuCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1bWVudDo6
d3JpdGUoLyogW2luXSAqLyBCU1RSIHRleHQpCitIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6d3Jp
dGUoX0luXyBCU1RSIHRleHQpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1
cm4gRV9GQUlMOwpAQCAtMzU4LDcgKzM3Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTERvY3VtZW4KICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTERvY3VtZW50Ojp3cml0ZWxuKC8qIFtpbl0gKi8gQlNUUiB0ZXh0
KQorSFJFU1VMVCBET01IVE1MRG9jdW1lbnQ6OndyaXRlbG4oX0luXyBCU1RSIHRleHQpCiB7CiAg
ICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzY4LDI3ICsz
ODcsMzEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9jdW1lbgogICAgIHJl
dHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRG9j
dW1lbnQ6OmdldEVsZW1lbnRCeUlkXyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKmVsZW1l
bnRJZCovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbGVtZW50KiogLyplbGVt
ZW50Ki8pCitIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWRfKF9Jbl8gQlNU
UiAvKmVsZW1lbnRJZCovLCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiogZWxlbWVudCkK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CisgICAgKmVsZW1lbnQgPSBudWxscHRyOwogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxEb2N1
bWVudDo6Z2V0RWxlbWVudHNCeU5hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLyplbGVt
ZW50TmFtZSovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIC8q
bm9kZUxpc3QqLykKK0hSRVNVTFQgRE9NSFRNTERvY3VtZW50OjpnZXRFbGVtZW50c0J5TmFtZShf
SW5fIEJTVFIgLyplbGVtZW50TmFtZSovLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoq
IG5vZGVMaXN0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghbm9kZUxp
c3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKm5vZGVMaXN0ID0gbnVsbHB0cjsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBET01IVE1MRWxlbWVudCAtIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEVsZW1lbnQ6OlF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01IVE1MRWxlbWVudDo6UXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElz
RXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NSFRNTEVsZW1lbnQpKQogICAgICAgICAqcHB2T2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SURPTUhUTUxFbGVtZW50Kj4odGhpcyk7CiAgICAgZWxzZQpAQCAtNDAw
LDggKzQyMyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEVsZW1lbnQKIAog
Ly8gRE9NSFRNTEVsZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxFbGVtZW50OjppZE5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCkKK0hSRVNVTFQgRE9NSFRNTEVsZW1lbnQ6OmlkTmFtZShfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwpAQCAtNDEyLDk0ICs0MzQsOTggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
RWxlbWVudAogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MRWxlbWVudDo6c2V0SWROYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IC8qaWROYW1lKi8pCitIUkVTVUxUIERPTUhUTUxFbGVtZW50OjpzZXRJZE5hbWUoX0luXyBCU1RS
IC8qaWROYW1lKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEVsZW1l
bnQ6OnRpdGxlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCov
KQorSFJFU1VMVCBET01IVE1MRWxlbWVudDo6dGl0bGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJl
c3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
RWxlbWVudDo6c2V0VGl0bGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLyp0aXRsZSovKQor
SFJFU1VMVCBET01IVE1MRWxlbWVudDo6c2V0VGl0bGUoX0luXyBCU1RSIC8qdGl0bGUqLykKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRWxlbWVudDo6bGFuZyggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRN
TEVsZW1lbnQ6OmxhbmcoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
ICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRWxlbWVudDo6c2V0TGFuZygg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKmxhbmcqLykKK0hSRVNVTFQgRE9NSFRNTEVsZW1l
bnQ6OnNldExhbmcoX0luXyBCU1RSIC8qbGFuZyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxFbGVtZW50OjpkaXIoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxFbGVtZW50OjpkaXIoX19kZXJlZl9v
cHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01IVE1MRWxlbWVudDo6c2V0RGlyKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IC8qZGlyKi8pCitIUkVTVUxUIERPTUhUTUxFbGVtZW50OjpzZXREaXIoX0luXyBCU1RSIC8qZGly
Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEVsZW1lbnQ6OmNsYXNz
TmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hS
RVNVTFQgRE9NSFRNTEVsZW1lbnQ6OmNsYXNzTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVz
dWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxF
bGVtZW50OjpzZXRDbGFzc05hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypjbGFzc05h
bWUqLykKK0hSRVNVTFQgRE9NSFRNTEVsZW1lbnQ6OnNldENsYXNzTmFtZShfSW5fIEJTVFIgLypj
bGFzc05hbWUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxFbGVtZW50Ojpp
bm5lckhUTUwoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8p
CitIUkVTVUxUIERPTUhUTUxFbGVtZW50Ojppbm5lckhUTUwoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAv
Kmh0bWwqLykKK0hSRVNVTFQgRE9NSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChfSW5fIEJTVFIg
LypodG1sKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KICAgICAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxFbGVt
ZW50Ojppbm5lclRleHQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3Vs
dCkKK0hSRVNVTFQgRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dChfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQogewogICAgIEFTU0VSVChpczxIVE1MRWxlbWVudD4obV9lbGVtZW50KSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgV1RGOjpTdHJp
bmcgaW5uZXJUZXh0U3RyaW5nID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG1fZWxlbWVudCktPmlu
bmVyVGV4dCgpOwogICAgICpyZXN1bHQgPSBCU3RyaW5nKGlubmVyVGV4dFN0cmluZykucmVsZWFz
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB0ZXh0KQorSFJFU1VMVCBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KF9Jbl8gQlNU
UiB0ZXh0KQogewogICAgIEFTU0VSVChpczxIVE1MRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAg
SFRNTEVsZW1lbnQqIGh0bWxFbGUgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obV9lbGVtZW50KTsK
QEAgLTUxMSw5ICs1MzcsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRWxl
bWVudAogCiAvLyBET01IVE1MRm9ybUVsZW1lbnQgLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NSFRNTEZvcm1FbGVtZW50OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoq
IHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NSFRNTEZvcm1FbGVtZW50OjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAq
cHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlp
ZCwgSUlEX0lET01IVE1MRm9ybUVsZW1lbnQpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SURPTUhUTUxGb3JtRWxlbWVudCo+KHRoaXMpOwogICAgIGVsc2UKQEAgLTUyNSwxMTUg
KzU1MywxMjAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZQogCiAv
LyBET01IVE1MRm9ybUVsZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TEZvcm1FbGVtZW50OjplbGVtZW50cyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUhUTUxDb2xsZWN0aW9uKiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTEZvcm1FbGVtZW50
OjplbGVtZW50cyhfQ09NX091dHB0cl9vcHRfIElET01IVE1MQ29sbGVjdGlvbioqIHJlc3VsdCkK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVs
ZW1lbnQ6Omxlbmd0aCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiAvKnJlc3Vs
dCovKQorSFJFU1VMVCBET01IVE1MRm9ybUVsZW1lbnQ6Omxlbmd0aChfT3V0XyBpbnQqIC8qcmVz
dWx0Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50
OjpuYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQor
SFJFU1VMVCBET01IVE1MRm9ybUVsZW1lbnQ6Om5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJl
c3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
Rm9ybUVsZW1lbnQ6OnNldE5hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lKi8p
CitIUkVTVUxUIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0TmFtZShfSW5fIEJTVFIgLypuYW1lKi8p
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0K
ICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjphY2Nl
cHRDaGFyc2V0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCov
KQorSFJFU1VMVCBET01IVE1MRm9ybUVsZW1lbnQ6OmFjY2VwdENoYXJzZXQoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0
cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OnNldEFjY2VwdENoYXJzZXQoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgLyphY2NlcHRDaGFyc2V0Ki8pCitIUkVTVUxUIERPTUhUTUxGb3JtRWxlbWVu
dDo6c2V0QWNjZXB0Q2hhcnNldChfSW5fIEJTVFIgLyphY2NlcHRDaGFyc2V0Ki8pCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjphY3Rpb24oIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTEZv
cm1FbGVtZW50OjphY3Rpb24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBBU1NFUlQoaXM8SFRN
TEZvcm1FbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBXVEY6OlN0cmluZyBhY3Rpb25TdHJpbmcg
PSBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KCptX2VsZW1lbnQpLmFjdGlvbigpOwogICAgICpy
ZXN1bHQgPSBCU3RyaW5nKGFjdGlvblN0cmluZykucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09L
OwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6
OnNldEFjdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKmFjdGlvbiovKQorSFJFU1VM
VCBET01IVE1MRm9ybUVsZW1lbnQ6OnNldEFjdGlvbihfSW5fIEJTVFIgLyphY3Rpb24qLykKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OmVuY1R5cGUo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxU
IERPTUhUTUxGb3JtRWxlbWVudDo6ZW5jVHlwZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxGb3Jt
RWxlbWVudDo6c2V0RW5jdHlwZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
LyplbmNUeXBlKi8pCitIUkVTVUxUIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0RW5jdHlwZShfSW5f
b3B0XyBCU1RSKiAvKmVuY1R5cGUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogcmVzdWx0KQorSFJFU1VMVCBET01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZChfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogICAgIEFTU0VSVChpczxIVE1MRm9ybUVsZW1lbnQ+KG1fZWxlbWVudCkp
OwogICAgIFdURjo6U3RyaW5nIG1ldGhvZFN0cmluZyA9IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVu
dD4oKm1fZWxlbWVudCkubWV0aG9kKCk7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcobWV0aG9kU3Ry
aW5nKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0TWV0aG9kKCAKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIC8qbWV0aG9kKi8pCitIUkVTVUxUIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0
TWV0aG9kKF9Jbl8gQlNUUiAvKm1ldGhvZCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxGb3JtRWxlbWVudDo6dGFyZ2V0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MRm9ybUVsZW1lbnQ6OnRhcmdl
dChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpy
ZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0VGFyZ2V0KCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIC8qdGFyZ2V0Ki8pCitIUkVTVUxUIERPTUhUTUxGb3JtRWxlbWVu
dDo6c2V0VGFyZ2V0KF9Jbl8gQlNUUiAvKnRhcmdldCovKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6c3VibWl0KCB2b2lkKQorSFJFU1VMVCBET01I
VE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTEZvcm1FbGVtZW50OjpyZXNldCggdm9pZCkKK0hSRVNVTFQgRE9NSFRNTEZvcm1FbGVt
ZW50OjpyZXNldCgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKQEAgLTY0MSw5ICs2NzQsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01IVE1MRm9ybUVsZQogCiAvLyBET01IVE1MU2VsZWN0RWxlbWVudCAtIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlE
IHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIERPTUhUTUxTZWxlY3RFbGVtZW50OjpR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAo
SXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01IVE1MU2VsZWN0RWxlbWVudCkpCiAgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NSFRNTFNlbGVjdEVsZW1lbnQqPih0aGlzKTsKICAg
ICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSUZvcm1zQXV0b0ZpbGxUcmFuc2l0aW9u
U2VsZWN0KSkKQEAgLTY1Nyw1NyArNjkyLDU4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTFNlbGVjdEUKIAogLy8gRE9NSFRNTFNlbGVjdEVsZW1lbnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RFbGVtZW50Ojp0eXBlKCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MU2VsZWN0RWxl
bWVudDo6dHlwZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAg
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3Rl
ZEluZGV4KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIC8qcmVzdWx0Ki8pCitI
UkVTVUxUIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZEluZGV4KF9PdXRfIGludCogLypy
ZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MU2VsZWN0RWxl
bWVudDo6c2V0U2VsZWN0ZWRJbmR4KCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQgLypzZWxlY3Rl
ZEluZGV4Ki8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZEluZHgo
aW50IC8qc2VsZWN0ZWRJbmRleCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUhUTUxTZWxlY3RFbGVtZW50Ojp2YWx1ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlKF9f
ZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3Vs
dCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZhbHVlKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIC8qdmFsdWUqLykKK0hSRVNVTFQgRE9NSFRNTFNlbGVjdEVsZW1lbnQ6
OnNldFZhbHVlKF9Jbl8gQlNUUiAvKnZhbHVlKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0aCggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gaW50KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MU2VsZWN0RWxlbWVudDo6
bGVuZ3RoKF9PdXRfIGludCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6Zm9ybSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUhUTUxGb3JtRWxlbWVudCoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxT
ZWxlY3RFbGVtZW50Ojpmb3JtKF9DT01fT3V0cHRyX29wdF8gSURPTUhUTUxGb3JtRWxlbWVudCoq
IHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01I
VE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTUhUTUxPcHRpb25zQ29sbGVjdGlvbioqIHJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTFNlbGVj
dEVsZW1lbnQ6Om9wdGlvbnMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTE9wdGlvbnNDb2xsZWN0
aW9uKiogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwpAQCAtNzIxLDg2ICs3NTcsNzYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01I
VE1MU2VsZWN0RQogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6ZGlzYWJsZWQoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RFbGVt
ZW50OjpkaXNhYmxlZChfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXREaXNhYmxlZCggCi0gICAgICAg
IC8qIFtpbl0gKi8gQk9PTCAvKmRpc2FibGVkKi8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RFbGVt
ZW50OjpzZXREaXNhYmxlZChCT09MIC8qZGlzYWJsZWQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6bXVsdGlwbGUoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RF
bGVtZW50OjptdWx0aXBsZShfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRNdWx0aXBsZSggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQk9PTCAvKm11bHRpcGxlKi8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RF
bGVtZW50OjpzZXRNdWx0aXBsZShCT09MIC8qbXVsdGlwbGUqLykKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6bmFtZSggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTFNlbGVjdEVs
ZW1lbnQ6Om5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6c2V0TmFt
ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKm5hbWUqLykKK0hSRVNVTFQgRE9NSFRNTFNl
bGVjdEVsZW1lbnQ6OnNldE5hbWUoX0luXyBCU1RSIC8qbmFtZSovKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzaXplKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBpbnQqIC8qc2l6ZSovKQorSFJFU1VMVCBET01IVE1MU2VsZWN0RWxl
bWVudDo6c2l6ZShfT3V0XyBpbnQqIC8qc2l6ZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRTaXplKCAKLSAgICAgICAgLyogW2luXSAq
LyBpbnQgLypzaXplKi8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRTaXplKGlu
dCAvKnNpemUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MU2VsZWN0
RWxlbWVudDo6dGFiSW5kZXgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogLypy
ZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTFNlbGVjdEVsZW1lbnQ6OnRhYkluZGV4KF9PdXRfIGlu
dCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MU2Vs
ZWN0RWxlbWVudDo6c2V0VGFiSW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIGludCAvKnRhYklu
ZGV4Ki8pCitIUkVTVUxUIERPTUhUTUxTZWxlY3RFbGVtZW50OjpzZXRUYWJJbmRleChpbnQgLyp0
YWJJbmRleCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05P
VElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RF
bGVtZW50OjphZGQoIAotICAgICAgICAvKiBbaW5dICovIElET01IVE1MRWxlbWVudCogLyplbGVt
ZW50Ki8sCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUhUTUxFbGVtZW50KiAvKmJlZm9yZSovKQor
SFJFU1VMVCBET01IVE1MU2VsZWN0RWxlbWVudDo6YWRkKF9Jbl9vcHRfIElET01IVE1MRWxlbWVu
dCogLyplbGVtZW50Ki8sIF9Jbl9vcHRfIElET01IVE1MRWxlbWVudCogLypiZWZvcmUqLykKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MU2VsZWN0RWxlbWVudDo6cmVtb3Zl
KCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQgLyppbmRleCovKQorSFJFU1VMVCBET01IVE1MU2Vs
ZWN0RWxlbWVudDo6cmVtb3ZlKGludCAvKmluZGV4Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKQEAgLTgwOCw4ICs4MzQsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxTZWxlY3RFCiAgICAgCiAvLyBET01IVE1MU2VsZWN0
RWxlbWVudCAtIElGb3Jtc0F1dG9GaWxsVHJhbnNpdGlvblNlbGVjdCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFNlbGVjdEVsZW1lbnQ6
OmFjdGl2YXRlSXRlbUF0SW5kZXgoIAotICAgIC8qIFtpbl0gKi8gaW50IGluZGV4KQorSFJFU1VM
VCBET01IVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZhdGVJdGVtQXRJbmRleChpbnQgaW5kZXgpCiB7
CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm1fZWxlbWVudCk7CkBAIC04MjMs
OSArODQ4LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFNlbGVjdEUKIAog
Ly8gRE9NSFRNTE9wdGlvbkVsZW1lbnQgLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxPcHRpb25FbGVtZW50OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9i
amVjdCkKK0hSRVNVTFQgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZP
YmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJ
SURfSURPTUhUTUxPcHRpb25FbGVtZW50KSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19j
YXN0PElET01IVE1MT3B0aW9uRWxlbWVudCo+KHRoaXMpOwogICAgIGVsc2UKQEAgLTgzNywzNCAr
ODY0LDMzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTE9wdGlvbkUKIAogLy8g
RE9NSFRNTE9wdGlvbkVsZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxP
cHRpb25FbGVtZW50Ojpmb3JtKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NSFRN
TEZvcm1FbGVtZW50KiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6
OmZvcm0oX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTEZvcm1FbGVtZW50KiogcmVzdWx0KQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25FbGVt
ZW50OjpkZWZhdWx0U2VsZWN0ZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxPcHRpb25FbGVtZW50OjpkZWZhdWx0U2VsZWN0
ZWQoX091dF8gQk9PTCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MT3B0aW9uRWxlbWVudDo6c2V0RGVmYXVsdFNlbGVjdGVkKCAKLSAgICAgICAgLyog
W2luXSAqLyBCT09MIC8qZGVmYXVsdFNlbGVjdGVkKi8pCitIUkVTVUxUIERPTUhUTUxPcHRpb25F
bGVtZW50OjpzZXREZWZhdWx0U2VsZWN0ZWQoQk9PTCAvKmRlZmF1bHRTZWxlY3RlZCovKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAg
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25FbGVtZW50Ojp0ZXh0KCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIERPTUhU
TUxPcHRpb25FbGVtZW50Ojp0ZXh0KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0
ID0gMDsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKIAogICAgIEFTU0VSVChpczxIVE1MT3B0aW9u
RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbkVsZW1l
bnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fZWxlbWVudCk7CkBAIC04NzMsMzQg
Kzg5OSwzMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25FCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxP
cHRpb25FbGVtZW50OjppbmRleCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiAv
KnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MT3B0aW9uRWxlbWVudDo6aW5kZXgoX091dF8gaW50
KiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRp
b25FbGVtZW50OjpkaXNhYmxlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCog
LypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OmRpc2FibGVkKF9PdXRf
IEJPT0wqIC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TE9wdGlvbkVsZW1lbnQ6OnNldERpc2FibGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIC8q
ZGlzYWJsZWQqLykKK0hSRVNVTFQgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNldERpc2FibGVkKEJP
T0wgLypkaXNhYmxlZCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxP
cHRpb25FbGVtZW50OjpsYWJlbCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
cmVzdWx0KQorSFJFU1VMVCBET01IVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSAwOworICAgICpyZXN1bHQgPSBudWxscHRyOwogCiAg
ICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MT3B0
aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigq
bV9lbGVtZW50KTsKQEAgLTkwOSwzNiArOTMxLDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NSFRNTE9wdGlvbkUKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNldExhYmVsKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIC8qbGFiZWwqLykKK0hSRVNVTFQgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6
OnNldExhYmVsKF9Jbl8gQlNUUiAvKmxhYmVsKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MT3B0aW9uRWxlbWVu
dDo6c2VsZWN0ZWQoX091dF8gQk9PTCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWQoIAotICAgICAgICAv
KiBbaW5dICovIEJPT0wgLypzZWxlY3RlZCovKQorSFJFU1VMVCBET01IVE1MT3B0aW9uRWxlbWVu
dDo6c2V0U2VsZWN0ZWQoQk9PTCAvKnNlbGVjdGVkKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnZhbHVlKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MT3B0aW9uRWxlbWVu
dDo6dmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFZhbHVlKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIC8qdmFsdWUqLykKK0hSRVNVTFQgRE9NSFRNTE9wdGlvbkVsZW1l
bnQ6OnNldFZhbHVlKF9Jbl8gQlNUUiAvKnZhbHVlKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKQEAgLTk0Niw5ICs5NjMsMTEgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MT3B0aW9uRQogCiAvLyBET01IVE1MSW5wdXRFbGVt
ZW50IC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OlF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01I
VE1MSW5wdXRFbGVtZW50OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAo
IXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0g
bnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01IVE1MSW5wdXRFbGVt
ZW50KSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01IVE1MSW5wdXRFbGVt
ZW50Kj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lGb3Jtc0F1
dG9GaWxsVHJhbnNpdGlvbikpCkBAIC05NjQsMzYgKzk4MywzMSBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxJbnB1dEVsCiAKIC8vIERPTUhUTUxJbnB1dEVsZW1lbnQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0VmFsdWUo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxU
IERPTUhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRWYWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiog
LypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRF
bGVtZW50OjpzZXREZWZhdWx0VmFsdWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLyp2YWwq
LykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKF9Jbl8gQlNU
UiAvKnZhbCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05P
VElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRDaGVja2VkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0Q2hlY2tl
ZChfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldERlZmF1bHRDaGVja2VkKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIC8qY2hlY2tlZCovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRE
ZWZhdWx0Q2hlY2tlZChfSW5fIEJTVFIgLypjaGVja2VkKi8pCiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6Zm9ybSggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTUhUTUxFbGVtZW50KiogcmVzdWx0KQorSFJFU1VMVCBET01IVE1MSW5w
dXRFbGVtZW50Ojpmb3JtKF9DT01fT3V0cHRyX29wdF8gSURPTUhUTUxFbGVtZW50KiogcmVzdWx0
KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTAw
NywxODcgKzEwMjEsMTY3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0
RWwKICAgICByZXR1cm4gRV9GQUlMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MSW5wdXRFbGVtZW50OjphY2NlcHQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmFjY2Vw
dChfX2RlcmVmX29wdF9vdXQgQlNUUiogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRBY2NlcHQoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgLyphY2NlcHQqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0
QWNjZXB0KF9Jbl8gQlNUUiAvKmFjY2VwdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmFjY2Vzc0tleSggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6
YWNjZXNzS2V5KF9fZGVyZWZfb3B0X291dCBCU1RSKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldEFjY2Vzc0tleSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKmtleSovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVt
ZW50OjpzZXRBY2Nlc3NLZXkoX0luXyBCU1RSIC8qa2V5Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6YWxpZ24oIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1l
bnQ6OmFsaWduKF9fZGVyZWZfb3B0X291dCBCU1RSKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldEFsaWduKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIC8qYWxpZ24qLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVu
dDo6c2V0QWxpZ24oX0luXyBCU1RSIC8qYWxpZ24qLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjphbHQoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmFs
dChfX2RlcmVmX29wdF9vdXQgQlNUUiogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRBbHQoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgLyphbHQqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QWx0KF9J
bl8gQlNUUiAvKmFsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJ
bnB1dEVsZW1lbnQ6OmNoZWNrZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmNoZWNrZWQoX091dF8g
Qk9PTCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
SW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIC8qY2hl
Y2tlZCovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKEJPT0wgLypj
aGVja2VkKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxl
bWVudDo6ZGlzYWJsZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6ZGlzYWJsZWQoX091dF8gQk9PTCogcmVz
dWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAg
ICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2Vs
ZW1lbnQpOwogICAgICpyZXN1bHQgPSBpbnB1dEVsZW1lbnQuaXNEaXNhYmxlZEZvcm1Db250cm9s
KCkgPyBUUlVFIDogRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldERpc2FibGVkKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MIC8qZGlzYWJsZWQqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxl
bWVudDo6c2V0RGlzYWJsZWQoQk9PTCAvKmRpc2FibGVkKi8pCiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBpbnQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVs
ZW1lbnQ6Om1heExlbmd0aChfT3V0XyBpbnQqIC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0TWF4TGVuZ3RoKCAKLSAgICAg
ICAgLyogW2luXSAqLyBpbnQgLyptYXhMZW5ndGgqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxl
bWVudDo6c2V0TWF4TGVuZ3RoKGludCAvKm1heExlbmd0aCovKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6Om5hbWUoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIC8qbmFtZSovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50
OjpuYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiAvKm5hbWUqLykKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXROYW1lKCAKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIC8qbmFtZSovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRO
YW1lKF9Jbl8gQlNUUiAvKm5hbWUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01IVE1MSW5wdXRFbGVtZW50OjpyZWFkT25seSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogcmVzdWx0KQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpyZWFkT25seShf
T3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisKICAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7
CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgKnJlc3VsdCA9IGlucHV0RWxlbWVudC5pc1JlYWRP
bmx5KCkgPyBUUlVFIDogRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFJlYWRPbmx5KCAKLSAg
ICAgICAgLyogW2luXSAqLyBCT09MIC8qcmVhZE9ubHkqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0
RWxlbWVudDo6c2V0UmVhZE9ubHkoQk9PTCAvKnJlYWRPbmx5Ki8pCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2l6ZSggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gdW5zaWduZWQgaW50KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1M
SW5wdXRFbGVtZW50OjpzaXplKF9PdXRfIHVuc2lnbmVkKiAvKnJlc3VsdCovKQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUoIAotICAg
ICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCAvKnNpemUqLykKK0hSRVNVTFQgRE9NSFRNTElu
cHV0RWxlbWVudDo6c2V0U2l6ZSh1bnNpZ25lZCAvKnNpemUqLykKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzcmMoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnNyYyhfX2RlcmVmX29wdF9vdXQgQlNUUiogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRTcmMoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgLypzcmMqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0
U3JjKF9Jbl8gQlNUUiAvKnNyYyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnRhYkluZGV4KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnRhYkluZGV4
KF9PdXRfIGludCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01IVE1MSW5wdXRFbGVtZW50OjpzZXRUYWJJbmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50
IC8qdGFiSW5kZXgqLykKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VGFiSW5kZXgo
aW50IC8qdGFiSW5kZXgqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
SW5wdXRFbGVtZW50Ojp0eXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAv
KnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50Ojp0eXBlKF9fZGVyZWZfb3B0
X291dCBCU1RSKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdHlw
ZSkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShfSW5fIEJTVFIgdHlwZSkK
IHsKICAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRN
TElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km1fZWxlbWVudCk7CkBAIC0xMTk2LDIzICsxMTkwLDIzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTElucHV0RWwKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dXNlTWFwKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MSW5w
dXRFbGVtZW50Ojp1c2VNYXAoX19kZXJlZl9vcHRfb3V0IEJTVFIqIC8qcmVzdWx0Ki8pCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VXNlTWFw
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qdXNlTWFwKi8pCitIUkVTVUxUIERPTUhUTUxJ
bnB1dEVsZW1lbnQ6OnNldFVzZU1hcChfSW5fIEJTVFIgLyp1c2VNYXAqLykKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBET01IVE1MSW5wdXRF
bGVtZW50Ojp2YWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogeworICAgIGlmICgh
cmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgQVNTRVJUKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxl
bWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgIFdURjo6
U3RyaW5nIHZhbHVlU3RyaW5nID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CkBAIC0xMjIyLDggKzEy
MTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1
dEVsZW1lbnQ6OnNldFZhbHVlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKQorSFJF
U1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShfSW5fIEJTVFIgdmFsdWUpCiB7CiAg
ICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2Vs
ZW1lbnQpOwpAQCAtMTIzMSw4ICsxMjI0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01IVE1MSW5wdXRFbAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRm9yVXNlcigKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIHZhbHVlKQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1
ZUZvclVzZXIoX0luXyBCU1RSIHZhbHVlKQogewogICAgIEFTU0VSVChpczxIVE1MSW5wdXRFbGVt
ZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKQEAgLTEyNDAsNyArMTIzMiw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWwKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50
OjpzZWxlY3QoIHZvaWQpCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdCgpCiB7
CiAgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpt
X2VsZW1lbnQpOwpAQCAtMTI0OCwxNCArMTI0MCwxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxJbnB1dEVsCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmNsaWNrKCB2b2lkKQorSFJFU1VM
VCBET01IVE1MSW5wdXRFbGVtZW50OjpjbGljaygpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydCggCi0gICAgLyogW2luXSAq
LyBsb25nIHN0YXJ0KQorSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25T
dGFydChsb25nIHN0YXJ0KQogewogICAgIEFTU0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2Vs
ZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKQEAgLTEyNjMsMTcgKzEyNTQsMTggQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbAogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVj
dGlvblN0YXJ0KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGxvbmcgKnN0YXJ0KQorSFJFU1VM
VCBET01IVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChfT3V0XyBsb25nICpzdGFydCkK
IHsKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgQVNT
RVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQp
OwogICAgICpzdGFydCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydCgpOwogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvbkVuZCggCi0gICAgLyogW2luXSAqLyBsb25nIGVuZCkKK0hSRVNVTFQg
RE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGxvbmcgZW5kKQogewogICAgIEFT
U0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVt
ZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50
KTsKQEAgLTEyODEsOSArMTI3MywxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxJbnB1dEVsCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKCAKLSAgICAvKiBbcmV0dmFsXVtv
dXRdICovIGxvbmcgKmVuZCkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
RW5kKF9PdXRfIGxvbmcgKmVuZCkKIHsKKyAgICBpZiAoIWVuZCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKKwogICAgIEFTU0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsK
ICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50PigqbV9lbGVtZW50KTsKICAgICAqZW5kID0gaW5wdXRFbGVtZW50LnNlbGVjdGlvbkVu
ZCgpOwpAQCAtMTI5MiwxOCArMTI4NiwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUhUTUxJbnB1dEVsCiAKIC8vIERPTUhUTUxJbnB1dEVsZW1lbnQgLS0gSUZvcm1zQXV0b0ZpbGxU
cmFuc2l0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojppc1RleHRGaWVsZCgKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6
aXNUZXh0RmllbGQoX091dF8gQk9PTCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgICpyZXN1bHQgPSBpbnB1dEVs
ZW1lbnQuaXNUZXh0RmllbGQoKSA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpyZWN0T25T
Y3JlZW4oIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gTFBSRUNUIHJlY3QpCitIUkVTVUxUIERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnJlY3RPblNjcmVlbihfT3V0XyBMUFJFQ1QgcmVjdCkKIHsKKyAg
ICBpZiAoIXJlY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgQVNTRVJUKGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIHJlY3QtPmxlZnQgPSByZWN0LT50b3Ag
PSByZWN0LT5yaWdodCA9IHJlY3QtPmJvdHRvbSA9IDA7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKQEAgLTEzMjAsMTEgKzEzMTcsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6cmVwbGFj
ZUNoYXJhY3RlcnNJblJhbmdlKCAKLSAgICAvKiBbaW5dICovIGludCBzdGFydFRhcmdldCwKLSAg
ICAvKiBbaW5dICovIGludCBlbmRUYXJnZXQsCi0gICAgLyogW2luXSAqLyBCU1RSIHJlcGxhY2Vt
ZW50U3RyaW5nLAotICAgIC8qIFtpbl0gKi8gaW50IGluZGV4KQorSFJFU1VMVCBET01IVE1MSW5w
dXRFbGVtZW50OjpyZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2UoaW50IHN0YXJ0VGFyZ2V0LCBpbnQg
ZW5kVGFyZ2V0LCBfSW5fIEJTVFIgcmVwbGFjZW1lbnRTdHJpbmcsIGludCBpbmRleCkKIHsKICAg
ICBpZiAoIXJlcGxhY2VtZW50U3RyaW5nKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAt
MTM0MSwxMCArMTMzNCwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1
dEVsCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
SFRNTElucHV0RWxlbWVudDo6c2VsZWN0ZWRSYW5nZSggCi0gICAgLyogW291dF0gKi8gaW50KiBz
dGFydCwKLSAgICAvKiBbb3V0XSAqLyBpbnQqIGVuZCkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0ZWRSYW5nZShfT3V0XyBpbnQqIHN0YXJ0LCBfT3V0XyBpbnQqIGVuZCkKIHsK
KyAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAg
ICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxl
bWVudCk7CiAgICAgKnN0YXJ0ID0gaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0KCk7CkBAIC0x
MzUyLDggKzEzNDYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVs
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TElucHV0RWxlbWVudDo6c2V0QXV0b2ZpbGxlZCggCi0gICAgLyogW2luXSAqLyBCT09MIGZpbGxl
ZCkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QXV0b2ZpbGxlZChCT09MIGZpbGxl
ZCkKIHsKICAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKm1fZWxlbWVudCk7CkBAIC0xMzYxLDkgKzEzNTQsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01IVE1MSW5wdXRFbAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmlzQXV0b2ZpbGxlZCgKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTElucHV0RWxl
bWVudDo6aXNBdXRvZmlsbGVkKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIEFTU0VSVChpczxIVE1MSW5wdXRF
bGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQg
PSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICAqcmVzdWx0ID0g
aW5wdXRFbGVtZW50LmlzQXV0b0ZpbGxlZCgpID8gVFJVRSA6IEZBTFNFOwpAQCAtMTM3Miw4ICsx
MzY3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbAogCiAvLyBE
T01IVE1MSW5wdXRFbGVtZW50IC0tIElGb3JtUHJvbXB0QWRkaXRpb25zIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxJbnB1dEVsZW1lbnQ6OmlzVXNlckVkaXRlZCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MICpyZXN1bHQpCitIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmlzVXNlckVkaXRlZChf
T3V0XyBCT09MICpyZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CkBAIC0xMzkwLDkgKzEzODQsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MSW5wdXRFbAogCiAvLyBET01IVE1MVGV4dEFyZWFFbGVtZW50IC0gSVVua25vd24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OlF1ZXJ5SW50ZXJmYWNl
KFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFF
bGVtZW50OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVj
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsK
ICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01IVE1MVGV4dEFyZWFFbGVtZW50KSkK
ICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01IVE1MVGV4dEFyZWFFbGVtZW50
Kj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lGb3JtUHJvbXB0
QWRkaXRpb25zKSkKQEAgLTE0MDYsMjIgKzE0MDIsMTkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MVGV4dEFyZQogCiAvLyBET01IVE1MVGV4dEFyZWFFbGVtZW50IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6ZGVmYXVsdFZhbHVlKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBE
T01IVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRB
cmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8q
dmFsKi8pCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShf
SW5fIEJTVFIgLyp2YWwqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
VGV4dEFyZWFFbGVtZW50Ojpmb3JtKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
SFRNTEVsZW1lbnQqKiByZXN1bHQpCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmZv
cm0oX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTEVsZW1lbnQqKiByZXN1bHQpCiB7CiAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xNDM1LDExNCArMTQyOCwx
MDEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MVGV4dEFyZQogICAgIHJldHVy
biBFX0ZBSUw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQ6OmFjY2Vzc0tleSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogLypyZXN1bHQqLykKK0hSRVNVTFQgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6YWNjZXNzS2V5
KF9fZGVyZWZfb3B0X291dCBCU1RSKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldEFjY2Vzc0tleSggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiAvKmtleSovKQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFFbGVtZW50
OjpzZXRBY2Nlc3NLZXkoX0luXyBCU1RSIC8qa2V5Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6Y29scyggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gaW50KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFFbGVt
ZW50Ojpjb2xzKF9PdXRfIGludCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRDb2xzKCAKLSAgICAgICAgLyogW2lu
XSAqLyBpbnQgLypjb2xzKi8pCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldENv
bHMoaW50IC8qY29scyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OmRpc2FibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFFbGVtZW50OjpkaXNhYmxl
ZChfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERpc2FibGVkKCAKLSAgICAgICAgLyogW2luXSAq
LyBCT09MIC8qZGlzYWJsZWQqLykKK0hSRVNVTFQgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0
RGlzYWJsZWQoQk9PTCAvKmRpc2FibGVkKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6bmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogLypuYW1lKi8pCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6Om5h
bWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIC8qbmFtZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldE5hbWUoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgLypuYW1lKi8pCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNl
dE5hbWUoX0luXyBCU1RSIC8qbmFtZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnJlYWRPbmx5KCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFFbGVtZW50
OjpyZWFkT25seShfT3V0XyBCT09MKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFJlYWRPbmx5KCAKLSAgICAgICAg
LyogW2luXSAqLyBCT09MIC8qcmVhZE9ubHkqLykKK0hSRVNVTFQgRE9NSFRNTFRleHRBcmVhRWxl
bWVudDo6c2V0UmVhZE9ubHkoQk9PTCAvKnJlYWRPbmx5Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6cm93cyggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gaW50KiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFF
bGVtZW50Ojpyb3dzKF9PdXRfIGludCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRSb3dzKCAKLSAgICAgICAgLyog
W2luXSAqLyBpbnQgLypyb3dzKi8pCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNl
dFJvd3MoaW50IC8qcm93cyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnRhYkluZGV4KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRhYklu
ZGV4KF9PdXRfIGludCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRUYWJJbmRleCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gaW50IC8qdGFiSW5kZXgqLykKK0hSRVNVTFQgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0
VGFiSW5kZXgoaW50IC8qdGFiSW5kZXgqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MVGV4dEFyZWFFbGVtZW50Ojp0eXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorSFJFU1VMVCBET01IVE1MVGV4dEFyZWFFbGVtZW50Ojp0
eXBlKF9fZGVyZWZfb3B0X291dCBCU1RSKiAvKnJlc3VsdCovKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnZhbHVlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICBBU1NFUlQoaXM8SFRNTFRl
eHRBcmVhRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgdGV4
dGFyZWFFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oKm1fZWxlbWVudCk7
CiAgICAgV1RGOjpTdHJpbmcgdmFsdWVTdHJpbmcgPSB0ZXh0YXJlYUVsZW1lbnQudmFsdWUoKTsK
QEAgLTE1NTIsOCArMTUzMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRl
eHRBcmUKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgdmFsdWUpCitIUkVTVUxUIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKF9J
bl8gQlNUUiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4obV9l
bGVtZW50KSk7CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgdGV4dGFyZWFFbGVtZW50ID0gZG93
bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oKm1fZWxlbWVudCk7CkBAIC0xNTYxLDcgKzE1NDAs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnNlbGVjdCggdm9pZCkKK0hSRVNVTFQgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6
c2VsZWN0KCkKIHsKICAgICBBU1NFUlQoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4obV9lbGVtZW50
KSk7CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgdGV4dGFyZWFFbGVtZW50ID0gZG93bmNhc3Q8
SFRNTFRleHRBcmVhRWxlbWVudD4oKm1fZWxlbWVudCk7CkBAIC0xNTcxLDggKzE1NTAsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlCiAKIC8vIERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQgLS0gSUZvcm1Qcm9tcHRBZGRpdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRB
cmVhRWxlbWVudDo6aXNVc2VyRWRpdGVkKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KnJlc3VsdCkKK0hSRVNVTFQgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6aXNVc2VyRWRpdGVkKF9P
dXRfIEJPT0wgKnJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTE1ODYsOSArMTU2NCwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxUZXh0QXJlCiAKIC8vIERPTUhUTUxJRnJhbWVFbGVtZW50IC0gSVVua25vd24gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSUZyYW1lRWxlbWVudDo6UXVlcnlJbnRlcmZhY2Uo
UkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIERPTUhUTUxJRnJhbWVFbGVt
ZW50OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAg
ICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lET01IVE1MSUZyYW1lRWxlbWVudCkpCiAgICAg
ICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NSFRNTElGcmFtZUVsZW1lbnQqPih0aGlz
KTsKICAgICBlbHNlCkBAIC0xNjAwLDggKzE1ODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxJRnJhbWVFCiAKIC8vIERPTUhUTUxJRnJhbWVFbGVtZW50IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSUZyYW1lRWxlbWVudDo6Y29udGVudEZyYW1l
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJGcmFtZSAqKnJlc3VsdCkKK0hSRVNVTFQg
RE9NSFRNTElGcmFtZUVsZW1lbnQ6OmNvbnRlbnRGcmFtZShfQ09NX091dHB0cl9vcHRfIElXZWJG
cmFtZSoqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuaAkocmV2aXNpb24gMTg4NjM4
KQorKysgU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ0LDUzICs0NCw1NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElET01IVE1M
Q29sbGVjdGlvbiogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qKTsKIAog
ICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01PYmplY3Q6
OkFkZFJlZigpOyB9Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNl
KHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6UmVsZWFzZSgpOyB9CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTU9iamVjdDo6QWRkUmVmKCk7IH0KKyAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKSB7IHJldHVybiBET01PYmpl
Y3Q6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRp
b25NZXNzYWdlLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
bmFtZSwKLSAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBd
LAotICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1l
dGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAq
cmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVXZWJTY3JpcHRLZXkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4g
RE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVy
biBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU9i
amVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCggCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBb
aW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVl
QXRJbmRleChpbmRleCwgdmFsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3Jp
cHRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5f
IEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU9iamVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNhbGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJn
cykgY29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChu
YW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQs
IF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6
OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJT
VFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlw
dEtleShuYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdS
ZXByZXNlbnRhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnN0cmluZ1Jl
cHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNp
Z25lZCBpbmRleCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTU9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0
VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4
Y2VwdGlvbihfSW5fIEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9N
T2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElET01I
VE1MQ29sbGVjdGlvbgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsZW5n
dGgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQgKnJlc3VsdCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGl0ZW0oIAotICAgICAgICAvKiBb
aW5dICovIFVJTlQgaW5kZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUg
Kipub2RlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFt
ZWRJdGVtKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUgKipub2RlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbGVuZ3RoKF9PdXRfIFVJTlQqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGl0ZW0oVUlOVCBpbmRleCwgX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NTm9kZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZWRJ
dGVtKF9Jbl8gQlNUUiBuYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiopOwogCiBwcm90
ZWN0ZWQ6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uPiBtX2NvbGxlY3Rpb247
CkBAIC0xMDIsNTYgKzEwNCw1NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElET01IVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlv
biopOwogCiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERP
TU9iamVjdDo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkg
eyByZXR1cm4gRE9NT2JqZWN0OjpBZGRSZWYoKTsgfQogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OlJlbGVhc2UoKTsg
fQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNl
cHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkg
eyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxX
ZWJTY3JpcHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAg
LyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAotICAgICAgICAvKiBb
aW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpy
ZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdz
LCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3Jp
cHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVy
biBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXko
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NT2JqZWN0OjpyZW1v
dmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnN0
cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAot
ICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0
VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8q
IFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQg
dmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwg
dmFsKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRF
eGNlcHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJu
IERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9u
TWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9i
amVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRN
ZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFSSUFO
VCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJn
cywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQsIF9PdXRfIFZBUklBTlQq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2Ny
aXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikK
KyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0
cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgX091
dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6d2Vi
U2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVu
c2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmpl
Y3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5fIEJT
VFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNl
cHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElET01IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBpbnQgKnJlc3VsdCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExlbmd0aCggCi0gICAgICAg
IC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGxlbmd0aCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGl0ZW0oIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVk
IGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVkSXRl
bSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbGVuZ3RoKF9PdXRfIHVuc2lnbmVkKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldExlbmd0aCh1bnNpZ25lZCBpbnQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpdGVtKHVuc2lnbmVkIGluZGV4LCBfQ09NX091dHB0cl9v
cHRfIElET01Ob2RlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBu
YW1lZEl0ZW0oX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKik7CiAK
IHByaXZhdGU6CiAgICAgRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uKFdlYkNvcmU6OkhUTUxPcHRp
b25zQ29sbGVjdGlvbiopOwpAQCAtMTY3LDI3MCArMTY5LDMwMyBAQCBwdWJsaWM6CiAgICAgRE9N
SFRNTERvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50KiBkKSA6IERPTURvY3VtZW50KGQpIHt9CiAK
ICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NRG9jdW1l
bnQ6OkFkZFJlZigpOyB9Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxl
YXNlKHZvaWQpIHsgcmV0dXJuIERPTURvY3VtZW50OjpSZWxlYXNlKCk7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OkFkZFJlZigpOyB9
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCkgeyByZXR1cm4g
RE9NRG9jdW1lbnQ6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OnRocm93RXhjZXB0
aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklB
TlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OmNh
bGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OmV2YWx1YXRlV2ViU2Ny
aXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
bmFtZSkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNl
bnRhdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVz
ZW50YXRpb24pIHsgcmV0dXJuIERPTURvY3VtZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJp
bmdSZXByZXNlbnRhdGlvbik7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNp
Z25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVz
dWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50
IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01Eb2N1
bWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbiggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OnNldEV4
Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGhyb3dFeGNlcHRpb24oX0luXyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJP
T0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Eb2N1bWVudDo6dGhyb3dFeGNl
cHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RS
IG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBj
QXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURv
Y3VtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVh
dGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQs
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoX0luXyBCU1RSIG5hbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NRG9jdW1lbnQ6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0
aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01Eb2N1bWVudDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVw
cmVzZW50YXRpb24pOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBfT3V0XyBWQVJJ
QU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OndlYlNjcmlw
dFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCwgVkFSSUFOVCB2YWwpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6
OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5fIEJTVFIg
ZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OnNldEV4Y2Vw
dGlvbihkZXNjcmlwdGlvbik7CisgICAgfQogCiAgICAgLy8gSURPTU5vZGUKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6Om5vZGVOYW1lKHJl
c3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9k
ZVZhbHVlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0
dXJuIERPTURvY3VtZW50Ojpub2RlVmFsdWUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIHNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpIHsgcmV0dXJuIERPTURv
Y3VtZW50Ojpub2RlVHlwZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6cGFyZW50Tm9kZShyZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxk
Tm9kZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3Vs
dCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OmNoaWxkTm9kZXMocmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1l
bnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6bGFzdENoaWxkKHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNT
aWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkg
eyByZXR1cm4gRE9NRG9jdW1lbnQ6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9j
dW1lbnQ6Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5hbWVkTm9kZU1hcCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OmF0dHJp
YnV0ZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBvd25lckRvY3VtZW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9j
dW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTURvY3VtZW50Ojpvd25lckRvY3VtZW50KHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0
QmVmb3JlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCi0gICAgICAg
IC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6aW5zZXJ0QmVmb3Jl
KG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoIAotICAgICAgICAvKiBbaW5dICovIElE
T01Ob2RlICpuZXdDaGlsZCwKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJu
IERPTURvY3VtZW50OjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUNoaWxk
KCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTURvY3VtZW50Ojpy
ZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURP
TU5vZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoq
cmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hp
bGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJl
dHVybiBET01Eb2N1bWVudDo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gQk9PTCBkZWVwLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoq
cmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2
b2lkKSB7IHJldHVybiBET01Eb2N1bWVudDo6bm9ybWFsaXplKCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgZmVhdHVyZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZlcnNpb24sCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1
bWVudDo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6
Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHByZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAq
cmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6cHJlZml4KHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIHByZWZpeCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OnNldFByZWZpeChw
cmVmaXgpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxv
Y2FsTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJl
dHVybiBET01Eb2N1bWVudDo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6aGFzQXR0
cmlidXRlcyhyZXN1bHQpOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNTYW1lTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1l
bnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElE
T01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQp
IHsgcmV0dXJuIERPTURvY3VtZW50Ojppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01Eb2N1
bWVudDo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0ZXh0KSB7IHJldHVybiBET01Eb2N1bWVudDo6c2V0VGV4dENvbnRlbnQodGV4dCk7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Eb2N1bWVudDo6bm9k
ZU5hbWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG5vZGVWYWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50Ojpub2RlVmFsdWUocmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZShf
SW5fIEJTVFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gc2V0Tm9kZVZhbHVlKHZhbHVl
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5v
ZGVUeXBlKF9PdXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NRG9jdW1lbnQ6Om5vZGVUeXBlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJlbnROb2RlKF9DT01fT3V0cHRyX29wdF8g
SURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OnBh
cmVudE5vZGUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNoaWxkTm9kZXMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmNoaWxkTm9kZXMocmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGZpcnN0Q2hpbGQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01Eb2N1bWVudDo6Zmlyc3RDaGlsZChyZXN1bHQpOyAKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZChfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TURvY3VtZW50OjpsYXN0Q2hpbGQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyhfQ09NX091dHB0cl9vcHRf
IElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50Ojpw
cmV2aW91c1NpYmxpbmcocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUq
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6Om5leHRTaWJsaW5n
KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YXR0cmlidXRlcyhfQ09NX091dHB0cl9vcHRfIElET01OYW1lZE5vZGVNYXAqKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmF0dHJpYnV0ZXMocmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9j
dW1lbnQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NRG9jdW1lbnQqKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZShf
SW5fb3B0XyBJRE9NTm9kZSogbmV3Q2hpbGQsIF9Jbl9vcHRfIElET01Ob2RlKiByZWZDaGlsZCwg
X0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01Eb2N1bWVudDo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxh
Y2VDaGlsZChfSW5fb3B0XyBJRE9NTm9kZSogbmV3Q2hpbGQsIF9Jbl9vcHRfIElET01Ob2RlKiBv
bGRDaGlsZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01Eb2N1bWVudDo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJlbW92ZUNoaWxkKF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGlsZCwgX0NPTV9PdXRwdHJf
b3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Eb2N1bWVu
dDo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZChfSW5fb3B0XyBJRE9NTm9k
ZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmFwcGVuZENoaWxkKG9sZENoaWxkLCByZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFz
Q2hpbGROb2RlcyhfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
RG9jdW1lbnQ6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZShCT09MIGRlZXAsIF9DT01fT3V0
cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9j
dW1lbnQ6OmNsb25lTm9kZShkZWVwLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01Eb2N1bWVudDo6bm9ybWFsaXplKCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZChfSW5fIEJTVFIgZmVhdHVyZSwg
X0luXyBCU1RSIHZlcnNpb24sIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01Eb2N1bWVudDo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVz
cGFjZVVSSShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTURvY3VtZW50OjpuYW1lc3BhY2VVUkkocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVmX29wdF9vdXQg
QlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjpwcmVmaXgo
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldFByZWZpeChfSW5fIEJTVFIgcHJlZml4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TURvY3VtZW50OjpzZXRQcmVmaXgocHJlZml4KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50Ojpsb2NhbE5hbWUocmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGhhc0F0dHJpYnV0ZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTURvY3VtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQorCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoX0luX29wdF8gSURPTU5vZGUq
IG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9j
dW1lbnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZShfSW5fb3B0XyBJRE9NTm9k
ZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01E
b2N1bWVudDo6aXNFcXVhbE5vZGUob3RoZXIsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudChfX2RlcmVmX29wdF9v
dXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50Ojp0ZXh0
Q29udGVudChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoX0luXyBCU1RSIHRleHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NRG9jdW1lbnQ6OnNldFRleHRDb250ZW50KHRleHQpOworICAgIH0KICAgICAK
ICAgICAvLyBJRE9NRG9jdW1lbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZG9jdHlwZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50VHlw
ZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OmRvY3R5cGUocmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbXBsZW1lbnRhdGlvbigg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUltcGxlbWVudGF0aW9uICoqcmVzdWx0
KSB7IHJldHVybiBET01Eb2N1bWVudDo6aW1wbGVtZW50YXRpb24ocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb2N1bWVudEVsZW1lbnQoIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbGVtZW50ICoqcmVzdWx0KSB7IHJldHVy
biBET01Eb2N1bWVudDo6ZG9jdW1lbnRFbGVtZW50KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRWxlbWVudCggCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiB0YWdOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01F
bGVtZW50ICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6Y3JlYXRlRWxlbWVudCh0YWdO
YW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Eb2N1bWVudEZyYWdtZW50ICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6Y3Jl
YXRlRG9jdW1lbnRGcmFnbWVudChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVRleHROb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIGRhdGEsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTVRleHQgKipyZXN1bHQp
IHsgcmV0dXJuIERPTURvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZShkYXRhLCByZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUNvbW1lbnQo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGF0YSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NQ29tbWVudCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1lbnQ6OmNyZWF0ZUNv
bW1lbnQoZGF0YSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjcmVhdGVDREFUQVNlY3Rpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
ZGF0YSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ0RBVEFTZWN0aW9uICoqcmVz
dWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKGRhdGEsIHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRl
UHJvY2Vzc2luZ0luc3RydWN0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRhcmdldCwK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIGRhdGEsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRG9jdW1l
bnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlQXR0cmli
dXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTURvY3VtZW50OjpjcmVhdGVB
dHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRW50aXR5UmVmZXJl
bmNlICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6Y3JlYXRlRW50aXR5UmVmZXJlbmNl
KG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGFn
TmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1bHQp
IHsgcmV0dXJuIERPTURvY3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lLCByZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGltcG9y
dE5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICppbXBvcnRlZE5vZGUsCi0gICAg
ICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6aW1wb3J0Tm9kZShpbXBvcnRl
ZE5vZGUsIGRlZXAsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY3JlYXRlRWxlbWVudE5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5h
bWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmllZE5hbWUsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERP
TURvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNy
ZWF0ZUF0dHJpYnV0ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmllZE5hbWUsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTURvY3VtZW50OjpjcmVh
dGVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHJlc3VsdCk7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRh
Z05hbWVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01Eb2N1bWVudDo6Z2V0RWxlbWVudHNC
eVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50QnlJZCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBlbGVtZW50SWQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTUVsZW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTURvY3VtZW50OjpnZXRFbGVtZW50
QnlJZChlbGVtZW50SWQsIHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZG9jdHlwZShfQ09NX091dHB0cl9vcHRfIElET01Eb2N1bWVudFR5cGUqKiByZXN1
bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmRvY3R5cGUocmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGltcGxl
bWVudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSURPTUltcGxlbWVudGF0aW9uKiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjppbXBsZW1lbnRhdGlvbihyZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9j
dW1lbnRFbGVtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQqKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmRvY3VtZW50RWxlbWVudChyZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRl
RWxlbWVudChfSW5fIEJTVFIgdGFnTmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NRWxlbWVudCoq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01Eb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dCh0YWdOYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgY3JlYXRlRG9jdW1lbnRGcmFnbWVudChfQ09NX091dHB0cl9vcHRfIElE
T01Eb2N1bWVudEZyYWdtZW50KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVUZXh0Tm9kZShfSW5fIEJT
VFIgZGF0YSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NVGV4dCoqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01Eb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoZGF0YSwgcmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUNv
bW1lbnQoX0luXyBCU1RSIGRhdGEsIF9DT01fT3V0cHRyX29wdF8gSURPTUNvbW1lbnQqKiByZXN1
bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmNyZWF0ZUNvbW1lbnQoZGF0
YSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNyZWF0ZUNEQVRBU2VjdGlvbihfSW5fIEJTVFIgZGF0YSwgX0NPTV9PdXRwdHJfb3B0
XyBJRE9NQ0RBVEFTZWN0aW9uKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURv
Y3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbihfSW5fIEJTVFIgdGFyZ2V0LCBfSW5fIEJTVFIgZGF0YSwgX0NPTV9PdXRwdHJfb3B0
XyBJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTURvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRh
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY3JlYXRlQXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lLCBfQ09NX091dHB0cl9vcHRfIElE
T01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjpjcmVh
dGVBdHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUVudGl0eVJlZmVyZW5jZShfSW5fIEJTVFIgbmFt
ZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NRW50aXR5UmVmZXJlbmNlKiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UobmFtZSwg
cmVzdWx0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoX0luXyBCU1RSIHRhZ05hbWUsIF9DT01fT3V0cHRyX29wdF8g
SURPTU5vZGVMaXN0KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW1wb3J0Tm9kZShfSW5fb3B0XyBJ
RE9NTm9kZSogaW1wb3J0ZWROb2RlLCBCT09MIGRlZXAsIF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmltcG9ydE5v
ZGUoaW1wb3J0ZWROb2RlLCBkZWVwLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRWxlbWVudE5TKF9Jbl8gQlNUUiBuYW1l
c3BhY2VVUkksIF9Jbl8gQlNUUiBxdWFsaWZpZWROYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01F
bGVtZW50KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjpjcmVh
dGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlQXR0cmli
dXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIHF1YWxpZmllZE5hbWUsIF9D
T01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFt
ZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0lu
XyBCU1RSIGxvY2FsTmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1l
TlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50QnlJZChfSW5fIEJTVFIg
ZWxlbWVudElkLCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTURvY3VtZW50OjpnZXRFbGVtZW50QnlJZChlbGVtZW50SWQsIHJl
c3VsdCk7CisgICAgfQogCiAgICAgLy8gSURPTUhUTUxEb2N1bWVudAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aXRsZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0VGl0bGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGl0bGUpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWZlcnJlciggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9tYWluKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBVUkwoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJvZHkoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01IVE1MRWxlbWVudCAqKmJvZHlFbGVtZW50KTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Qm9keSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gSURPTUhUTUxFbGVtZW50ICpib2R5KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW1hZ2VzKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NSFRNTENvbGxlY3Rpb24gKipjb2xsZWN0aW9uKTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwbGV0cyggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTUhUTUxDb2xsZWN0aW9uICoqY29sbGVjdGlvbik7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxpbmtzKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NSFRNTENvbGxlY3Rpb24gKipjb2xsZWN0aW9uKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9ybXMoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01IVE1MQ29sbGVjdGlvbiAqKmNvbGxlY3Rpb24pOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbmNob3JzKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NSFRNTENvbGxlY3Rpb24gKipjb2xsZWN0aW9uKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29va2llKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb29raWUoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgY29va2llKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgb3Blbiggdm9pZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNsb3NlKCB2b2lkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgd3JpdGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdyaXRlbG4oIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgdGV4dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdldEVsZW1lbnRCeUlkXyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBlbGVt
ZW50SWQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQgKiplbGVtZW50
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVu
dHNCeU5hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZWxlbWVudE5hbWUsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqbm9kZUxpc3QpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aXRsZShfX2RlcmVmX29wdF9vdXQgQlNUUiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUaXRsZShfSW5fIEJT
VFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWZlcnJlcihfX2Rl
cmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkb21haW4oX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgVVJMKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJvZHkoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTEVs
ZW1lbnQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEJvZHko
X0luX29wdF8gSURPTUhUTUxFbGVtZW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGltYWdlcyhfQ09NX091dHB0cl9vcHRfIElET01IVE1MQ29sbGVjdGlvbioqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwbGV0cyhfQ09NX091dHB0
cl9vcHRfIElET01IVE1MQ29sbGVjdGlvbioqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbGlua3MoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTENvbGxlY3Rpb24qKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvcm1zKF9DT01fT3V0cHRy
X29wdF8gSURPTUhUTUxDb2xsZWN0aW9uKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBhbmNob3JzKF9DT01fT3V0cHRyX29wdF8gSURPTUhUTUxDb2xsZWN0aW9uKiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb29raWUoX19kZXJlZl9v
cHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
Q29va2llKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG9wZW4oKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvc2UoKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd3JpdGUoX0luXyBCU1RSKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd3JpdGVsbihfSW5fIEJTVFIp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50QnlJZF8o
X0luXyBCU1RSIGVsZW1lbnRJZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NRWxlbWVudCoqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeU5hbWUoX0lu
XyBCU1RSIGVsZW1lbnROYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqKTsKIH07
CiAKIGNsYXNzIERPTUhUTUxFbGVtZW50IDogcHVibGljIERPTUVsZW1lbnQsIHB1YmxpYyBJRE9N
SFRNTEVsZW1lbnQKQEAgLTQ0MSwyNTUgKzQ3NiwzMDMgQEAgcHVibGljOgogICAgIERPTUhUTUxF
bGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGUpIDogRE9NRWxlbWVudChlKSB7fQogCiAgICAgLy8g
SVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OkFkZFJl
ZigpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAg
ICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTUVs
ZW1lbnQ6OkFkZFJlZigpOyB9CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBS
ZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8g
SVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdl
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9N
RWxlbWVudDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0
aG9kKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lz
XVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQg
Y0FyZ3MsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJl
dHVybiBET01FbGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2
YWx1YXRlV2ViU2NyaXB0KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1l
bnQ6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NRWxlbWVudDo6cmVtb3ZlV2ViU2Ny
aXB0S2V5KG5hbWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NRWxlbWVudDo6c3RyaW5nUmVw
cmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAg
IC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NRWxlbWVudDo6d2ViU2NyaXB0VmFsdWVB
dEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7
IHJldHVybiBET01FbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0
aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01F
bGVtZW50OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNUUiBleGNlcHRpb25NZXNz
YWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVu
dDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRo
b2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFSSUFOVCBh
cmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3Ms
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIgc2NyaXB0LCBfT3V0XyBWQVJJQU5UKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6ZXZhbHVhdGVXZWJTY3Jp
cHQoc2NyaXB0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNUUiBuYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikK
KyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbihz
dHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9P
dXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50Ojp3
ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
dW5zaWduZWQgaW5kZXgsIFZBUklBTlQgdmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVs
ZW1lbnQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5f
IEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6c2V0
RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICB9CiAKICAgICAvLyBJRE9NTm9kZQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50Ojpub2RlTmFt
ZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5vZGVWYWx1ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7
IHJldHVybiBET01FbGVtZW50Ojpub2RlVmFsdWUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2YWx1
ZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5
cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQp
IHsgcmV0dXJuIERPTUVsZW1lbnQ6Om5vZGVUeXBlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OnBh
cmVudE5vZGUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjaGlsZE5vZGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9k
ZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OmNoaWxkTm9kZXMocmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxk
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1
cm4gRE9NRWxlbWVudDo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6Omxhc3RDaGls
ZChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHByZXZpb3VzU2libGluZyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUg
KipyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5n
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1
cm4gRE9NRWxlbWVudDo6bmV4dFNpYmxpbmcocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50
OjphdHRyaWJ1dGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTURvY3VtZW50ICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50Ojpvd25lckRvY3VtZW50
KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aW5zZXJ0QmVmb3JlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCi0g
ICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNoaWxkLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50OjppbnNlcnRC
ZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGlsZCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSURPTU5vZGUgKm5ld0NoaWxkLAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRD
aGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NRWxlbWVudDo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVD
aGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50
OjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8g
SURPTU5vZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2Rl
ICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50OjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXND
aGlsZE5vZGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsg
cmV0dXJuIERPTUVsZW1lbnQ6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoIAotICAgICAgICAvKiBb
aW5dICovIEJPT0wgZGVlcCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAq
KnJlc3VsdCkgeyByZXR1cm4gRE9NRWxlbWVudDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2
b2lkKSB7IHJldHVybiBET01FbGVtZW50Ojpub3JtYWxpemUoKTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBmZWF0dXJlLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1l
bnQ6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6Om5h
bWVzcGFjZVVSSShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHByZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01FbGVtZW50OjpwcmVmaXgocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgcHJlZml4KSB7IHJldHVybiBET01FbGVtZW50OjpzZXRQcmVmaXgocHJlZml4
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5h
bWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4g
RE9NRWxlbWVudDo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50OjpoYXNBdHRyaWJ1dGVz
KHJlc3VsdCk7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1Nh
bWVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50Ojppc1Nh
bWVOb2RlKG90aGVyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGlzRXF1YWxOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSog
b3RoZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVy
biBET01FbGVtZW50Ojppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50Ojp0ZXh0
Q29udGVudChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldFRleHRDb250ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsg
cmV0dXJuIERPTUVsZW1lbnQ6OnNldFRleHRDb250ZW50KHRleHQpOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6bm9kZU5hbWUocmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5v
ZGVWYWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUVsZW1lbnQ6Om5vZGVWYWx1ZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKF9Jbl8gQlNUUiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50OjpzZXROb2RlVmFsdWUodmFsdWUp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9k
ZVR5cGUoX091dF8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01FbGVtZW50Ojpub2RlVHlwZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0cl9vcHRfIElE
T01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6OnBhcmVu
dE5vZGUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNoaWxkTm9kZXMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1
bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6Y2hpbGROb2RlcyhyZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmly
c3RDaGlsZChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUVsZW1lbnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZChfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1l
bnQ6Omxhc3RDaGlsZChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6cHJldmlvdXNT
aWJsaW5nKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBuZXh0U2libGluZyhfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6Om5leHRTaWJsaW5nKHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdHRy
aWJ1dGVzKF9DT01fT3V0cHRyX29wdF8gSURPTU5hbWVkTm9kZU1hcCoqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01FbGVtZW50OjphdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50
KF9DT01fT3V0cHRyX29wdF8gSURPTURvY3VtZW50KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUVsZW1lbnQ6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZShfSW5fb3B0
XyBJRE9NTm9kZSogbmV3Q2hpbGQsIF9Jbl9vcHRfIElET01Ob2RlICpyZWZDaGlsZCwgX0NPTV9P
dXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01F
bGVtZW50OjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxk
KF9Jbl9vcHRfIElET01Ob2RlKiBuZXdDaGlsZCwgX0luX29wdF8gSURPTU5vZGUqIG9sZENoaWxk
LCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUVsZW1lbnQ6OnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVDaGlsZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURP
TU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6cmVtb3Zl
Q2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hp
bGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NRWxlbWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVz
KF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50Ojpo
YXNDaGlsZE5vZGVzKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoQk9PTCBkZWVwLCBfQ09NX091dHB0cl9vcHRfIElE
T01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6OmNsb25l
Tm9kZShkZWVwLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVt
ZW50Ojpub3JtYWxpemUoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKF9Jbl8gQlNUUiBmZWF0dXJlLCBfSW5fIEJTVFIgdmVy
c2lvbiwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1l
bnQ6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoX19kZXJl
Zl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50
OjpuYW1lc3BhY2VVUkkocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6OnByZWZpeChyZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KF9J
bl8gQlNUUiBwcmVmaXgpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6c2V0UHJl
Zml4KHByZWZpeCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBsb2NhbE5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01FbGVtZW50Ojpsb2NhbE5hbWUocmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoX091
dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6Omhhc0F0
dHJpYnV0ZXMocmVzdWx0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNTYW1lTm9kZShfSW5fb3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50Ojppc1NhbWVOb2RlKG90
aGVyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNFcXVhbE5vZGUoX0luX29wdF8gSURPTU5vZGUqIG90aGVyLCBfT3V0XyBCT09M
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6aXNFcXVhbE5vZGUo
b3RoZXIsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0ZXh0Q29udGVudChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1lbnQ6OnRleHRDb250ZW50KHJlc3VsdCk7CisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29u
dGVudChfSW5fIEJTVFIgdGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50Ojpz
ZXRUZXh0Q29udGVudCh0ZXh0KTsKKyAgICB9CiAgICAgCiAgICAgLy8gSURPTUVsZW1lbnQKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFnTmFtZSggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50Ojp0YWdO
YW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZ2V0QXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50Ojpn
ZXRBdHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
bmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01FbGVtZW50
OjpzZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBuYW1lKSB7IHJldHVybiBET01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRl
Tm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50OjpnZXRBdHRy
aWJ1dGVOb2RlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURP
TUF0dHIgKm5ld0F0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipy
ZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUobmV3QXR0ciwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVBdHRyaWJ1dGVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NQXR0ciAqb2xkQXR0ciwK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAqKnJlc3VsdCkgeyByZXR1cm4g
RE9NRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZShvbGRBdHRyLCByZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdO
YW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01FbGVtZW50OjpnZXRF
bGVtZW50c0J5VGFnTmFtZShuYW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5TKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUVs
ZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0
ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIHF1YWxpZmllZE5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1
ZSkgeyByZXR1cm4gRE9NRWxlbWVudDo6c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFs
aWZpZWROYW1lLCB2YWx1ZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lKSB7IHJldHVybiBE
T01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRl
Tm9kZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NQXR0ciAqKnJlc3VsdCkgeyByZXR1cm4gRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGVOUyggCi0gICAgICAgIC8q
IFtpbl0gKi8gSURPTUF0dHIgKm5ld0F0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVO
UyhuZXdBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoIAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4g
RE9NRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYXNBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZShuYW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUVsZW1lbnQ6
Omhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOyB9Ci0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXMoIHZvaWQpIHsgcmV0dXJu
IERPTUVsZW1lbnQ6OmZvY3VzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYmx1ciggdm9pZCkgeyByZXR1cm4gRE9NRWxlbWVudDo6Ymx1cigpOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhZ05hbWUoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50Ojp0YWdO
YW1lKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBnZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RS
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRl
KG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50OjpzZXRBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cmVtb3ZlQXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5vZGUoX0luXyBCU1RSIG5h
bWUsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZShuYW1lLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRl
Tm9kZShfSW5fb3B0XyBJRE9NQXR0ciogbmV3QXR0ciwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0
cioqIHJlc3VsdCkgCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6c2V0QXR0cmli
dXRlTm9kZShuZXdBdHRyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTm9kZShfSW5fb3B0XyBJRE9NQXR0
ciogb2xkQXR0ciwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZEF0dHIsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBnZXRFbGVtZW50c0J5VGFnTmFtZShfSW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NTm9kZUxpc3QqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6
Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBu
YW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoX0luXyBCU1RSIG5h
bWVzcGFjZVVSSSwgX0luXyBCU1RSIHF1YWxpZmllZE5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VV
UkksIHF1YWxpZmllZE5hbWUsIHZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1lc3Bh
Y2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxl
bWVudDo6cmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRl
Tm9kZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUsIF9DT01f
T3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
RWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0QXR0cmlidXRlTm9kZU5TKF9Jbl9vcHRfIElET01BdHRyKiBuZXdBdHRyLCBfQ09NX091dHB0
cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUVsZW1l
bnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyhuZXdBdHRyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01F
bGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaGFzQXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6aGFzQXR0cmlidXRlKG5hbWUsIHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNB
dHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBf
T3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NRWxlbWVudDo6aGFz
QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvY3VzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01FbGVtZW50Ojpmb2N1cygpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmx1cigpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NRWxlbWVudDo6Ymx1cigpOworICAgIH0KIAogICAgIC8vIElET01IVE1MRWxlbWVudAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpZE5hbWUoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldElkTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBp
ZE5hbWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aXRs
ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGl0bGUoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgdGl0bGUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBsYW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRMYW5n
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxhbmcpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXIoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldERpciggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkaXIpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGFzc05hbWUoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldENsYXNzTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBjbGFzc05hbWUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlu
bmVySFRNTCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAg
ICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldElubmVySFRN
TCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBodG1sKTsKLSAgICAgICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVyVGV4dCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldElubmVyVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0ZXh0KTsgICAgICAgIAotCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGlkTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRJZE5hbWUoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdGl0bGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGl0bGUoX0luXyBCU1RSKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFuZyhfX2RlcmVmX29wdF9vdXQgQlNU
UiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRMYW5nKF9Jbl8g
QlNUUiBsZyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpcihfX2Rl
cmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXREaXIoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2xhc3NOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldENsYXNzTmFtZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbm5lckhUTUwoX19kZXJlZl9vcHRfb3V0IEJTVFIq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJIVE1MKF9J
bl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVyVGV4
dChfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRJbm5lclRleHQoX0luXyBCU1RSKTsKIH07CiAKIGNsYXNzIERPTUhUTUxGb3Jt
RWxlbWVudCA6IHB1YmxpYyBET01IVE1MRWxlbWVudCwgcHVibGljIElET01IVE1MRm9ybUVsZW1l
bnQKQEAgLTcwMCwzMDEgKzc4MywzNzMgQEAgcHVibGljOgogICAgIERPTUhUTUxGb3JtRWxlbWVu
dChXZWJDb3JlOjpFbGVtZW50KiBlKSA6IERPTUhUTUxFbGVtZW50KGUpIHt9CiAKICAgICAvLyBJ
VW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OkFk
ZFJlZigpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsK
KyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpBZGRSZWYoKTsgfQogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6UmVsZWFzZSgpOyB9
CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2Vw
dGlvbk1lc3NhZ2UsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwg
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
YWxsV2ViU2NyaXB0TWV0aG9kKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAg
ICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKLSAgICAgICAg
LyogW2luXSAqLyBpbnQgY0FyZ3MsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFO
VCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChu
YW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1
bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92
ZVdlYlNjcmlwdEtleSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBp
bmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0
dXJuIERPTUhUTUxFbGVtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2Ny
aXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgs
Ci0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKCAKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0RXhj
ZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9P
TCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0aHJvd0V4
Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZChfSW5fIEJT
VFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJQU5UIGFyZ3NbXSwgaW50
IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBl
dmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIgc2NyaXB0LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmV2YWx1YXRlV2ViU2NyaXB0
KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5n
UmVwcmVzZW50YXRpb24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9u
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzdHJpbmdSZXByZXNlbnRh
dGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5k
ZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFs
dWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
RXhjZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01IVE1MRWxlbWVudDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICB9CiAKICAgICAv
LyBJRE9NTm9kZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFt
ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6bm9kZU5hbWUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVmFsdWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5vZGVWYWx1ZShy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dE5vZGVWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpu
b2RlVHlwZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHBhcmVudE5vZGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2Rl
ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cGFyZW50Tm9kZShyZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNoaWxkTm9kZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bGFzdENoaWxkKHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlv
dXNTaWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3Vs
dCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OmF0dHJpYnV0ZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NRG9jdW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpvd25l
ckRvY3VtZW50KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqbmV3
Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNoaWxkLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoIAotICAg
ICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKLSAgICAgICAgLyogW2luXSAqLyBJ
RE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUg
KipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQs
IG9sZENoaWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZUNoaWxkKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xk
Q2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCgg
Ci0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hpbGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQ2hpbGRO
b2RlcyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNsb25lTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2b2lkKSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6bm9ybWFsaXplKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNTdXBwb3J0ZWQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZlcnNpb24sCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aXNTdXBwb3J0ZWQo
ZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5hbWVzcGFjZVVSSShy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBy
ZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVy
biBET01IVE1MRWxlbWVudDo6cHJlZml4KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIHByZWZpeCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFByZWZpeChwcmVmaXgpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZSgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmli
dXRlcyhyZXN1bHQpOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aXNTYW1lTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElE
T01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQp
IHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0VGV4dENvbnRlbnQodGV4
dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6bm9kZU5hbWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVmFsdWUocmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldE5vZGVWYWx1ZShfSW5fIEJTVFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZShfT3V0XyB1bnNpZ25lZCBzaG9y
dCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVHlw
ZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KSAKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6cGFyZW50Tm9kZShyZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGRO
b2RlcyhfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Y2hpbGROb2RlcyhyZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZChfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpmaXJzdENoaWxkKHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFzdENoaWxkKF9DT01fT3V0cHRyX29wdF8g
SURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
Omxhc3RDaGlsZChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUq
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnByZXZpb3Vz
U2libGluZyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmcoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6bmV4dFNpYmxpbmcocmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGF0dHJpYnV0ZXMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTmFtZWROb2RlTWFwKiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjphdHRyaWJ1dGVzKHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25l
ckRvY3VtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTURvY3VtZW50KiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpvd25lckRvY3VtZW50KHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRC
ZWZvcmUoX0luX29wdF8gSURPTU5vZGUqIG5ld0NoaWxkLCBfSW5fb3B0XyBJRE9NTm9kZSAqcmVm
Q2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omluc2VydEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQs
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZXBsYWNlQ2hpbGQoX0luX29wdF8gSURPTU5vZGUqIG5ld0NoaWxkLCBfSW5fb3B0XyBJ
RE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlcGxhY2VDaGlsZChuZXdDaGls
ZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoX0luX29wdF8gSURPTU5vZGUqIG9sZENoaWxk
LCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxk
KF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGlsZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6YXBwZW5kQ2hp
bGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVzKCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25l
Tm9kZShCT09MIGRlZXAsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpIAorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5v
cm1hbGl6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5vcm1hbGl6
ZSgpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aXNTdXBwb3J0ZWQoX0luXyBCU1RSIGZlYXR1cmUsIF9Jbl8gQlNUUiB2ZXJzaW9uLCBfT3V0XyBC
T09MKiByZXN1bHQpIAorICAgIHsgCisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aXNT
dXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSShfX2RlcmVmX29wdF9v
dXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpu
YW1lc3BhY2VVUkkocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwcmVmaXgocmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZpeChf
SW5fIEJTVFIgcHJlZml4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpz
ZXRQcmVmaXgocHJlZml4KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGxvY2FsTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpsb2NhbE5hbWUocmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJp
YnV0ZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQorCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoX0luX29wdF8gSURPTU5vZGUqIG90aGVy
LCBfT3V0XyBCT09MKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojppc1NhbWVOb2RlKG90aGVyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoX0luX29wdF8gSURPTU5vZGUq
IG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OmlzRXF1YWxOb2RlKG90aGVyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dENvbnRlbnQoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
dGV4dENvbnRlbnQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KF9Jbl8gQlNUUiB0ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRUZXh0Q29udGVudCh0ZXh0KTsKKyAgICB9
CiAgICAgCiAgICAgLy8gSURPTUVsZW1lbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdGFnTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6dGFnTmFtZShyZXN1bHQpOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhZ05hbWUoX19kZXJlZl9vcHRfb3V0IEJT
VFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnRhZ05hbWUocmVzdWx0KTsgfQog
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGUo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGUo
bmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOb2Rl
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRy
aWJ1dGVOb2RlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURP
TUF0dHIgKm5ld0F0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKG5ld0F0dHIs
IHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cmVtb3ZlQXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUF0dHIgKm9sZEF0
dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZEF0dHIsIHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5TKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VV
UkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWROYW1lLAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVO
UyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlKTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOUyggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBs
b2NhbE5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9kZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRB
dHRyaWJ1dGVOb2RlTlMoIAotICAgICAgICAvKiBbaW5dICovIElET01BdHRyICpuZXdBdHRyLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKG5ld0F0dHIsIHJlc3VsdCk7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRh
Z05hbWVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0RWxlbWVu
dHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGUoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGUobmFtZSwg
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBo
YXNBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRl
TlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb2N1cyggdm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmZvY3VzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgYmx1ciggdm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmJsdXIoKTsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5h
bWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKF9Jbl8g
QlNUUiBuYW1lLCBfSW5fIEJTVFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoX0luXyBCU1RS
IG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZShuYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldEF0dHJpYnV0ZU5vZGUoX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8g
SURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZU5vZGUobmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURP
TUF0dHIgKm5ld0F0dHIsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUobmV3QXR0
ciwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIgKm9sZEF0dHIsIF9D
T01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZEF0dHIsIHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVt
ZW50c0J5VGFnTmFtZShfSW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxp
c3QqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEVs
ZW1lbnRzQnlUYWdOYW1lKG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNw
YWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyhu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1l
c3BhY2VVUkksIF9Jbl8gQlNUUiBxdWFsaWZpZWROYW1lLCBfSW5fIEJTVFIgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFj
ZVVSSSwgcXVhbGlmaWVkTmFtZSwgdmFsdWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVz
cGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01I
VE1MRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0
cmlidXRlTm9kZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUs
IF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGVOUyhfSW5fb3B0XyBJRE9NQXR0ciAqbmV3QXR0ciwg
X0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKG5ld0F0dHIsIHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5h
bWUsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVMaXN0KiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lLCBfT3V0XyBC
T09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0
dHJpYnV0ZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwg
X0luXyBCU1RSIGxvY2FsTmFtZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZm9jdXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpmb2N1
cygpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Ymx1cigpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmJsdXIoKTsKKyAg
ICB9CiAKICAgICAvLyBJRE9NSFRNTEVsZW1lbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaWROYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjppZE5hbWUocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJZE5hbWUoIAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgaWROYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SWRO
YW1lKGlkTmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdGl0bGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnRpdGxlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGl0bGUoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgdGl0bGUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRUaXRsZSh0aXRsZSk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFuZyggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6bGFuZyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldExhbmcoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbGFuZykgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnNldExhbmcobGFuZyk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlyKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpkaXIocmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREaXIoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZGlyKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0RGly
KGRpcik7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xh
c3NOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpjbGFzc05hbWUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDbGFzc05hbWUoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgY2xhc3NOYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0Q2xhc3NO
YW1lKGNsYXNzTmFtZSk7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpbm5lckhUTUwoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkg
eyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlubmVySFRNTChyZXN1bHQpOyB9Ci0gICAgICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbm5lckhUTUwoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgaHRtbCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElu
bmVySFRNTChodG1sKTsgfQotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaW5uZXJUZXh0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQocmVzdWx0KTsgfQotICAg
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJUZXh0
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpzZXRJbm5lclRleHQodGV4dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaWROYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlkTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SWROYW1lKF9Jbl8gQlNUUiBp
ZE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElkTmFtZShp
ZE5hbWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdGl0bGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6dGl0bGUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRpdGxlKF9Jbl8gQlNUUiB0aXRsZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0VGl0bGUodGl0bGUpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFuZyhf
X2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpsYW5nKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRMYW5nKF9Jbl8gQlNUUiBsYW5nKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRMYW5nKGxhbmcpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlyKF9fZGVyZWZfb3B0X291dCBC
U1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmRpcihy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0RGlyKF9Jbl8gQlNUUiBkaXIpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OnNldERpcihkaXIpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgY2xhc3NOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNsYXNzTmFtZShyZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2xh
c3NOYW1lKF9Jbl8gQlNUUiBjbGFzc05hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnNldENsYXNzTmFtZShjbGFzc05hbWUpOworICAgIH0KKworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbm5lckhUTUwoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IHJlc3VsdCkgCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlubmVySFRN
TChyZXN1bHQpOworICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldElubmVySFRNTChfSW5fIEJTVFIgaHRtbCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGh0bWwpOworICAgIH0KKyAgICAgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVyVGV4dChfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojppbm5lclRleHQocmVzdWx0KTsKKyAgICB9CisgICAgICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbm5lclRleHQoX0luXyBCU1RSIHRleHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCh0ZXh0KTsKKyAg
ICB9CiAKICAgICAvLyBJRE9NSFRNTEZvcm1FbGVtZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGVsZW1lbnRzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NSFRNTENvbGxlY3Rpb24gKipyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBsZW5ndGgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGlu
dCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TmFtZSggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBuYW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYWNjZXB0Q2hhcnNldCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0QWNjZXB0Q2hhcnNldCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBhY2NlcHRDaGFy
c2V0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWN0aW9u
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBY3Rpb24oIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgYWN0aW9uKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZW5jVHlwZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAq
cmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
RW5jdHlwZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqZW5jVHlwZSk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ldGhvZCggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqbWV0aG9kKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWV0aG9kKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIG1ldGhvZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRhcmdldCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGFyZ2V0KCAK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRhcmdldCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHN1Ym1pdCggdm9pZCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlc2V0KCB2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZWxlbWVudHMoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTENv
bGxlY3Rpb24qKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxlbmd0
aChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFt
ZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXROYW1lKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGFjY2VwdENoYXJzZXQoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWNjZXB0Q2hhcnNldChfSW5fIEJTVFIp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhY3Rpb24oX19kZXJlZl9v
cHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
QWN0aW9uKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGVuY1R5cGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RW5jdHlwZShfSW5fb3B0XyBCU1RSKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ldGhvZChfX2RlcmVmX29wdF9vdXQgQlNUUiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNZXRob2QoX0luXyBCU1RS
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFyZ2V0KF9fZGVyZWZf
b3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dFRhcmdldChfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdWJtaXQoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVzZXQo
KTsKIH07CiAKIGNsYXNzIERPTUhUTUxTZWxlY3RFbGVtZW50IDogcHVibGljIERPTUhUTUxFbGVt
ZW50LCBwdWJsaWMgSURPTUhUTUxTZWxlY3RFbGVtZW50LCBwdWJsaWMgSUZvcm1zQXV0b0ZpbGxU
cmFuc2l0aW9uU2VsZWN0CkBAIC0xMDA1LDMyMCArMTE2MCwzODMgQEAgcHVibGljOgogICAgIERP
TUhUTUxTZWxlY3RFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGUpIDogRE9NSFRNTEVsZW1lbnQo
ZSkge30KIAogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAg
ICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRk
UmVmKCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OkFkZFJlZigpOyB9CiAgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3JpcHRPYmplY3QKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0aHJvd0V4Y2VwdGlvbihl
eGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFy
Z3NbICBdLAotICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjYWxs
V2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KCAKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpldmFsdWF0ZVdlYlNj
cmlwdChzY3JpcHQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IG5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVw
cmVzZW50YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c3RyaW5nUmVwcmVzZW50YXRp
b24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OndlYlNjcmlwdFZhbHVlQXRJbmRl
eChpbmRleCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICovIHVu
c2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRp
b24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNUUiBleGNlcHRpb25N
ZXNzYWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7CisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2Ny
aXB0TWV0aG9kKF9Jbl8gQlNUUiBuYW1lLCBfX2luX2Vjb3VudF9vcHQoY0FyZ3MpIGNvbnN0IFZB
UklBTlQgYXJnc1tdLCBpbnQgY0FyZ3MsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBh
cmdzLCBjQXJncywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiBzY3JpcHQsIF9PdXRf
IFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KF9Jbl8gQlNU
UiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVXZWJT
Y3JpcHRLZXkobmFtZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQgQlNUUiogc3Ry
aW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJ
bmRleCh1bnNpZ25lZCBpbmRleCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIFZBUklBTlQgdmFsKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0
SW5kZXgoaW5kZXgsIHZhbCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oX0luXyBCU1RSIGRlc2NyaXB0aW9uKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24p
OworICAgIH0KIAogICAgIC8vIElET01Ob2RlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG5vZGVOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlTmFtZShyZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6bm9kZVZhbHVlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZh
bHVlKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZSggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQgKnJlc3VsdCkgeyByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6Om5vZGVUeXBlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwYXJl
bnROb2RlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY2hpbGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVM
aXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Y2hpbGROb2RlcyhyZXN1bHQp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hp
bGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpsYXN0Q2hpbGQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwcmV2aW91c1NpYmxpbmcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cHJldmlvdXNTaWJs
aW5nKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgbmV4dFNpYmxpbmcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoq
cmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bmV4dFNpYmxpbmcocmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwICoqcmVzdWx0KSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6YXR0cmlidXRlcyhyZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoIAotICAgICAgICAvKiBbaW5d
ICovIElET01Ob2RlICpuZXdDaGlsZCwKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqcmVm
Q2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
cGxhY2VDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0NoaWxkLAotICAg
ICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlcGxh
Y2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoIAotICAgICAgICAvKiBbaW5d
ICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUNoaWxkKG9sZENo
aWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGFwcGVuZENoaWxkKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVzKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09M
IGRlZXAsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoIHZvaWQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub3JtYWxpemUoKTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBmZWF0dXJlLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSSggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVu
dDo6bmFtZXNwYWNlVVJJKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcHJlZml4KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwcmVmaXgocmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgcHJlZml4KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0
UHJlZml4KHByZWZpeCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbG9jYWxOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpsb2NhbE5hbWUocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVzKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9k
ZSogb3RoZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZSggCi0gICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlzRXF1YWxOb2RlKG90
aGVyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRleHRDb250ZW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1
bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0ZXh0Q29udGVudChyZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KCAK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpz
ZXRUZXh0Q29udGVudCh0ZXh0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBub2RlTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKF9fZGVyZWZf
b3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6Om5vZGVWYWx1ZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKF9Jbl8gQlNUUiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVUeXBlKF9P
dXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6Om5vZGVUeXBlKHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0cl9vcHRfIElET01O
b2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwYXJl
bnROb2RlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjaGlsZE5vZGVzKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVMaXN0KiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjaGlsZE5vZGVzKHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBmaXJzdENoaWxkKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZChf
Q09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpsYXN0Q2hpbGQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyhfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8g
SURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
Om5leHRTaWJsaW5nKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKF9DT01fT3V0cHRyX29wdF8gSURPTU5hbWVkTm9k
ZU1hcCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6YXR0
cmlidXRlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudChfQ09NX091dHB0cl9vcHRfIElET01Eb2N1bWVudCoq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6b3duZXJEb2N1
bWVudChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaW5zZXJ0QmVmb3JlKF9Jbl9vcHRfIElET01Ob2RlKiBuZXdDaGlsZCwgX0luX29w
dF8gSURPTU5vZGUqIHJlZkNoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjppbnNlcnRCZWZvcmUobmV3
Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyAKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGlsZChfSW5fb3B0XyBJRE9NTm9kZSogbmV3
Q2hpbGQsIF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGlsZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9N
Tm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6cmVw
bGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgCisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZChfSW5fb3B0XyBJ
RE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUNoaWxkKG9sZENoaWxk
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgYXBwZW5kQ2hpbGQoX0luX29wdF8gSURPTU5vZGUqIG9sZENoaWxkLCBfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoX091dF8gQk9P
TCogcmVzdWx0KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQ2hp
bGROb2RlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2xvbmVOb2RlKEJPT0wgZGVlcCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9k
ZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Y2xvbmVO
b2RlKGRlZXAsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBub3JtYWxpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50Ojpub3JtYWxpemUoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKF9Jbl8gQlNUUiBmZWF0dXJlLCBfSW5fIEJTVFIg
dmVyc2lvbiwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50Ojppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJ
KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpuYW1lc3BhY2VVUkkocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwcmVmaXgo
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldFByZWZpeChfSW5fIEJTVFIgcHJlZml4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpzZXRQcmVmaXgocHJlZml4KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZShfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpsb2NhbE5h
bWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGhhc0F0dHJpYnV0ZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQorCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoX0luX29wdF8g
SURPTU5vZGUqIG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZShfSW5f
b3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6aXNFcXVhbE5vZGUob3RoZXIsIHJlc3VsdCk7CisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVu
dChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50Ojp0ZXh0Q29udGVudChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoX0luXyBCU1RSIHRl
eHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFRleHRDb250ZW50
KHRleHQpOworICAgIH0KICAgICAKICAgICAvLyBJRE9NRWxlbWVudAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWdOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0YWdOYW1lKHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0
cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0
cmlidXRlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUs
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIG5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUobmFtZSk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmli
dXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
Z2V0QXR0cmlidXRlTm9kZShuYW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUoIAotICAgICAgICAvKiBbaW5d
ICovIElET01BdHRyICpuZXdBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01B
dHRyICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZShu
ZXdBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElET01BdHRy
ICpvbGRBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZShvbGRBdHRyLCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdl
dEVsZW1lbnRzQnlUYWdOYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSwgcmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOUygg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcXVhbGlmaWVkTmFtZSwKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0
cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTlMoIAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgbG9jYWxOYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
TlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5vZGVOUyggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0QXR0cmlidXRlTm9kZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NQXR0ciAqbmV3
QXR0ciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyhuZXdBdHRyLCByZXN1bHQp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1l
bnRzQnlUYWdOYW1lTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omdl
dEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRl
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRl
KG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaGFzQXR0cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNl
VVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0
dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOyB9Ci0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXMoIHZvaWQpIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50Ojpmb2N1cygpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGJsdXIoIHZvaWQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpibHVyKCk7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFnTmFtZShfX2RlcmVmX29w
dF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
Ojp0YWdOYW1lKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9fZGVyZWZfb3B0X291
dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omdl
dEF0dHJpYnV0ZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lLCBfSW5fIEJT
VFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0
ZU5vZGUoX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGUo
bmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIgKm5ld0F0dHIsIF9D
T01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUobmV3QXR0ciwgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJp
YnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIgKm9sZEF0dHIsIF9DT01fT3V0cHRyX29wdF8gSURP
TUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZU5vZGUob2xkQXR0ciwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lKF9Jbl8g
QlNUUiBuYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFt
ZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBs
b2NhbE5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RS
IHF1YWxpZmllZE5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1l
LCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIg
bG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVB
dHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOb2RlTlMoX0luXyBC
U1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NQXR0cioqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmli
dXRlTm9kZU5TKF9Jbl9vcHRfIElET01BdHRyKiBuZXdBdHRyLCBfQ09NX091dHB0cl9vcHRfIElE
T01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGVOb2RlTlMobmV3QXR0ciwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoX0lu
XyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX0NPTV9PdXRwdHJfb3B0
XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYXNBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRlKG5hbWUsIHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBo
YXNBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1l
LCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6Omhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOworICAg
IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb2N1cygpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmZvY3VzKCk7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBibHVyKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Ymx1cigpOworICAgIH0KIAogICAgIC8vIElET01I
VE1MRWxlbWVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpZE5hbWUo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OmlkTmFtZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldElkTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBp
ZE5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJZE5hbWUoaWROYW1lKTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aXRsZSggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVu
dDo6dGl0bGUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRUaXRsZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFRpdGxlKHRpdGxlKTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpsYW5nKHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TGFuZygg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsYW5nKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
c2V0TGFuZyhsYW5nKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkaXIoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmRpcihyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERpciggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBkaXIpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXREaXIoZGlyKTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGFzc05hbWUoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OmNsYXNzTmFtZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldENsYXNzTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBjbGFzc05h
bWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRDbGFzc05hbWUoY2xhc3NOYW1lKTsgfQot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVySFRNTCggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6aW5uZXJIVE1MKHJlc3VsdCk7IH0KLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldElubmVySFRNTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBodG1sKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGh0bWwpOyB9Ci0g
ICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbm5lclRleHQo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OmlubmVyVGV4dChyZXN1bHQpOyB9Ci0gICAgICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbm5lclRleHQoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCh0ZXh0
KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpZE5hbWUoX19kZXJl
Zl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6aWROYW1lKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRJZE5hbWUoX0luXyBCU1RSIGlkTmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SWROYW1lKGlkTmFtZSk7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aXRsZShfX2RlcmVmX29w
dF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
Ojp0aXRsZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0VGl0bGUoX0luXyBCU1RSIHRpdGxlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpzZXRUaXRsZSh0aXRsZSk7IAorICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFuZyhfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpsYW5nKHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRMYW5nKF9Jbl8gQlNUUiBsYW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpzZXRMYW5nKGxhbmcpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlyKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmRpcihyZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlyKF9Jbl8gQlNU
UiBkaXIpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldERpcihkaXIp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xh
c3NOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmNsYXNzTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2xhc3NOYW1lKF9Jbl8gQlNUUiBj
bGFzc05hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldENsYXNz
TmFtZShjbGFzc05hbWUpOworICAgIH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpbm5lckhUTUwoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aW5uZXJIVE1MKHJlc3VsdCk7CisgICAgfQor
ICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJI
VE1MKF9Jbl8gQlNUUiBodG1sKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpzZXRJbm5lckhUTUwoaHRtbCk7CisgICAgfQorICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5uZXJUZXh0KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1
bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dChyZXN1
bHQpOworICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldElubmVyVGV4dChfSW5fIEJTVFIgdGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01IVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KHRleHQpOworICAgIH0KIAogICAgIC8vIElET01I
VE1MU2VsZWN0RWxlbWVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
eXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWxlY3RlZEluZGV4KCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNlbGVjdGVkSW5keCggCi0gICAgICAgIC8q
IFtpbl0gKi8gaW50IHNlbGVjdGVkSW5kZXgpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB2YWx1ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0VmFsdWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsZW5ndGgoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIGludCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZm9ybSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUhU
TUxGb3JtRWxlbWVudCAqKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIG9wdGlvbnMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb24gKipyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkaXNhYmxlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0RGlzYWJsZWQoIAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZGlzYWJsZWQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtdWx0aXBsZSggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TXVsdGlwbGUoIAotICAgICAgICAvKiBb
aW5dICovIEJPT0wgbXVsdGlwbGUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBuYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROYW1l
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaXplKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQgKnNpemUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRTaXplKCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQgc2l6ZSk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhYkluZGV4KCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFRhYkluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQgdGFi
SW5kZXgpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGQo
IAotICAgICAgICAvKiBbaW5dICovIElET01IVE1MRWxlbWVudCAqZWxlbWVudCwKLSAgICAgICAg
LyogW2luXSAqLyBJRE9NSFRNTEVsZW1lbnQgKmJlZm9yZSk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50
IGluZGV4KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHlwZShfX2Rl
cmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZWxlY3RlZEluZGV4KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRTZWxlY3RlZEluZHgoaW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgdmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VmFsdWUoX0luXyBCU1RSKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKF9PdXRfIGludCopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb3JtKF9DT01fT3V0cHRyX29wdF8gSURP
TUhUTUxGb3JtRWxlbWVudCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgb3B0aW9ucyhfQ09NX091dHB0cl9vcHRfIElET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24qKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpc2FibGVkKF9PdXRfIEJP
T0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlzYWJsZWQo
Qk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG11bHRpcGxlKF9P
dXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TXVs
dGlwbGUoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWUo
X19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0TmFtZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzaXplKF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRTaXplKGludCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRhYkluZGV4KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRUYWJJbmRleChpbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhZGQoX0luX29wdF8gSURPTUhUTUxFbGVtZW50KiwgX0luX29wdF8gSURPTUhUTUxF
bGVtZW50KiBiZWZvcmUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZW1vdmUoaW50IGluZGV4KTsKICAgICAKICAgICAvLyBJRm9ybXNBdXRvRmlsbFRyYW5zaXRpb25T
ZWxlY3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWN0aXZhdGVJdGVt
QXRJbmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGluZGV4KTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWN0aXZhdGVJdGVtQXRJbmRleChpbnQpOwogfTsKIAog
Y2xhc3MgRE9NSFRNTE9wdGlvbkVsZW1lbnQgOiBwdWJsaWMgRE9NSFRNTEVsZW1lbnQsIHB1Ymxp
YyBJRE9NSFRNTE9wdGlvbkVsZW1lbnQKQEAgLTEzMjksMjk0ICsxNTQ3LDM3MyBAQCBwdWJsaWM6
CiAgICAgRE9NSFRNTE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZSkgOiBET01IVE1M
RWxlbWVudChlKSB7fQogCiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmpl
Y3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpBZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBBZGRSZWYoKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6QWRkUmVmKCk7IH0KICAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnRocm93RXhj
ZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCggCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZB
UklBTlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3Jp
cHQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmV2YWx1
YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZVdlYlNjcmlwdEtl
eShuYW1lKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
dHJpbmdSZXByZXNlbnRhdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
c3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzdHJpbmdSZXBy
ZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAg
LyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6d2ViU2NyaXB0VmFs
dWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCi0gICAgICAgIC8qIFtp
bl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFs
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4
LCB2YWwpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEV4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oX0luXyBCU1RSIGV4
Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNh
bGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9faW5fZWNvdW50X29wdChjQXJncykg
Y29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBjQXJncywgX091dF8gVkFSSUFOVCogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9k
KG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIHNjcmlw
dCwgX091dF8gVkFSSUFOVCogcmVzdWx0KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5
KF9Jbl8gQlNUUiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpy
ZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQg
QlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlw
dFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
aW5kZXgsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIFZBUklB
TlQgdmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRXZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oX0luXyBCU1RSIGRlc2NyaXB0aW9u
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRFeGNlcHRpb24oZGVz
Y3JpcHRpb24pOworICAgIH0KIAogICAgIC8vIElET01Ob2RlCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlTmFtZShyZXN1bHQp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1
ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6bm9kZVZhbHVlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0Tm9kZVZhbHVlKHZhbHVl
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlw
ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQgKnJlc3VsdCkg
eyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5vZGVUeXBlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpwYXJlbnROb2RlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Y2hpbGROb2Rl
cyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGZpcnN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpsYXN0Q2hpbGQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2aW91c1NpYmxpbmcoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cHJl
dmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bmV4dFNpYmxpbmcocmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdHRy
aWJ1dGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwICoq
cmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6YXR0cmlidXRlcyhyZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoIAotICAgICAg
ICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKLSAgICAgICAgLyogW2luXSAqLyBJRE9N
Tm9kZSAqcmVmQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJl
ZkNoaWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlcGxhY2VDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0No
aWxkLAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoIAotICAgICAg
ICAvKiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUNo
aWxkKG9sZENoaWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGFwcGVuZENoaWxkKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAq
b2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQp
IHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5v
ZGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCT09MIGRlZXAsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUo
IHZvaWQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub3JtYWxpemUoKTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBmZWF0dXJlLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lv
biwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50Ojppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSSgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6bmFtZXNwYWNlVVJJKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZml4KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwcmVmaXgocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVm
aXgoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJlZml4KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6c2V0UHJlZml4KHByZWZpeCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpsb2NhbE5hbWUocmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1
dGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KLQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKCAKLSAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSogb3RoZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9k
ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlzRXF1
YWxOb2RlKG90aGVyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRleHRDb250ZW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0ZXh0Q29udGVudChyZXN1bHQp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRD
b250ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpzZXRUZXh0Q29udGVudCh0ZXh0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBub2RlTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlTmFtZShyZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVl
KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6Om5vZGVWYWx1ZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKF9Jbl8gQlNUUiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0Tm9kZVZhbHVlKHZhbHVl
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5v
ZGVUeXBlKF9PdXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCisgICAgeyAKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVHlwZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0cl9v
cHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpwYXJlbnROb2RlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVM
aXN0KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjaGls
ZE5vZGVzKHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZmlyc3RDaGlsZChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0
KQorICAgIHsgCisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Zmlyc3RDaGlsZChyZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bGFzdENoaWxkKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omxhc3RDaGlsZChyZXN1bHQpOyAKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGlu
ZyhfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKF9DT01f
T3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6Om5leHRTaWJsaW5nKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKF9DT01fT3V0cHRyX29wdF8g
SURPTU5hbWVkTm9kZU1hcCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6YXR0cmlidXRlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudChfQ09NX091dHB0cl9vcHRfIElE
T01Eb2N1bWVudCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVu
dDo6b3duZXJEb2N1bWVudChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKF9Jbl9vcHRfIElET01Ob2RlKiBuZXdD
aGlsZCwgX0luX29wdF8gSURPTU5vZGUgKnJlZkNoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01O
b2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjppbnNl
cnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKF9Jbl9vcHRfIElE
T01Ob2RlKiBuZXdDaGlsZCwgX0luX29wdF8gSURPTU5vZGUqIG9sZENoaWxkLCBfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQo
X0luX29wdF8gSURPTU5vZGUqIG9sZENoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiog
cmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVDaGls
ZChvbGRDaGlsZCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGlsZCwg
X0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVz
KF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVu
dDo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKEJPT0wgZGVlcCwgX0NPTV9PdXRwdHJfb3B0
XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVu
dDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoKSAKKyAgICB7IAorICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6Om5vcm1hbGl6ZSgpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoX0luXyBCU1RSIGZlYXR1cmUs
IF9Jbl8gQlNUUiB2ZXJzaW9uLCBfT3V0XyBCT09MKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50Ojppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bmFtZXNwYWNlVVJJKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyAKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6cHJlZml4KHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KF9Jbl8gQlNUUiBwcmVmaXgpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFByZWZpeChwcmVmaXgpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKF9fZGVy
ZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OmxvY2FsTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyhfT3V0XyBCT09MKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMocmVzdWx0
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1l
Tm9kZShfSW5fb3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlz
RXF1YWxOb2RlKF9Jbl9vcHRfIElET01Ob2RlKiBvdGhlciwgX091dF8gQk9PTCogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppc0VxdWFsTm9kZShvdGhlciwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRleHRDb250ZW50KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnRleHRDb250ZW50KHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVu
dChfSW5fIEJTVFIgdGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
c2V0VGV4dENvbnRlbnQodGV4dCk7CisgICAgfQogICAgIAogICAgIC8vIElET01FbGVtZW50Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhZ05hbWUoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnRhZ05hbWUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBnZXRBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpnZXRBdHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoIAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0
dHJpYnV0ZShuYW1lKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXRBdHRyaWJ1dGVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gSURPTUF0dHIgKm5ld0F0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRB
dHRyaWJ1dGVOb2RlKG5ld0F0dHIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSURPTUF0dHIgKm9sZEF0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVO
b2RlKG9sZEF0dHIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1
bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lLCBy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdl
dEF0dHJpYnV0ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVO
UyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZp
ZWROYW1lLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVl
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVB
dHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpy
ZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9kZU5TKCAKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAqKnJl
c3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOb2RlTlMoIAotICAgICAgICAvKiBbaW5dICov
IElET01BdHRyICpuZXdBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRy
ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKG5l
d0F0dHIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBu
YW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYXNBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpoYXNBdHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6aGFzQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7
IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb2N1cyggdm9pZCkg
eyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmZvY3VzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmx1ciggdm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmJsdXIoKTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWdO
YW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnRhZ05hbWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZShfSW5fIEJTVFIgbmFtZSwg
X19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01I
VE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlKG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoX0luXyBCU1RS
IG5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZShfSW5fIEJTVFIgbmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
KG5hbWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZ2V0QXR0cmlidXRlTm9kZShfSW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9N
QXR0cioqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0
QXR0cmlidXRlTm9kZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZShfSW5fb3B0XyBJRE9NQXR0
ciAqbmV3QXR0ciwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZShuZXdBdHRyLCBy
ZXN1bHQpOyAKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIgKm9sZEF0dHIsIF9DT01f
T3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUob2xkQXR0ciwgcmVzdWx0KTsgCisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50
c0J5VGFnTmFtZShfSW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3Qq
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEVsZW1l
bnRzQnlUYWdOYW1lKG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNl
VVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1lc3Bh
Y2VVUkksIF9Jbl8gQlNUUiBxdWFsaWZpZWROYW1lLCBfSW5fICBCU1RSIHZhbHVlKSAKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTlMobmFtZXNwYWNl
VVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNw
YWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRy
aWJ1dGVOb2RlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwg
X0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZU5TKF9Jbl9vcHRfIElET01BdHRyICpuZXdBdHRyLCBf
Q09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMobmV3QXR0ciwgcmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1l
bnRzQnlUYWdOYW1lTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFt
ZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9PdXRfIEJP
T0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0
cmlidXRlKG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBf
SW5fIEJTVFIgbG9jYWxOYW1lLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lLCByZXN1bHQpOworICAgIH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBmb2N1cygpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmZvY3Vz
KCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBi
bHVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Ymx1cigpOworICAg
IH0KIAogICAgIC8vIElET01IVE1MRWxlbWVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpZE5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJl
c3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlkTmFtZShyZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldElkTmFtZSggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBpZE5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJZE5h
bWUoaWROYW1lKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0aXRsZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6dGl0bGUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUaXRsZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB0aXRsZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFRpdGxlKHRpdGxlKTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYW5nKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpsYW5nKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0TGFuZyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsYW5nKSB7IHJldHVy
biBET01IVE1MRWxlbWVudDo6c2V0TGFuZyhsYW5nKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXIoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmRpcihyZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERpciggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBkaXIpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXREaXIo
ZGlyKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGFz
c05hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmNsYXNzTmFtZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENsYXNzTmFtZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBjbGFzc05hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRDbGFzc05h
bWUoY2xhc3NOYW1lKTsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGlubmVySFRNTCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6aW5uZXJIVE1MKHJlc3VsdCk7IH0KLSAgICAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldElubmVySFRNTCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBodG1sKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SW5u
ZXJIVE1MKGh0bWwpOyB9Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpbm5lclRleHQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJl
c3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dChyZXN1bHQpOyB9Ci0gICAg
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbm5lclRleHQo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnNldElubmVyVGV4dCh0ZXh0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBpZE5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6aWROYW1lKHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJZE5hbWUoX0luXyBCU1RSIGlk
TmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SWROYW1lKGlk
TmFtZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0aXRsZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50Ojp0aXRsZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGl0bGUoX0luXyBCU1RSIHRpdGxlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRUaXRsZSh0aXRsZSk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYW5nKF9f
ZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OmxhbmcocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldExhbmcoX0luXyBCU1RSIGxhbmcpCisgICAgeworICAgICAg
ICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldExhbmcobGFuZyk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXIoX19kZXJlZl9vcHRfb3V0IEJT
VFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6ZGlyKHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXREaXIoX0luXyBCU1RSIGRpcikKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6c2V0RGlyKGRpcik7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjbGFzc05hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Y2xhc3NOYW1lKHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDbGFz
c05hbWUoX0luXyBCU1RSIGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6c2V0Q2xhc3NOYW1lKGNsYXNzTmFtZSk7CisgICAgfQorCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVySFRNTChfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aW5uZXJIVE1M
KHJlc3VsdCk7CisgICAgfQorICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0SW5uZXJIVE1MKF9Jbl8gQlNUUiBodG1sKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoaHRtbCk7CisgICAgfQorICAgICAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5uZXJUZXh0KF9fZGVyZWZf
b3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmlubmVyVGV4dChyZXN1bHQpOworICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldElubmVyVGV4dChfSW5fIEJTVFIgdGV4dCkKKyAgICB7
IAorICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCh0ZXh0KTsKKyAg
ICB9CiAKICAgICAvLyBJRE9NSFRNTE9wdGlvbkVsZW1lbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZm9ybSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUhUTUxGb3JtRWxlbWVudCAqKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRlZmF1bHRTZWxlY3RlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0RGVmYXVsdFNlbGVjdGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGRl
ZmF1bHRTZWxlY3RlZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRleHQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluZGV4KCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpc2FibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXREaXNhYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkaXNhYmxl
ZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhYmVsKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRMYWJlbCggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBsYWJlbCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNlbGVjdGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTZWxl
Y3RlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBzZWxlY3RlZCk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbHVlKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvcm0oX0NPTV9PdXRwdHJf
b3B0XyBJRE9NSFRNTEZvcm1FbGVtZW50KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkZWZhdWx0U2VsZWN0ZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZhdWx0U2VsZWN0ZWQoQk9PTCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRleHQoX19kZXJlZl9vcHRfb3V0IEJTVFIq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5kZXgoX091dF8gaW50
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpc2FibGVkKF9PdXRf
IEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlzYWJs
ZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhYmVsKF9f
ZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldExhYmVsKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNlbGVjdGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0U2VsZWN0ZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHZhbHVlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRWYWx1ZShfSW5fIEJTVFIpOwogfTsK
IAogY2xhc3MgRE9NSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBET01IVE1MRWxlbWVudCwgcHVi
bGljIElET01IVE1MSW5wdXRFbGVtZW50LCBwdWJsaWMgSUZvcm1zQXV0b0ZpbGxUcmFuc2l0aW9u
LCBwdWJsaWMgSUZvcm1Qcm9tcHRBZGRpdGlvbnMKQEAgLTE2MjcsNDA2ICsxOTI0LDQxNSBAQCBw
dWJsaWM6CiAgICAgRE9NSFRNTElucHV0RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlKSA6IERP
TUhUTUxFbGVtZW50KGUpIHt9CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBw
dk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9p
ZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIEFkZFJlZigpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpBZGRSZWYoKTsgfQog
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVy
biBET01IVE1MRWxlbWVudDo6UmVsZWFzZSgpOyB9CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6dGhy
b3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29u
c3QgVkFSSUFOVCBhcmdzWyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdl
YlNjcmlwdCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlV2ViU2Ny
aXB0S2V5KG5hbWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnN0cmlu
Z1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAotICAg
ICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp3ZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAg
LyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFO
VCB2YWwpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
aW5kZXgsIHZhbCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0RXhjZXB0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJT
VFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCBy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2FsbFdlYlNjcmlwdE1ldGhvZChfSW5fIEJTVFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNB
cmdzKSBjb25zdCBWQVJJQU5UIGFyZ3NbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1
bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRN
ZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIg
c2NyaXB0LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlw
dEtleShfSW5fIEJTVFIgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVu
dDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6d2ViU2NyaXB0VmFsdWVBdElu
ZGV4KGluZGV4LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBW
QVJJQU5UIHZhbCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0V2Vi
U2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlw
dGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0RXhjZXB0aW9u
KGRlc2NyaXB0aW9uKTsKKyAgICB9CiAKICAgICAvLyBJRE9NTm9kZQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bm9kZU5hbWUocmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2Rl
VmFsdWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6Om5vZGVWYWx1ZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2
YWx1ZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9k
ZVR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1
bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVHlwZShyZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6cGFyZW50Tm9kZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNoaWxk
Tm9kZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBmaXJzdENoaWxkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAq
KnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6bGFzdENoaWxkKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5leHRTaWJsaW5n
KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YXR0cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1h
cCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZXMocmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3Vt
ZW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQgKipyZXN1bHQp
IHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8g
SURPTU5vZGUgKnJlZkNoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2Rl
ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxk
LCByZWZDaGlsZCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpu
ZXdDaGlsZCwKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUNoaWxkKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1v
dmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hp
bGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZSggCi0gICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBkZWVwLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2Rl
ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFs
aXplKCB2b2lkKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bm9ybWFsaXplKCk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZl
cnNpb24sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVy
biBET01IVE1MRWxlbWVudDo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VV
UkkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cHJlZml4KHJl
c3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
UHJlZml4KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHByZWZpeCkgeyByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnNldFByZWZpeChwcmVmaXgpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bG9jYWxOYW1lKHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0
cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRlcyhyZXN1bHQpOyB9Ci0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSURPTU5vZGUqIG90aGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IHJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVh
bE5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpp
c0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6dGV4dENvbnRlbnQocmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRU
ZXh0Q29udGVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6c2V0VGV4dENvbnRlbnQodGV4dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6bm9kZU5hbWUocmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVW
YWx1ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUhUTUxFbGVtZW50Ojpub2RlVmFsdWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZShfSW5fIEJTVFIgdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2
YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBub2RlVHlwZShfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVHlwZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsgCisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6cGFyZW50Tm9kZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcyhfQ09NX091dHB0cl9vcHRfIElET01O
b2RlTGlzdCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
Y2hpbGROb2RlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZChfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpmaXJzdENoaWxkKHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBsYXN0Q2hpbGQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6bGFzdENoaWxkKHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2aW91c1NpYmxp
bmcoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6cHJldmlvdXNTaWJsaW5nKHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0U2libGluZyhfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpuZXh0U2libGluZyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyhfQ09NX091dHB0cl9vcHRf
IElET01OYW1lZE5vZGVNYXAqKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjphdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50KF9DT01fT3V0cHRyX29wdF8g
SURPTURvY3VtZW50KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojpvd25lckRvY3VtZW50KHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoX0luX29wdF8gSURPTU5vZGUqIG5l
d0NoaWxkLCBfSW5fb3B0XyBJRE9NTm9kZSAqcmVmQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURP
TU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omlu
c2VydEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoX0luX29wdF8g
SURPTU5vZGUqIG5ld0NoaWxkLCBfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0
cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7CisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGls
ZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUq
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUNo
aWxkKG9sZENoaWxkLCByZXN1bHQpOyAKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGls
ZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5v
ZGVzKF9PdXRfIEJPT0wqIHJlc3VsdCkgCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZShCT09MIGRlZXAsIF9DT01fT3V0cHRy
X29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OmNsb25lTm9kZShkZWVwLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6bm9ybWFsaXplKCk7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZChfSW5fIEJTVFIgZmVhdHVy
ZSwgX0luXyBCU1RSIHZlcnNpb24sIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5hbWVzcGFjZVVSSShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpuYW1lc3BhY2VVUkkocmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpwcmVmaXgocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFByZWZpeChfSW5fIEJTVFIgcHJlZml4KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRQcmVmaXgocHJlZml4KTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZShfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojpsb2NhbE5hbWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7
CisgICAgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5v
ZGUoX0luX29wdF8gSURPTU5vZGUqIG90aGVyLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgewor
ICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0Vx
dWFsTm9kZShfSW5fb3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aXNFcXVhbE5vZGUob3RoZXIsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0ZXh0Q29udGVudChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0ZXh0Q29udGVudChyZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQo
X0luXyBCU1RSIHRleHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNl
dFRleHRDb250ZW50KHRleHQpOworICAgIH0KICAgICAKICAgICAvLyBJRE9NRWxlbWVudAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWdOYW1lKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0
YWdOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0QXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6Z2V0QXR0cmlidXRlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIG5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGUobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZ2V0QXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZShuYW1lLCByZXN1bHQpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUoIAotICAg
ICAgICAvKiBbaW5dICovIElET01BdHRyICpuZXdBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0
cmlidXRlTm9kZShuZXdBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoIAotICAgICAgICAvKiBbaW5d
ICovIElET01BdHRyICpvbGRBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01B
dHRyICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9k
ZShvbGRBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRB
dHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcXVhbGlmaWVk
TmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0
cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVt
b3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOyB9Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5vZGVOUyggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1
bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBJ
RE9NQXR0ciAqbmV3QXR0ciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAq
KnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyhuZXdB
dHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUs
IHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aGFzQXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
aGFzQXR0cmlidXRlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOyB9
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXMoIHZvaWQpIHsg
cmV0dXJuIERPTUhUTUxFbGVtZW50Ojpmb2N1cygpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGJsdXIoIHZvaWQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpibHVyKCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFnTmFt
ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50Ojp0YWdOYW1lKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9f
ZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKF9Jbl8gQlNUUiBu
YW1lLCBfSW5fIEJTVFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShu
YW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGdldEF0dHJpYnV0ZU5vZGUoX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0
dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0
dHJpYnV0ZU5vZGUobmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIg
Km5ld0F0dHIsIF9DT01fT3V0cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUobmV3QXR0ciwgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJlbW92ZUF0dHJpYnV0ZU5vZGUoX0luX29wdF8gSURPTUF0dHIgKm9sZEF0dHIsIF9DT01fT3V0
cHRyX29wdF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUob2xkQXR0ciwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlU
YWdOYW1lKF9Jbl8gQlNUUiBuYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0RWxlbWVudHNC
eVRhZ05hbWUobmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkks
IF9Jbl8gQlNUUiBsb2NhbE5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVS
SSwgX0luXyBCU1RSIHF1YWxpZmllZE5hbWUsIF9Jbl8gQlNUUiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBx
dWFsaWZpZWROYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJ
LCBfSW5fIEJTVFIgbG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVO
b2RlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX0NPTV9P
dXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01I
VE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0QXR0cmlidXRlTm9kZU5TKF9Jbl9vcHRfIElET01BdHRyICpuZXdBdHRyLCBfQ09NX091
dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMobmV3QXR0ciwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX0NP
TV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBs
b2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9PdXRfIEJPT0wqIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRl
KG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJT
VFIgbG9jYWxOYW1lLCBfT3V0XyBCT09MKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBy
ZXN1bHQpOyAKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Zm9jdXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpmb2N1cygpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmx1cigp
CisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmJsdXIoKTsKKyAgICB9CiAK
ICAgICAvLyBJRE9NSFRNTEVsZW1lbnQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaWROYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQp
IHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjppZE5hbWUocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJZE5hbWUoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgaWROYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SWROYW1lKGlk
TmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGl0
bGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnRpdGxlKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGl0bGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
dGl0bGUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRUaXRsZSh0aXRsZSk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFuZyggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
bGFuZyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldExhbmcoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbGFuZykgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OnNldExhbmcobGFuZyk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlyKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpkaXIocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREaXIoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgZGlyKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0RGlyKGRpcik7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xhc3NOYW1l
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpjbGFzc05hbWUocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDbGFzc05hbWUoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgY2xhc3NOYW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0Q2xhc3NOYW1lKGNs
YXNzTmFtZSk7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbm5l
ckhUTUwoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmlubmVySFRNTChyZXN1bHQpOyB9Ci0gICAgICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbm5lckhUTUwoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgaHRtbCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElubmVySFRN
TChodG1sKTsgfQotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaW5uZXJUZXh0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQp
IHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQocmVzdWx0KTsgfQotICAgICAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJUZXh0KCAKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJ
bm5lclRleHQodGV4dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aWROYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmlkTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SWROYW1lKF9Jbl8gQlNUUiBpZE5hbWUp
IAorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJZE5hbWUoaWROYW1l
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRp
dGxlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnRpdGxlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUaXRsZShfSW5fIEJTVFIgdGl0bGUpCisgICAg
eworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFRpdGxlKHRpdGxlKTsgCisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYW5nKF9fZGVy
ZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OmxhbmcocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldExhbmcoX0luXyBCU1RSIGxhbmcpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldExhbmcobGFuZyk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXIoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6ZGlyKHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXREaXIoX0luXyBCU1RSIGRpcikKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVu
dDo6c2V0RGlyKGRpcik7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjbGFzc05hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Y2xhc3NOYW1lKHJlc3VsdCk7CisgICAg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDbGFzc05h
bWUoX0luXyBCU1RSIGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6c2V0Q2xhc3NOYW1lKGNsYXNzTmFtZSk7CisgICAgfQorCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVySFRNTChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppbm5lckhUTUwocmVz
dWx0KTsKKyAgICB9CisgICAgICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRJbm5lckhUTUwoX0luXyBCU1RSIGh0bWwpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChodG1sKTsKKyAgICB9CisgICAgICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbm5lclRleHQoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
aW5uZXJUZXh0KHJlc3VsdCk7CisgICAgfQorICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJUZXh0KF9Jbl8gQlNUUiB0ZXh0KSAKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KHRleHQpOworICAgIH0K
IAogICAgIC8vIElET01IVE1MSW5wdXRFbGVtZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRlZmF1bHRWYWx1ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0RGVmYXVsdFZhbHVlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRDaGVja2VkKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZhdWx0Q2hlY2tlZCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBjaGVja2VkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZm9ybSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUhUTUxFbGVtZW50ICoqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYWNjZXB0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRB
Y2NlcHQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgYWNjZXB0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWNjZXNzS2V5KCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRBY2Nlc3NLZXkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
a2V5KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxpZ24o
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsaWduKCAKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIGFsaWduKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgYWx0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbHQoIAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgYWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgY2hlY2tlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0Q2hlY2tlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjaGVja2VkKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlzYWJsZWQoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERpc2FibGVkKCAKLSAgICAgICAgLyogW2luXSAq
LyBCT09MIGRpc2FibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbWF4TGVuZ3RoKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1heExl
bmd0aCggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IG1heExlbmd0aCk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWUoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIgKm5hbWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXROYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWFkT25seSggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UmVhZE9ubHkoIAotICAgICAgICAvKiBbaW5d
ICovIEJPT0wgcmVhZE9ubHkpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzaXplKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBpbnQg
KnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dFNpemUoIAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBzaXplKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3JjKCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRTcmMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgc3JjKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFiSW5kZXgoIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGFiSW5kZXgoIAotICAgICAgICAvKiBb
aW5dICovIGludCB0YWJJbmRleCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFR5cGUo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdHlwZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHVzZU1hcCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0VXNlTWFwKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVzZU1hcCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbHVlKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB2YWx1ZSk7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZWxlY3QoIHZvaWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBjbGljayggdm9pZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0U2VsZWN0aW9uU3RhcnQoIAotICAgICAgICAvKiBbaW5dICovIGxvbmcgc3RhcnQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWxlY3Rpb25TdGFy
dCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyAqc3RhcnQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTZWxlY3Rpb25FbmQoIAotICAg
ICAgICAvKiBbaW5dICovIGxvbmcgZW5kKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2VsZWN0aW9uRW5kKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBsb25nICplbmQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWZh
dWx0VmFsdWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RGVmYXVsdFZhbHVlKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRDaGVja2VkKF9PdXRfIEJPT0wqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGVmYXVsdENoZWNrZWQoX0lu
XyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9ybShfQ09N
X091dHB0cl9vcHRfIElET01IVE1MRWxlbWVudCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgYWNjZXB0KF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFjY2VwdChfSW5fIEJTVFIpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhY2Nlc3NLZXkoX19kZXJlZl9vcHRfb3V0
IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWNjZXNz
S2V5KF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFs
aWduKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEFsaWduKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGFsdChfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbHQoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hlY2tlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENoZWNrZWQoQk9PTCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpc2FibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlzYWJsZWQoQk9PTCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1heExlbmd0aChfT3V0XyBpbnQqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWF4TGVuZ3RoKGludCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWUoX19kZXJlZl9vcHRf
b3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TmFt
ZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWFk
T25seShfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFJlYWRPbmx5KEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzaXplKF9PdXRfIHVuc2lnbmVkKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldFNpemUodW5zaWduZWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzcmMoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0U3JjKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRhYkluZGV4KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUYWJJbmRleChpbnQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0eXBlKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFR5cGUoX0luXyBCU1RSKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlTWFwKF9fZGVyZWZfb3B0X291
dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFVzZU1h
cChfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2YWx1
ZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRWYWx1ZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZWxlY3QoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2xpY2soKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2Vs
ZWN0aW9uU3RhcnQobG9uZyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNlbGVjdGlvblN0YXJ0KF9PdXRfIGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0U2VsZWN0aW9uRW5kKGxvbmcpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZWxlY3Rpb25FbmQoX091dF8gbG9uZyopOwogCiAgICAgLy8gSUZv
cm1zQXV0b0ZpbGxUcmFuc2l0aW9uCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGlzVGV4dEZpZWxkKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlY3RPblNj
cmVlbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gTFBSRUNUIHJlY3QpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1RleHRGaWVsZChfT3V0XyBCT09MKik7
CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGFy
YWN0ZXJzSW5SYW5nZSggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IHN0YXJ0VGFyZ2V0LAotICAg
ICAgICAvKiBbaW5dICovIGludCBlbmRUYXJnZXQsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBy
ZXBsYWNlbWVudFN0cmluZywKLSAgICAgICAgLyogW2luXSAqLyBpbnQgaW5kZXgpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWxlY3RlZFJhbmdlKCAKLSAg
ICAgICAgLyogW291dF0gKi8gaW50ICpzdGFydCwKLSAgICAgICAgLyogW291dF0gKi8gaW50ICpl
bmQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdXRv
ZmlsbGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGZpbGxlZCk7Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNBdXRvZmlsbGVkKAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlY3RPblNjcmVlbihfT3V0XyBMUFJFQ1QpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2UoaW50IHN0YXJ0VGFy
Z2V0LCBpbnQgZW5kVGFyZ2V0LCBfSW5fIEJTVFIgcmVwbGFjZW1lbnRTdHJpbmcsIGludCBpbmRl
eCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVjdGVkUmFuZ2Uo
X091dF8gaW50KiBzdGFydCwgX091dF8gaW50KiBlbmQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRBdXRvZmlsbGVkKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpc0F1dG9maWxsZWQoX091dF8gQk9PTCopOwogICAgIAogICAg
IC8vIElGb3JtUHJvbXB0QWRkaXRpb25zCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlzVXNlckVkaXRlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAq
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNVc2VyRWRp
dGVkKF9PdXRfIEJPT0wqKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRWYWx1ZUZvclVzZXIoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFZhbHVlRm9yVXNlcihfSW5fIEJT
VFIpOwogfTsKIAogY2xhc3MgRE9NSFRNTFRleHRBcmVhRWxlbWVudCA6IHB1YmxpYyBET01IVE1M
RWxlbWVudCwgcHVibGljIElET01IVE1MVGV4dEFyZWFFbGVtZW50LCBwdWJsaWMgSUZvcm1Qcm9t
cHRBZGRpdGlvbnMKQEAgLTIwMzcsMzIxICsyMzQzLDM4NCBAQCBwdWJsaWM6CiAgICAgRE9NSFRN
TFRleHRBcmVhRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlKSA6IERPTUhUTUxFbGVtZW50KGUp
IHt9CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJl
ZigpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpBZGRSZWYoKTsgfQogICAgIHZpcnR1YWwgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01IVE1MRWxlbWVu
dDo6UmVsZWFzZSgpOyB9CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6dGhyb3dFeGNlcHRpb24oZXhj
ZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdz
WyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Y2FsbFdl
YlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
VkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6ZXZhbHVhdGVXZWJTY3Jp
cHQoc2NyaXB0LCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBu
YW1lKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJl
c2VudGF0aW9uKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdSZXBy
ZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9u
KHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAotICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5U
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
aW5kZXgsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNp
Z25lZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9u
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9uTWVz
c2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlw
dE1ldGhvZChfSW5fIEJTVFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJ
QU5UIGFyZ3NbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJn
cywgY0FyZ3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIgc2NyaXB0LCBfT3V0XyBW
QVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmV2
YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIg
bmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlV2ViU2Ny
aXB0S2V5KG5hbWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0cmlu
Z1JlcHJlc2VudGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpz
dHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5k
ZXgodW5zaWduZWQgaW5kZXgsIF9PdXRfIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdElu
ZGV4KGluZGV4LCB2YWwpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9Jbl8gQlNUUiBkZXNjcmlwdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsK
KyAgICB9CiAKICAgICAvLyBJRE9NTm9kZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBub2RlTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bm9kZU5hbWUocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVmFsdWUoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6Om5vZGVWYWx1ZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1
ZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50Ojpub2RlVHlwZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cGFyZW50
Tm9kZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNoaWxkTm9kZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlz
dCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNoaWxkTm9kZXMocmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxk
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
bGFzdENoaWxkKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnByZXZpb3VzU2libGlu
ZyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5leHRTaWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJl
c3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZXMocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50KCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50Ojpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKLSAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqbmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNo
aWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBs
YWNlQ2hpbGQoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKLSAgICAg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZXBsYWNl
Q2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUNoaWxkKCAKLSAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVDaGlsZChvbGRDaGls
ZCwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBhcHBlbmRDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hpbGROb2RlcyggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBk
ZWVwLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2b2lkKSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6bm9ybWFsaXplKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgZmVhdHVyZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZlcnNpb24sCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVu
dDo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHByZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAq
cmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cHJlZml4KHJlc3VsdCk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHByZWZpeCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFBy
ZWZpeChwcmVmaXgpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGxvY2FsTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6aGFzQXR0cmlidXRlcyhyZXN1bHQpOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUq
IG90aGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAotICAgICAg
ICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppc0VxdWFsTm9kZShvdGhl
ciwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0ZXh0Q29udGVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0
VGV4dENvbnRlbnQodGV4dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgbm9kZU5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6bm9kZU5hbWUocmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZShfX2RlcmVmX29w
dF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
Ojpub2RlVmFsdWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZShfSW5fIEJTVFIgdmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZShfT3V0
XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50Ojpub2RlVHlwZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZShfQ09NX091dHB0cl9vcHRfIElET01Ob2Rl
KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwYXJlbnRO
b2RlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjaGlsZE5vZGVzKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVMaXN0KiogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjaGlsZE5vZGVzKHJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBm
aXJzdENoaWxkKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmZpcnN0Q2hpbGQocmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZChfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpsYXN0Q2hpbGQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyhfQ09NX091dHB0cl9v
cHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8gSURP
TU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5l
eHRTaWJsaW5nKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKF9DT01fT3V0cHRyX29wdF8gSURPTU5hbWVkTm9kZU1h
cCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6YXR0cmli
dXRlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgb3duZXJEb2N1bWVudChfQ09NX091dHB0cl9vcHRfIElET01Eb2N1bWVudCoqIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6b3duZXJEb2N1bWVu
dChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaW5zZXJ0QmVmb3JlKF9Jbl9vcHRfIElET01Ob2RlKiBuZXdDaGlsZCwgX0luX29wdF8g
SURPTU5vZGUgKnJlZkNoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KSAK
KyAgICB7IAorICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omluc2VydEJlZm9yZShuZXdD
aGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoX0luX29wdF8gSURPTU5vZGUqIG5ld0No
aWxkLCBfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5v
ZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlcGxh
Y2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZChfSW5fb3B0XyBJRE9N
Tm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQpIAorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVDaGlsZChvbGRDaGlsZCwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGFwcGVuZENoaWxkKF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGlsZCwgX0NPTV9PdXRwdHJf
b3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVzKF9PdXRfIEJPT0wq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQ2hpbGRO
b2RlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2xvbmVOb2RlKEJPT0wgZGVlcCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Y2xvbmVOb2Rl
KGRlZXAsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBub3JtYWxpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojpub3JtYWxpemUoKTsgCisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZChfSW5fIEJTVFIgZmVhdHVyZSwgX0luXyBCU1RSIHZl
cnNpb24sIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1M
RWxlbWVudDo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSShf
X2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpuYW1lc3BhY2VVUkkocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeChfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpwcmVmaXgocmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFByZWZpeChfSW5fIEJTVFIgcHJlZml4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpzZXRQcmVmaXgocHJlZml4KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpsb2NhbE5hbWUo
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhhc0F0dHJpYnV0ZXMoX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQorCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoX0luX29wdF8gSURP
TU5vZGUqIG90aGVyLCBfT3V0XyAgQk9PTCogcmVzdWx0KQorICAgIHsgCisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0KTsgCisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZShfSW5f
b3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7IAorICAgICAg
ICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlzRXF1YWxOb2RlKG90aGVyLCByZXN1bHQpOyAKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRleHRDb250
ZW50KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnRleHRDb250ZW50KHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudChfSW5fIEJTVFIg
dGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0VGV4dENvbnRl
bnQodGV4dCk7CisgICAgfQogICAgIAogICAgIC8vIElET01FbGVtZW50Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhZ05hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnRhZ05hbWUocmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRB
dHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRB
dHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01IVE1MRWxlbWVu
dDo6c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShuYW1l
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRy
aWJ1dGVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpnZXRBdHRyaWJ1dGVOb2RlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSURPTUF0dHIgKm5ld0F0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2Rl
KG5ld0F0dHIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUF0
dHIgKm9sZEF0dHIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1
bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZEF0dHIs
IHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lLCByZXN1bHQpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5T
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBu
YW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWROYW1lLAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRB
dHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlKTsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOUygg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBsb2NhbE5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9kZU5TKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFt
ZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAqKnJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRBdHRyaWJ1dGVOb2RlTlMoIAotICAgICAgICAvKiBbaW5dICovIElET01BdHRyICpu
ZXdBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKG5ld0F0dHIsIHJlc3Vs
dCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxl
bWVudHNCeVRhZ05hbWVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkks
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6
Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0KTsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1
dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpoYXNBdHRyaWJ1
dGUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBoYXNBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3Bh
Y2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aGFz
QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb2N1cyggdm9pZCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OmZvY3VzKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYmx1ciggdm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmJsdXIoKTsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWdOYW1lKF9fZGVyZWZf
b3B0X291dCBCU1RSKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50Ojp0YWdOYW1lKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9fZGVyZWZfb3B0
X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lLCBfSW5f
ICBCU1RSIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlKF9Jbl8gQlNUUiBuYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUobmFtZSk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRy
aWJ1dGVOb2RlKF9Jbl8gQlNUUiBuYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVO
b2RlKG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOb2RlKF9Jbl9vcHRfIElET01BdHRyKiBuZXdBdHRy
LCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKG5ld0F0dHIsIHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVB
dHRyaWJ1dGVOb2RlKF9Jbl9vcHRfIElET01BdHRyKiBvbGRBdHRyLCBfQ09NX091dHB0cl9vcHRf
IElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZEF0dHIsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50c0J5VGFnTmFtZShf
SW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpIAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFt
ZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBC
U1RSIGxvY2FsTmFtZSwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBs
b2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5f
IEJTVFIgcXVhbGlmaWVkTmFtZSwgX0luXyBCU1RSIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmll
ZE5hbWUsIHZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9Jbl8g
QlNUUiBsb2NhbE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKKyAgICB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5vZGVOUyhf
SW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBfQ09NX091dHB0cl9v
cHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRB
dHRyaWJ1dGVOb2RlTlMoX0luX29wdF8gSURPTUF0dHIgKm5ld0F0dHIsIF9DT01fT3V0cHRyX29w
dF8gSURPTUF0dHIqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyhuZXdBdHRyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9jYWxOYW1lLCBfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3VsdCkgCisgICAgeworICAgICAgICByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBoYXNBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9PdXRfIEJPT0wqIHJlc3VsdCkg
CisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZShuYW1l
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaGFzQXR0cmlidXRlTlMoX0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxv
Y2FsTmFtZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpoYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgcmVzdWx0
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpmb2N1cygpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmx1cigpIAorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpibHVyKCk7CisgICAgfQogCiAgICAg
Ly8gSURPTUhUTUxFbGVtZW50Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGlkTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6aWROYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SWROYW1lKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIGlkTmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElkTmFtZShpZE5hbWUp
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRpdGxlKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50Ojp0aXRsZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFRpdGxlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxl
KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0VGl0bGUodGl0bGUpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhbmcoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omxhbmco
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRMYW5nKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxhbmcpIHsgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpzZXRMYW5nKGxhbmcpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpciggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6ZGlyKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlyKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGRpcikgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldERpcihkaXIpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsYXNzTmFtZSggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6Y2xhc3NOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2xhc3NOYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IGNsYXNzTmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldENsYXNzTmFtZShjbGFzc05h
bWUpOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5uZXJIVE1M
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50Ojppbm5lckhUTUwocmVzdWx0KTsgfQotICAgICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJIVE1MKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGh0bWwpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoaHRt
bCk7IH0KLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlu
bmVyVGV4dCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJl
dHVybiBET01IVE1MRWxlbWVudDo6aW5uZXJUZXh0KHJlc3VsdCk7IH0KLSAgICAgICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldElubmVyVGV4dCggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJU
ZXh0KHRleHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlkTmFt
ZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjppZE5hbWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldElkTmFtZShfSW5fIEJTVFIgaWROYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJZE5hbWUoaWROYW1lKTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRpdGxlKF9f
ZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnRpdGxlKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUaXRsZShfSW5fIEJTVFIgdGl0bGUpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFRpdGxlKHRpdGxlKTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhbmcoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6
bGFuZyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0TGFuZyhfSW5fIEJTVFIgbGFuZykKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01IVE1MRWxlbWVudDo6c2V0TGFuZyhsYW5nKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpcihfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpkaXIocmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERpcihf
SW5fIEJTVFIgZGlyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRE
aXIoZGlyKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNsYXNzTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjbGFzc05hbWUocmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENsYXNzTmFtZShfSW5f
IEJTVFIgY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpz
ZXRDbGFzc05hbWUoY2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgaW5uZXJIVE1MKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlubmVySFRNTChyZXN1bHQpOwor
ICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dElubmVySFRNTChfSW5fIEJTVFIgaHRtbCkgCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnNldElubmVySFRNTChodG1sKTsKKyAgICB9CisgICAgICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbm5lclRleHQoX19kZXJlZl9vcHRfb3V0IEJT
VFIqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aW5uZXJU
ZXh0KHJlc3VsdCk7CisgICAgfQorICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0SW5uZXJUZXh0KF9Jbl8gQlNUUiB0ZXh0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQodGV4dCk7CisgICAgfQogCiAgICAg
Ly8gSURPTUhUTUxUZXh0QXJlYQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkZWZhdWx0VmFsdWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERlZmF1
bHRWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWwpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb3JtKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NSFRNTEVsZW1lbnQgKipyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhY2Nlc3NLZXkoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEFjY2Vzc0tleSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBrZXkpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb2xzKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENvbHMoIAotICAgICAgICAvKiBbaW5dICovIGlu
dCBjb2xzKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlz
YWJsZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERpc2FibGVkKCAKLSAg
ICAgICAgLyogW2luXSAqLyBCT09MIGRpc2FibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiAqbmFtZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldE5hbWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlYWRPbmx5KCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRSZWFkT25seSggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBy
ZWFkT25seSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJv
d3MoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqcmVzdWx0KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Um93cyggCi0gICAgICAgIC8q
IFtpbl0gKi8gaW50IHJvd3MpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB0YWJJbmRleCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50ICpyZXN1
bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUYWJJ
bmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IHRhYkluZGV4KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHlwZSggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgdmFsdWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJl
c3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFZh
bHVlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKTsKLSAgICAgICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVjdCggdm9pZCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRWYWx1ZShfX2RlcmVmX29wdF9vdXQg
QlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZhdWx0
VmFsdWUoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Zm9ybShfQ09NX091dHB0cl9vcHRfIElET01IVE1MRWxlbWVudCoqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWNjZXNzS2V5KF9fZGVyZWZfb3B0X291dCBCU1RSKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFjY2Vzc0tleShfSW5f
IEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb2xzKF9PdXRf
IGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb2xzKGlu
dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpc2FibGVkKF9PdXRf
IEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlzYWJs
ZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWUoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0TmFtZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZWFkT25seShfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFJlYWRPbmx5KEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByb3dzKF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRSb3dzKGludCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHRhYkluZGV4KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRUYWJJbmRleChpbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0eXBlKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHZhbHVlKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFZhbHVlKF9Jbl8gQlNUUik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVjdCgpOwogCiAgICAgLy8g
SUZvcm1Qcm9tcHRBZGRpdGlvbnMKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNVc2VyRWRpdGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1
bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1VzZXJFZGl0ZWQo
X091dF8gQk9PTCopOwogfTsKIAogY2xhc3MgRE9NSFRNTElGcmFtZUVsZW1lbnQgOiBwdWJsaWMg
RE9NSFRNTEVsZW1lbnQsIHB1YmxpYyBJRE9NSFRNTElGcmFtZUVsZW1lbnQKQEAgLTIzNjIsMjU4
ICsyNzMxLDM2MCBAQCBwdWJsaWM6CiAgICAgRE9NSFRNTElGcmFtZUVsZW1lbnQoV2ViQ29yZTo6
RWxlbWVudCogZSkgOiBET01IVE1MRWxlbWVudChlKSB7fQogCiAgICAgLy8gSVVua25vd24KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlE
IHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpBZGRSZWYoKTsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSB7IHJldHVybiBET01IVE1MRWxlbWVu
dDo6QWRkUmVmKCk7IH0KICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVh
c2Uodm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8g
SVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
aHJvd0V4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdl
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9N
SFRNTEVsZW1lbnQ6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlw
dE1ldGhvZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbc2l6
ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCi0gICAgICAgIC8qIFtpbl0gKi8g
aW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkg
eyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywg
Y0FyZ3MsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRL
ZXkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbiggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFs
dWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJ
bmRleCggCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAv
KiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0V2ViU2Ny
aXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEV4Y2VwdGlvbihkZXNj
cmlwdGlvbik7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dF
eGNlcHRpb24oX0luXyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6dGhyb3dFeGNlcHRpb24oZXhj
ZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoX0luXyBCU1RSIG5hbWUsIF9f
aW5fZWNvdW50X29wdChjQXJncykgY29uc3QgVkFSSUFOVCBhcmdzW10sIGludCBjQXJncywgX091
dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJT
Y3JpcHQoX0luXyBCU1RSIHNjcmlwdCwgX091dF8gVkFSSUFOVCogcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVXZWJTY3JpcHRLZXkoX0luXyBCU1RSIG5hbWUpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0
aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5n
UmVwcmVzZW50YXRpb24pOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBfT3V0XyBW
QVJJQU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Ondl
YlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1
bnNpZ25lZCBpbmRleCwgVkFSSUFOVCB2YWwpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihf
SW5fIEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7CisgICAgfQogCiAgICAgLy8gSURPTU5vZGUK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6Om5vZGVOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbm9kZVZhbHVlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVmFsdWUocmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpzZXROb2RlVmFsdWUodmFsdWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIG5vZGVUeXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNp
Z25lZCBzaG9ydCAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6bm9kZVR5cGUocmVz
dWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJl
bnROb2RlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkg
eyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnBhcmVudE5vZGUocmVzdWx0KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50OjpjaGlsZE5vZGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpmaXJzdENo
aWxkKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgbGFzdENoaWxkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJl
c3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omxhc3RDaGlsZChyZXN1bHQpOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZygg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsgfQotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0U2libGluZyggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpuZXh0U2libGluZyhyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01OYW1lZE5vZGVNYXAgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjphdHRy
aWJ1dGVzKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgb3duZXJEb2N1bWVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURv
Y3VtZW50ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6b3duZXJEb2N1bWVudChy
ZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlu
c2VydEJlZm9yZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0NoaWxkLAotICAg
ICAgICAvKiBbaW5dICovIElET01Ob2RlICpyZWZDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omluc2Vy
dEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9s
ZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwg
cmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZW1vdmVDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQoIAotICAgICAgICAv
KiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmFwcGVuZENoaWxk
KG9sZENoaWxkLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGhhc0NoaWxkTm9kZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0NoaWxkTm9kZXMocmVzdWx0
KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5v
ZGUoIAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmNsb25l
Tm9kZShkZWVwLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG5vcm1hbGl6ZSggdm9pZCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5vcm1h
bGl6ZSgpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlz
U3VwcG9ydGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGZlYXR1cmUsCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiB2ZXJzaW9uLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZl
cnNpb24sIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbmFtZXNwYWNlVVJJKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpuYW1lc3BhY2VVUkkocmVzdWx0KTsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmVmaXgoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OnByZWZpeChyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFByZWZpeCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgp
IHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRQcmVmaXgocHJlZml4KTsgfQotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OmxvY2FsTmFtZShyZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMocmVzdWx0
KTsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUo
IAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppc1NhbWVO
b2RlKG90aGVyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGlzRXF1YWxOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3Ro
ZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBE
T01IVE1MRWxlbWVudDo6aXNFcXVhbE5vZGUob3RoZXIsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dENvbnRlbnQoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnRleHRDb250ZW50KHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4
dCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFRleHRDb250ZW50KHRleHQpOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKF9fZGVyZWZfb3B0X291
dCBCU1RSKiByZXN1bHQpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpu
b2RlTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbm9kZVZhbHVlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpIAorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVmFsdWUocmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVW
YWx1ZShfSW5fIEJTVFIgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZShfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub2RlVHlwZShyZXN1bHQp
OyAKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBh
cmVudE5vZGUoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6cGFyZW50Tm9kZShyZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcyhfQ09N
X091dHB0cl9vcHRfIElET01Ob2RlTGlzdCoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6Y2hpbGROb2RlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZChfQ09NX091dHB0cl9v
cHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpmaXJzdENoaWxkKHJlc3VsdCk7IAorICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFzdENoaWxkKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUq
KiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omxhc3RDaGls
ZChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcHJldmlvdXNTaWJsaW5nKF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGUqKiByZXN1bHQp
CisgICAgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dFNp
YmxpbmcoX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6bmV4dFNpYmxpbmcocmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoX0NPTV9P
dXRwdHJfb3B0XyBJRE9NTmFtZWROb2RlTWFwKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIERPTUhUTUxFbGVtZW50OjphdHRyaWJ1dGVzKHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50KF9DT01fT3V0
cHRyX29wdF8gSURPTURvY3VtZW50KiogcmVzdWx0KSAKKyAgICB7CisgICAgICAgIHJldHVybiBE
T01IVE1MRWxlbWVudDo6b3duZXJEb2N1bWVudChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKF9Jbl9vcHRfIElE
T01Ob2RlKiBuZXdDaGlsZCwgX0luX29wdF8gSURPTU5vZGUgKnJlZkNoaWxkLCBfQ09NX091dHB0
cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyAKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGls
ZChfSW5fb3B0XyBJRE9NTm9kZSogbmV3Q2hpbGQsIF9Jbl9vcHRfIElET01Ob2RlKiBvbGRDaGls
ZCwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBET01IVE1MRWxlbWVudDo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVz
dWx0KTsgCisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVDaGlsZChfSW5fb3B0XyBJRE9NTm9kZSogb2xkQ2hpbGQsIF9DT01fT3V0cHRyX29w
dF8gSURPTU5vZGUqKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnJlbW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQoX0luX29wdF8gSURPTU5v
ZGUqIG9sZENoaWxkLCBfQ09NX091dHB0cl9vcHRfIElET01Ob2RlKiogcmVzdWx0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVz
dWx0KTsgCisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYXNDaGlsZE5vZGVzKF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKEJPT0wgZGVlcCwg
X0NPTV9PdXRwdHJfb3B0XyBJRE9NTm9kZSoqIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBET01IVE1MRWxlbWVudDo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpub3JtYWxpemUoKTsKKyAgICB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKF9Jbl8g
QlNUUiBmZWF0dXJlLCBfSW5fIEJTVFIgdmVyc2lvbiwgX091dF8gQk9PTCogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppc1N1cHBvcnRlZChmZWF0dXJlLCB2
ZXJzaW9uLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Om5hbWVzcGFjZVVSSShyZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJl
Zml4KF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OnByZWZpeChyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KF9Jbl8gQlNUUiBwcmVmaXgpCisg
ICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldFByZWZpeChwcmVmaXgpOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxO
YW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OmxvY2FsTmFtZShyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyhfT3V0XyBCT09MKiBy
ZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0
ZXMocmVzdWx0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNTYW1lTm9kZShfSW5fb3B0XyBJRE9NTm9kZSogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aXNTYW1lTm9kZShvdGhl
ciwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlzRXF1YWxOb2RlKF9Jbl9vcHRfIElET01Ob2RlKiBvdGhlciwgX091dF8gQk9PTCog
cmVzdWx0KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aXNFcXVhbE5v
ZGUob3RoZXIsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0ZXh0Q29udGVudChyZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
VGV4dENvbnRlbnQoX0luXyBCU1RSIHRleHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRN
TEVsZW1lbnQ6OnNldFRleHRDb250ZW50KHRleHQpOworICAgIH0KICAgICAKICAgICAvLyBJRE9N
RWxlbWVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWdOYW1lKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUhU
TUxFbGVtZW50Ojp0YWdOYW1lKHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVy
biBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkg
eyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRl
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpyZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBuYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7
IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZShuYW1lLCByZXN1bHQpOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0
ZU5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElET01BdHRyICpuZXdBdHRyLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxl
bWVudDo6c2V0QXR0cmlidXRlTm9kZShuZXdBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoIAotICAg
ICAgICAvKiBbaW5dICovIElET01BdHRyICpvbGRBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01BdHRyICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3Zl
QXR0cmlidXRlTm9kZShvbGRBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lKCAKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVM
aXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05h
bWUobmFtZSwgcmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBnZXRBdHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3Bh
Y2VVUkksCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0
QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgcXVhbGlmaWVkTmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVy
biBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWRO
YW1lLCB2YWx1ZSk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcmVtb3ZlQXR0cmlidXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNl
VVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lKSB7IHJldHVybiBET01IVE1M
RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5v
ZGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUF0dHIgKipyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2Rl
TlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZU5TKCAKLSAgICAgICAg
LyogW2luXSAqLyBJRE9NQXR0ciAqbmV3QXR0ciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NQXR0ciAqKnJlc3VsdCkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldEF0dHJpYnV0
ZU5vZGVOUyhuZXdBdHRyLCByZXN1bHQpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1l
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6aGFzQXR0cmlidXRlKG5hbWUsIHJlc3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlTlMoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9j
YWxOYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1l
LCByZXN1bHQpOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9j
dXMoIHZvaWQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpmb2N1cygpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJsdXIoIHZvaWQpIHsgcmV0dXJuIERP
TUhUTUxFbGVtZW50OjpibHVyKCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGFnTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0YWdOYW1lKHJlc3VsdCk7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGUoX0luXyBC
U1RSIG5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeyAKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRBdHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0
ZShfSW5fIEJTVFIgbmFtZSwgX0luXyBCU1RSIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlKF9J
bl8gQlNUUiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpyZW1v
dmVBdHRyaWJ1dGUobmFtZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOb2RlKF9Jbl8gQlNUUiBuYW1lLCBfQ09NX091dHB0
cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxF
bGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOb2RlKF9Jbl9v
cHRfIElET01BdHRyICpuZXdBdHRyLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0
KSAKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9k
ZShuZXdBdHRyLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQXR0cmlidXRlTm9kZShfSW5fb3B0XyBJRE9NQXR0ciAqb2xk
QXR0ciwgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQXR0cioqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01IVE1MRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZShvbGRBdHRyLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8gSURP
TU5vZGVMaXN0KiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50
OjpnZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTlMoX0luXyBCU1RS
IG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvY2FsTmFtZSwgX19kZXJlZl9vcHRfb3V0IEJTVFIq
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmli
dXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOUyhfSW5fIEJT
VFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgcXVhbGlmaWVkTmFtZSwgX0luXyBCU1RSIHZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRBdHRyaWJ1dGVOUyhu
YW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5TKF9Jbl8gQlNU
UiBuYW1lc3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGdldEF0dHJpYnV0ZU5vZGVOUyhfSW5fIEJTVFIgbmFtZXNwYWNlVVJJLCBfSW5fIEJTVFIgbG9j
YWxOYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KQorICAgIHsgCisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTm9kZU5TKF9Jbl9vcHRfIElET01BdHRyICpu
ZXdBdHRyLCBfQ09NX091dHB0cl9vcHRfIElET01BdHRyKiogcmVzdWx0KSAKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKG5ld0F0dHIsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9Jbl8gQlNU
UiBsb2NhbE5hbWUsIF9DT01fT3V0cHRyX29wdF8gSURPTU5vZGVMaXN0KiogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCByZXN1bHQpOyAKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZShfSW5fIEJTVFIgbmFt
ZSwgX091dF8gQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpoYXNBdHRyaWJ1dGUobmFtZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZU5TKF9Jbl8gQlNUUiBuYW1l
c3BhY2VVUkksIF9Jbl8gQlNUUiBsb2NhbE5hbWUsIF9PdXRfIEJPT0wqIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6aGFzQXR0cmlidXRlTlMobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUsIHJlc3VsdCk7CisgICAgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGZvY3VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01IVE1MRWxl
bWVudDo6Zm9jdXMoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGJsdXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpi
bHVyKCk7CisgICAgfQogCiAgICAgLy8gSURPTUhUTUxFbGVtZW50Ci0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlkTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aWROYW1lKHJlc3VsdCk7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SWROYW1l
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGlkTmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnNldElkTmFtZShpZE5hbWUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRpdGxlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0aXRsZShyZXN1bHQpOyB9Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRpdGxlKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIHRpdGxlKSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0VGl0bGUo
dGl0bGUpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxh
bmcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4g
RE9NSFRNTEVsZW1lbnQ6OmxhbmcocmVzdWx0KTsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRMYW5nKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxh
bmcpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRMYW5nKGxhbmcpOyB9Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpciggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6ZGlyKHJl
c3VsdCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
RGlyKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGRpcikgeyByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OnNldERpcihkaXIpOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNsYXNzTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6Y2xhc3NOYW1lKHJlc3VsdCk7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2xhc3NOYW1lKCAKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIGNsYXNzTmFtZSkgeyByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6
OnNldENsYXNzTmFtZShjbGFzc05hbWUpOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaW5uZXJIVE1MKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojppbm5lckhUTUwocmVzdWx0KTsgfQot
ICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5uZXJI
VE1MKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGh0bWwpIHsgcmV0dXJuIERPTUhUTUxFbGVt
ZW50OjpzZXRJbm5lckhUTUwoaHRtbCk7IH0KLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlubmVyVGV4dCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01IVE1MRWxlbWVudDo6aW5uZXJUZXh0KHJlc3Vs
dCk7IH0KLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dElubmVyVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01I
VE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KHRleHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGlkTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjppZE5hbWUocmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldElkTmFtZShf
SW5fIEJTVFIgaWROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojpz
ZXRJZE5hbWUoaWROYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRpdGxlKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeyAK
KyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50Ojp0aXRsZShyZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGl0bGUoX0luXyBC
U1RSIHRpdGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRUaXRs
ZSh0aXRsZSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBsYW5nKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OmxhbmcocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExhbmcoX0luXyBCU1RSIGxhbmcpIAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRMYW5nKGxhbmcpOworICAg
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlyKF9fZGVy
ZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVs
ZW1lbnQ6OmRpcihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RGlyKF9Jbl8gQlNUUiBkaXIpCisgICAgeworICAgICAgICByZXR1
cm4gRE9NSFRNTEVsZW1lbnQ6OnNldERpcihkaXIpOyAKKyAgICB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsYXNzTmFtZShfX2RlcmVmX29wdF9vdXQgQlNU
UiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTUhUTUxFbGVtZW50OjpjbGFzc05h
bWUocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldENsYXNzTmFtZShfSW5fIEJTVFIgY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIERPTUhUTUxFbGVtZW50OjpzZXRDbGFzc05hbWUoY2xhc3NOYW1lKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5uZXJIVE1MKF9fZGVyZWZf
b3B0X291dCBCU1RSKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1l
bnQ6OmlubmVySFRNTChyZXN1bHQpOworICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldElubmVySFRNTChfSW5fIEJTVFIgaHRtbCkKKyAgICB7
CisgICAgICAgIHJldHVybiBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGh0bWwpOworICAg
IH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlubmVy
VGV4dChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQocmVzdWx0KTsKKyAgICB9CisgICAgICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbm5lclRleHQoX0luXyBCU1RS
IHRleHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4
dCh0ZXh0KTsgCisgICAgfQogCiAgICAgLy8gSURPTUhUTUxJRnJhbWVFbGVtZW50Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRlbnRGcmFtZSggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSVdlYkZyYW1lICoqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGVudEZyYW1lKF9DT01fT3V0cHRyX29wdF8gSVdlYkZy
YW1lKiopOwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVs
dERvd25sb2FkRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyAr
NDMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC8vIERlZmF1bHREb3dubG9hZERlbGVn
YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERl
bGVnYXRlKCkKLSAgICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKQEAgLTc1
LDkgKzc0LDExIEBAIERlZmF1bHREb3dubG9hZERlbGVnYXRlKiBEZWZhdWx0RG93bmxvYWQKIAog
Ly8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1
bHREb3dubG9hZERlbGVnYXRlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBw
dk9iamVjdCkKK0hSRVNVTFQgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAg
ICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChy
aWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVVu
a25vd24qPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkRv
d25sb2FkRGVsZWdhdGUpKQpAQCAtODksMTIgKzkwLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRGVmYXVsdERvd25sb2EKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkFkZFJlZigpCitVTE9ORyBEZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZTo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50
OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6
UmVsZWFzZSgpCitVTE9ORyBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6UmVsZWFzZSgpCiB7CiAg
ICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtMTAz
LDEwICsxMDQsMTMgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRAog
ICAgIHJldHVybiBuZXdSZWY7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVs
dERvd25sb2FkRGVsZWdhdGU6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KElXZWJEb3dubG9hZCAqZG93bmxvYWQsIEJTVFIgZmlsZW5hbWUpCitIUkVTVUxUIERlZmF1bHRE
b3dubG9hZERlbGVnYXRlOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShf
SW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5fIEJTVFIgZmlsZW5hbWUpCiB7CiAg
ICAgTE9HKERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSAlcyIsIGRvd25sb2FkLCBTdHJpbmcoZmlsZW5h
bWUsIFN5c1N0cmluZ0xlbihmaWxlbmFtZSkpLmFzY2lpKCkuZGF0YSgpKTsKIAorICAgIGlmICgh
ZG93bmxvYWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICBXQ0hBUiBwYXRoQ2hh
cnNbTUFYX1BBVEhdOwogICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoKDAsIENTSURMX0RF
U0tUT1BESVJFQ1RPUlkgIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIHBhdGhDaGFycykpKSB7
CiAgICAgICAgIGlmIChGQUlMRUQoZG93bmxvYWQtPnNldERlc3RpbmF0aW9uKGZpbGVuYW1lLCB0
cnVlKSkpIHsKQEAgLTEzOCw5MyArMTQyLDk4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RGVmYXVsdERvd25sb2EKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9Ci1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBJV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK0hSRVNVTFQgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6
OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJEb3dubG9hZCog
ZG93bmxvYWQsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxl
bmdlKQogewogICAgIExPRyhEb3dubG9hZCwgIkRlZmF1bHREb3dubG9hZERlbGVnYXRlICVwIC0g
ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgJXAiLCBkb3dubG9hZCwgY2hhbGxlbmdl
KTsKLSAgICBkb3dubG9hZCA9IDA7Ci0gICAgY2hhbGxlbmdlID0gMDsKKyAgICBkb3dubG9hZCA9
IG51bGxwdHI7CisgICAgY2hhbGxlbmdlID0gbnVsbHB0cjsKICAgICByZXR1cm4gU19PSzsKIH0K
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZENy
ZWF0ZURlc3RpbmF0aW9uKElXZWJEb3dubG9hZCogZG93bmxvYWQsIEJTVFIgZGVzdGluYXRpb24p
CitIUkVTVUxUIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRDcmVhdGVEZXN0aW5hdGlvbihf
SW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5fIEJTVFIgZGVzdGluYXRpb24pCiB7
CiAgICAgTE9HKERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRDcmVh
dGVEZXN0aW5hdGlvbiAlcyIsIGRvd25sb2FkLCBTdHJpbmcoZGVzdGluYXRpb24sIFN5c1N0cmlu
Z0xlbihkZXN0aW5hdGlvbikpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICBkb3dubG9hZCA9IDA7Ci0g
ICAgZGVzdGluYXRpb24gPSAwOworICAgIGRvd25sb2FkID0gbnVsbHB0cjsKKyAgICBkZXN0aW5h
dGlvbiA9IG51bGxwdHI7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBJV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIGNoYWxsZW5nZSkKK0hSRVNVTFQgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRv
d25sb2FkLCBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5n
ZSkKIHsKICAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAlcCIsIGRvd25sb2FkLCBjaGFsbGVuZ2Up
OwotICAgIGRvd25sb2FkID0gMDsKLSAgICBjaGFsbGVuZ2UgPSAwOworICAgIGRvd25sb2FkID0g
bnVsbHB0cjsKKyAgICBjaGFsbGVuZ2UgPSBudWxscHRyOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRS
ZWNlaXZlRGF0YU9mTGVuZ3RoKElXZWJEb3dubG9hZCogZG93bmxvYWQsIHVuc2lnbmVkIGxlbmd0
aCkKK0hSRVNVTFQgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhT2ZMZW5n
dGgoX0luX29wdF8gSVdlYkRvd25sb2FkKiBkb3dubG9hZCwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIExPRyhEb3dubG9hZCwgIkRlZmF1bHREb3dubG9hZERlbGVnYXRlICVwIC0gZGlkUmVjZWl2
ZURhdGFPZkxlbmd0aCAlaSIsIGRvd25sb2FkLCBsZW5ndGgpOwotICAgIGRvd25sb2FkID0gMDsK
KyAgICBkb3dubG9hZCA9IG51bGxwdHI7CiAgICAgbGVuZ3RoID0gMDsKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKElXZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJVUkxSZXNw
b25zZSogcmVzcG9uc2UpCitIUkVTVUxUIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRSZWNl
aXZlUmVzcG9uc2UoX0luX29wdF8gSVdlYkRvd25sb2FkKiBkb3dubG9hZCwgX0luX29wdF8gSVdl
YlVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZFJlY2VpdmVSZXNwb25zZSAlcCIsIGRvd25sb2FkLCByZXNw
b25zZSk7Ci0gICAgZG93bmxvYWQgPSAwOworICAgIGRvd25sb2FkID0gbnVsbHB0cjsKICAgICBy
ZXNwb25zZSA9IDA7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1J
TUVUeXBlKElXZWJEb3dubG9hZCogZG93bmxvYWQsIEJTVFIgZW5jb2RpbmdUeXBlLCBCT09MKiBz
aG91bGREZWNvZGUpCitIUkVTVUxUIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaG91bGREZWNv
ZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBf
SW5fIEJTVFIgZW5jb2RpbmdUeXBlLCBfT3V0XyBCT09MKiBzaG91bGREZWNvZGUpCiB7CiAgICAg
TE9HKERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBzaG91bGREZWNvZGVT
b3VyY2VEYXRhT2ZNSU1FVHlwZSAlcyIsIGRvd25sb2FkLCBTdHJpbmcoZW5jb2RpbmdUeXBlLCBT
eXNTdHJpbmdMZW4oZW5jb2RpbmdUeXBlKSkuYXNjaWkoKS5kYXRhKCkpOwotICAgIGRvd25sb2Fk
ID0gMDsKLSAgICBlbmNvZGluZ1R5cGUgPSAwOworICAgIGlmICghc2hvdWxkRGVjb2RlKQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgIGRvd25sb2FkID0gbnVsbHB0cjsKKyAgICBlbmNv
ZGluZ1R5cGUgPSBudWxscHRyOwogICAgICpzaG91bGREZWNvZGUgPSBmYWxzZTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZTo6d2lsbFJlc3VtZVdpdGhSZXNwb25zZShJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBJ
V2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBsb25nIGxvbmcgZnJvbUJ5dGUpCitIUkVTVUxUIERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjp3aWxsUmVzdW1lV2l0aFJlc3BvbnNlKF9Jbl9vcHRfIElX
ZWJEb3dubG9hZCogZG93bmxvYWQsIF9Jbl9vcHRfIElXZWJVUkxSZXNwb25zZSogcmVzcG9uc2Us
IGxvbmcgbG9uZyBmcm9tQnl0ZSkKIHsKICAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZSAlcCAtIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2UgJXAsICVxIiwgZG93bmxvYWQs
IHJlc3BvbnNlLCBmcm9tQnl0ZSk7Ci0gICAgZG93bmxvYWQgPSAwOwotICAgIHJlc3BvbnNlID0g
MDsKKyAgICBkb3dubG9hZCA9IG51bGxwdHI7CisgICAgcmVzcG9uc2UgPSBudWxscHRyOwogICAg
IGZyb21CeXRlID0gMDsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KElXZWJEb3du
bG9hZCogZG93bmxvYWQsIElXZWJNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVzdCwgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJV2ViVVJMUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UsIElXZWJNdXRhYmxlVVJMUmVxdWVz
dCoqIGZpbmFsUmVxdWVzdCkKK0hSRVNVTFQgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OndpbGxT
ZW5kUmVxdWVzdChfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5fb3B0XyBJV2Vi
TXV0YWJsZVVSTFJlcXVlc3QqIHJlcXVlc3QsCisgICAgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNl
KiByZWRpcmVjdFJlc3BvbnNlLCBfQ09NX091dHB0cl9vcHRfIElXZWJNdXRhYmxlVVJMUmVxdWVz
dCoqIGZpbmFsUmVxdWVzdCkKIHsKICAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZSAlcCAtIHdpbGxTZW5kUmVxdWVzdCAlcCAlcCIsIGRvd25sb2FkLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKTsKLSAgICBkb3dubG9hZCA9IDA7Ci0gICAgcmVkaXJlY3RSZXNwb25z
ZSA9IDA7CisgICAgaWYgKCFmaW5hbFJlcXVlc3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisKKyAgICBkb3dubG9hZCA9IG51bGxwdHI7CisgICAgcmVkaXJlY3RSZXNwb25zZSA9IG51bGxw
dHI7CiAgICAgKmZpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgKCpmaW5hbFJlcXVlc3QpLT5B
ZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkQmVnaW4oSVdlYkRvd25sb2FkKiBkb3dubG9h
ZCkKK0hSRVNVTFQgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZEJlZ2luKF9Jbl9vcHRfIElX
ZWJEb3dubG9hZCogZG93bmxvYWQpCiB7CiAgICAgTE9HKERvd25sb2FkLCAiRGVmYXVsdERvd25s
b2FkRGVsZWdhdGUgJXAgLSBkaWRCZWdpbiIsIGRvd25sb2FkKTsKICAgICByZWdpc3RlckRvd25s
b2FkKGRvd25sb2FkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoKElXZWJEb3dubG9hZCog
ZG93bmxvYWQpCitIUkVTVUxUIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRGaW5pc2goX0lu
X29wdF8gSVdlYkRvd25sb2FkKiBkb3dubG9hZCkKIHsKICAgICBMT0coRG93bmxvYWQsICJEZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZEZpbmlzaCIsIGRvd25sb2FkKTsKICAgICB1bnJl
Z2lzdGVyRG93bmxvYWQoZG93bmxvYWQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRGYWlsV2l0aEVy
cm9yKElXZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJFcnJvciogZXJyb3IpCitIUkVTVUxUIERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRGYWlsV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJEb3du
bG9hZCogZG93bmxvYWQsIF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IpCiB7CiAgICAgTE9HKERv
d25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRGYWlsV2l0aEVycm9yICVw
IiwgZG93bmxvYWQsIGVycm9yKTsKICAgICB1bnJlZ2lzdGVyRG93bmxvYWQoZG93bmxvYWQpOwot
ICAgIGVycm9yID0gMDsKKyAgICBlcnJvciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuaAko
cmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwyOSArNDIsMjkgQEAgcHJpdmF0ZToKICAgICB+
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKTsKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQg
cmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBS
ZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJE
b3dubG9hZERlbGVnYXRlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKElXZWJEb3dubG9hZCAqZG93bmxv
YWQsIEJTVFIgZmlsZW5hbWUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJV2ViRG93bmxvYWQqIGRvd25sb2Fk
LCAgSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDcmVhdGVEZXN0aW5hdGlvbihJV2ViRG93
bmxvYWQqIGRvd25sb2FkLCAgQlNUUiBkZXN0aW5hdGlvbik7Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGRpZEZhaWxXaXRoRXJyb3IoSVdlYkRvd25sb2FkKiBkb3dubG9h
ZCwgIElXZWJFcnJvciogZXJyb3IpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYkRvd25sb2FkKiBkb3du
bG9hZCwgIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChJ
V2ViRG93bmxvYWQqIGRvd25sb2FkLCAgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVJlc3BvbnNlKElXZWJEb3dubG9hZCog
ZG93bmxvYWQsICBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlKTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoSVdl
YkRvd25sb2FkKiBkb3dubG9hZCwgIEJTVFIgZW5jb2RpbmdUeXBlLCBCT09MKiBzaG91bGREZWNv
ZGUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUmVzdW1lV2l0
aFJlc3BvbnNlKElXZWJEb3dubG9hZCogZG93bmxvYWQsICBJV2ViVVJMUmVzcG9uc2UqIHJlc3Bv
bnNlLCAgbG9uZyBsb25nIGZyb21CeXRlKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgd2lsbFNlbmRSZXF1ZXN0KElXZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJNdXRh
YmxlVVJMUmVxdWVzdCogcmVxdWVzdCwgIElXZWJVUkxSZXNwb25zZSogcmVkaXJlY3RSZXNwb25z
ZSwgSVdlYk11dGFibGVVUkxSZXF1ZXN0KiogZmluYWxSZXF1ZXN0KTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQmVnaW4oSVdlYkRvd25sb2FkKiBkb3dubG9hZCk7
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpbmlzaChJV2ViRG93
bmxvYWQqIGRvd25sb2FkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoX0luX29wdF8gSVdlYkRvd25s
b2FkKiwgX0luXyBCU1RSIGZpbGVuYW1lKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYkRv
d25sb2FkKiwgX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENyZWF0ZURlc3RpbmF0aW9uKF9J
bl9vcHRfIElXZWJEb3dubG9hZCosIF9Jbl8gQlNUUiBkZXN0aW5hdGlvbik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZhaWxXaXRoRXJyb3IoX0luX29wdF8gSVdl
YkRvd25sb2FkKiwgX0luX29wdF8gSVdlYkVycm9yKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0
XyBJV2ViRG93bmxvYWQqLCBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZURhdGFP
Zkxlbmd0aChfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCAgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVJlc3BvbnNlKF9Jbl9v
cHRfIElXZWJEb3dubG9hZCosIF9Jbl9vcHRfIElXZWJVUkxSZXNwb25zZSopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCBfSW5fIEJTVFIgZW5jb2RpbmdUeXBlLCBfT3V0
XyBCT09MKiBzaG91bGREZWNvZGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlKF9Jbl9vcHRfIElXZWJEb3dubG9hZCosIF9Jbl9v
cHRfIElXZWJVUkxSZXNwb25zZSosIGxvbmcgbG9uZyBmcm9tQnl0ZSk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxTZW5kUmVxdWVzdChfSW5fb3B0XyBJV2ViRG93
bmxvYWQqLCBfSW5fb3B0XyBJV2ViTXV0YWJsZVVSTFJlcXVlc3QqLCBfSW5fb3B0XyBJV2ViVVJM
UmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UsIF9DT01fT3V0cHRyX29wdF8gSVdlYk11dGFibGVV
UkxSZXF1ZXN0KiogZmluYWxSZXF1ZXN0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkQmVnaW4oX0luX29wdF8gSVdlYkRvd25sb2FkKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpbmlzaChfSW5fb3B0XyBJV2ViRG93bmxvYWQq
KTsKIAogICAgIC8vIERlZmF1bHREb3dubG9hZERlbGVnYXRlCiAgICAgdm9pZCByZWdpc3RlckRv
d25sb2FkKElXZWJEb3dubG9hZCopOwogICAgIHZvaWQgdW5yZWdpc3RlckRvd25sb2FkKElXZWJE
b3dubG9hZCopOwogcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcg
bV9yZWZDb3VudCB7IDAgfTsKIAogICAgIEhhc2hTZXQ8SVdlYkRvd25sb2FkKj4gbV9kb3dubG9h
ZHM7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUu
Y3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0UG9saWN5
RGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDYgQEAgdHlwZWRlZiBlbnVt
IFdlYkV4dHJhTmF2aWdhdGlvblR5cGUgewogLy8gRGVmYXVsdFBvbGljeURlbGVnYXRlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQotICAg
IDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKQEAgLTcwLDkgKzY5LDExIEBAIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURlbGUKIAogLy8gSVVua25vd24gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHRQb2xpY3lEZWxlZ2F0
ZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxU
IERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7Cisg
ICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9i
amVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikp
CiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJVW5rbm93bio+KHRoaXMpOwogICAg
IGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViUG9saWN5RGVsZWdhdGUpKQpAQCAt
ODQsMTIgKzg1LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdFBvbGljeUQK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdFBv
bGljeURlbGVnYXRlOjpBZGRSZWYoKQorVUxPTkcgRGVmYXVsdFBvbGljeURlbGVnYXRlOjpBZGRS
ZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENB
TExUWVBFIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6UmVsZWFzZSgpCitVTE9ORyBEZWZhdWx0UG9s
aWN5RGVsZWdhdGU6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3Vu
dDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTk4LDggKzk5LDggQEAgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgRGVmYXVsdFBvbGljeURlbAogICAgIHJldHVybiBuZXdSZWY7CiB9CiAKLUhSRVNVTFQg
RGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKElX
ZWJWaWV3KiB3ZWJWaWV3LCBJUHJvcGVydHlCYWcqIGFjdGlvbkluZm9ybWF0aW9uLCAKLSAgICBJ
V2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYkZyYW1lKiAvKmZyYW1lKi8sIElXZWJQb2xpY3lE
ZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK0hSRVNVTFQgRGVmYXVsdFBvbGljeURlbGVnYXRl
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3KiB3ZWJW
aWV3LCBfSW5fb3B0XyBJUHJvcGVydHlCYWcqIGFjdGlvbkluZm9ybWF0aW9uLAorICAgIF9Jbl9v
cHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBfSW5fb3B0XyBJV2ViRnJhbWUqIC8qZnJhbWUq
LywgX0luX29wdF8gSVdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAg
IGludCBuYXZUeXBlID0gMDsKICAgICBfdmFyaWFudF90IHZhcjsKQEAgLTEyOCwyMyArMTI5LDE4
IEBAIEhSRVNVTFQgRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2wKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0UG9saWN5RGVsZWdh
dGU6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigKLSAgICAvKltpbl0qLyBJV2ViVmll
dyogLyp3ZWJWaWV3Ki8sIAotICAgIC8qW2luXSovIElQcm9wZXJ0eUJhZyogLyphY3Rpb25JbmZv
cm1hdGlvbiovLCAKLSAgICAvKltpbl0qLyBJV2ViVVJMUmVxdWVzdCogLypyZXF1ZXN0Ki8sIAot
ICAgIC8qW2luXSovIEJTVFIgLypmcmFtZU5hbWUqLywgCi0gICAgLypbaW5dKi8gSVdlYlBvbGlj
eURlY2lzaW9uTGlzdGVuZXIqIGxpc3RlbmVyKQorSFJFU1VMVCBEZWZhdWx0UG9saWN5RGVsZWdh
dGU6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihfSW5fb3B0XyBJV2ViVmlldyogLyp3
ZWJWaWV3Ki8sIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogLyphY3Rpb25JbmZvcm1hdGlvbiovLAor
ICAgIF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiAvKnJlcXVlc3QqLywgX0luXyBCU1RSIC8qZnJh
bWVOYW1lKi8sIF9Jbl9vcHRfIElXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcikK
IHsKKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAg
bGlzdGVuZXItPnVzZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUo
Ci0gICAgLypbaW5dKi8gSVdlYlZpZXcqIHdlYlZpZXcsIAotICAgIC8qW2luXSovIEJTVFIgdHlw
ZSwgCi0gICAgLypbaW5dKi8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIAotICAgIC8qW2luXSov
IElXZWJGcmFtZSogLypmcmFtZSovLCAKLSAgICAvKltpbl0qLyBJV2ViUG9saWN5RGVjaXNpb25M
aXN0ZW5lciogbGlzdGVuZXIpCitIUkVTVUxUIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6ZGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGUoX0luX29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIF9Jbl8gQlNUUiB0
eXBlLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwKKyAgICBfSW5fb3B0XyBJV2Vi
RnJhbWUqIC8qZnJhbWUqLywgX0luX29wdF8gSVdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIqIGxp
c3RlbmVyKQogewogICAgIEJPT0wgY2FuU2hvd01JTUVUeXBlOwogICAgIGlmIChGQUlMRUQod2Vi
Vmlldy0+Y2FuU2hvd01JTUVUeXBlKHR5cGUsICZjYW5TaG93TUlNRVR5cGUpKSkKQEAgLTE3Miwx
MSArMTY4LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdFBvbGljeUQKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0UG9s
aWN5RGVsZWdhdGU6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5V2l0aEVycm9yKAotICAgIC8qW2lu
XSovIElXZWJWaWV3KiAvKndlYlZpZXcqLywgCi0gICAgLypbaW5dKi8gSVdlYkVycm9yKiBlcnJv
ciwgCi0gICAgLypbaW5dKi8gSVdlYkZyYW1lKiBmcmFtZSkKK0hSRVNVTFQgRGVmYXVsdFBvbGlj
eURlbGVnYXRlOjp1bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcihfSW5fb3B0XyBJV2Vi
VmlldyogLyp3ZWJWaWV3Ki8sIF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IsIF9Jbl9vcHRfIElX
ZWJGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFlcnJvciB8fCAhZnJhbWUpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisKICAgICBCU3RyaW5nIGVycm9yU3RyOwogICAgIGVycm9yLT5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigmZXJyb3JTdHIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9E
ZWZhdWx0UG9saWN5RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9E
ZWZhdWx0UG9saWN5RGVsZWdhdGUuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktp
dC93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMzkgKzM3
LDI0IEBAIHByaXZhdGU6CiAgICAgfkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpOwogcHVibGljOgog
ICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZigpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFz
ZSgpOwogCiAgICAgLy8gSVdlYlBvbGljeURlbGVnYXRlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oIAotICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElQcm9w
ZXJ0eUJhZyAqYWN0aW9uSW5mb3JtYXRpb24sCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJl
cXVlc3QgKnJlcXVlc3QsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSwKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciAqbGlzdGVuZXIpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVByb3BlcnR5QmFnKiBh
Y3Rpb25JbmZvcm1hdGlvbiwKKyAgICAgICAgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqLCBfSW5f
b3B0XyBJV2ViRnJhbWUqLCBfSW5fb3B0XyBJV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciopOwog
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3
LAotICAgICAgICAvKiBbaW5dICovIElQcm9wZXJ0eUJhZyAqYWN0aW9uSW5mb3JtYXRpb24sCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QgKnJlcXVlc3QsCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBmcmFtZU5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlBvbGljeURlY2lz
aW9uTGlzdGVuZXIgKmxpc3RlbmVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3Kiwg
X0luX29wdF8gSVByb3BlcnR5QmFnKiBhY3Rpb25JbmZvcm1hdGlvbiwKKyAgICAgICAgX0luX29w
dF8gSVdlYlVSTFJlcXVlc3QqLCBfSW5fIEJTVFIgZnJhbWVOYW1lLCBfSW5fb3B0XyBJV2ViUG9s
aWN5RGVjaXNpb25MaXN0ZW5lciopOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0eXBlLAotICAgICAg
ICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0LAotICAgICAgICAvKiBbaW5dICov
IElXZWJGcmFtZSAqZnJhbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlBvbGljeURlY2lzaW9u
TGlzdGVuZXIgKmxpc3RlbmVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIg
dHlwZSwgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqLAorICAgICAgICBfSW5fb3B0XyBJV2ViRnJh
bWUqLCBfSW5fb3B0XyBJV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciopOwogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bmFibGVUb0ltcGxlbWVudFBvbGljeVdp
dGhFcnJvciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYkVycm9yICplcnJvciwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJh
bWUgKmZyYW1lKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3lXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJ
V2ViRXJyb3IqLCBfSW5fb3B0XyBJV2ViRnJhbWUqKTsKIAogcHJvdGVjdGVkOgotICAgIFVMT05H
IG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CiAKICNlbmRpZiAv
LyBEZWZhdWx0UG9saWN5RGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYktpdC93aW4vTWVtb3J5
U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1MywxMSBAQCBDT01QdHI8TWVtb3J5U3RyZWFt
PiBNZW1vcnlTdHJlYW06OmNyZWF0CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBNZW1vcnlTdHJlYW06OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBNZW1vcnlTdHJlYW06OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewot
ICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SVVua25vd24qPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVNl
cXVlbnRpYWxTdHJlYW0pKQpAQCAtNjksNyArNzEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIE1lbW9yeVN0cmVhbTo6CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1FVEhP
RENBTExUWVBFIE1lbW9yeVN0cmVhbTo6QWRkUmVmKHZvaWQpCitVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBNZW1vcnlTdHJlYW06OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9NZW1vcnlTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSAr
NDQsOSBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwg
dm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBB
ZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNl
KHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7Cisg
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElTZXF1ZW50aWFs
U3RyZWFtCiAgICAgdmlydHVhbCAvKiBbbG9jYWxdICovIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUmVhZCggCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcu
Y3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDggKzQwLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViQWN0aW9uUHJvcGVy
dHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0sIFBhc3NSZWZQdHI8RnJhbWU+IGZy
YW1lKQotICAgIDogbV9yZWZDb3VudCgwKQotICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgIDog
bV9hY3Rpb24oYWN0aW9uKQogICAgICwgbV9mb3JtKGZvcm0pCiAgICAgLCBtX2ZyYW1lKGZyYW1l
KQogewpAQCAtNjQsOSArNjMsMTEgQEAgV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblBy
b3BlcnR5QgogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViQWN0aW9uUHJvcGVydHlCYWc6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6UXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7
Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJUHJvcGVydHlCYWcqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJ
SURfSVByb3BlcnR5QmFnKSkKQEAgLTc4LDEyICs3OSwxMiBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkFjdGlvblByb3BlCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYkFjdGlvblByb3BlcnR5QmFnOjpBZGRSZWYoKQorVUxPTkcgV2ViQWN0
aW9uUHJvcGVydHlCYWc6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0K
IAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlbGVhc2Uo
KQorVUxPTkcgV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5l
d1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTEwMiw3ICsxMDMsNyBA
QCBzdGF0aWMgY29uc3QgTW91c2VFdmVudCogZmluZE1vdXNlRXZlbnQoCiAgICAgZm9yIChjb25z
dCBFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpCiAgICAgICAg
IGlmIChlLT5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBNb3VzZUV2ZW50Kj4oZSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIEhSRVNVTFQgV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlYWQoTFBDT0xFU1RSIHBzelBy
b3BOYW1lLCBWQVJJQU5UICpwVmFyLCBJRXJyb3JMb2cgKiAvKnBFcnJvckxvZyovKQpAQCAtMTYx
LDEwICsxNjIsMTAgQEAgSFJFU1VMVCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6UmVhZChMUENPTAog
ICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViQWN0aW9uUHJvcGVydHlCYWc6OldyaXRlKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFSSUFO
VCogcFZhcikKK0hSRVNVTFQgV2ViQWN0aW9uUHJvcGVydHlCYWc6OldyaXRlKF9Jbl8gTFBDT0xF
U1RSIHBzelByb3BOYW1lLCBfSW5fIFZBUklBTlQqIHBWYXIpCiB7CiAgICAgaWYgKCFwc3pQcm9w
TmFtZSB8fCAhcFZhcikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIHJldHVybiBF
X0ZBSUw7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkFjdGlvblByb3BlcnR5QmFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViQWN0aW9uUHJvcGVydHlCYWcuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MSwyMiArNDEsMTYgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCwg
dm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlELCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCk7CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKICAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElQcm9w
ZXJ0eUJhZwotICAgIHZpcnR1YWwgLyogW2xvY2FsXSAqLyBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFJlYWQoIAotICAgICAgICAvKiBbaW5dICovIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwKLSAg
ICAgICAgLyogW291dF1baW5dICovIFZBUklBTlQgKnBWYXIsCi0gICAgICAgIC8qIFtpbl0gKi8g
SUVycm9yTG9nICpwRXJyb3JMb2cpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV3JpdGUoIAotICAgICAgICAvKiBbaW5dICovIExQQ09MRVNUUiBwc3pQ
cm9wTmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UICpwVmFyKTsKKyAgICB2aXJ0dWFs
IC8qIFtsb2NhbF0gKi8gSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZWFkKC8qIFtpbl0gKi8g
TFBDT0xFU1RSIHBzelByb3BOYW1lLCAvKiBbb3V0XVtpbl0gKi8gVkFSSUFOVCosIC8qIFtpbl0g
Ki8gSUVycm9yTG9nKik7ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdyaXRlKF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1lLCBfSW5fIFZBUklBTlQqIHBWYXIpOwog
CiBwcml2YXRlOgotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uIG1fYWN0aW9uOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+IG1fZm9ybTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IG1fZnJhbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQXBwbGlj
YXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDkgKzY1LDExIEBAIFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBXZWJBcHAKIAogLy8gSVVua25vd24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1IUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNF
cXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYkFwcGxpY2F0aW9uQ2FjaGUqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFs
R1VJRChyaWlkLCBJSURfSVdlYkFwcGxpY2F0aW9uQ2FjaGUpKQpAQCAtNzksNyArODEsNyBAQCBI
UkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OlF1ZXJ5SW50ZXJmCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLVVMT05HIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OkFkZFJlZih2b2lkKQorVUxPTkcgV2Vi
QXBwbGljYXRpb25DYWNoZTo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50Owog
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24g
MTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIHByb3RlY3RlZDoKIAogcHVibGljOgogICAgIC8v
IElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2
b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFk
ZFJlZigpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwog
CiAgICAgLy8gSVdlYkFwcGxpY2F0aW9uQ2FjaGUKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbWF4aW11bVNpemUoLypbb3V0LCByZXR2YWxdKi8gbG9uZyBsb25nKik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDggKzUwLDcgQEAg
V2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3JlYXRlSW5zdGFuY2UoUAogfQogCiBXZWJBcmNoaXZl
OjpXZWJBcmNoaXZlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUpCi0g
ICAgOiBtX3JlZkNvdW50KDApCi0gICAgLCBtX2FyY2hpdmUoY29yZUFyY2hpdmUpCisgICAgOiBt
X2FyY2hpdmUoY29yZUFyY2hpdmUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKQEAgLTYzLDkgKzYyLDExIEBAIFdlYkFyY2hp
dmU6On5XZWJBcmNoaXZlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hp
dmUiKTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViQXJjaGl2
ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAg
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3Qg
PSBzdGF0aWNfY2FzdDxJV2ViQXJjaGl2ZSo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIF9fdXVpZG9mKElXZWJBcmNoaXZlKSkpCkBAIC03NywxMiArNzgsMTIgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpRdQogICAgIHJldHVybiBTX09LOwog
fQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpBZGRSZWYoKQorVUxPTkcg
V2ViQXJjaGl2ZTo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1V
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpSZWxlYXNlKCkKK1VMT05HIFdlYkFy
Y2hpdmU6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKICAg
ICBpZiAoIW5ld1JlZikKQEAgLTkxLDI0ICs5MiwxOSBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJBcmNoaXZlOjpSZWxlCiAgICAgcmV0dXJuIG5ld1JlZjsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjppbml0V2l0aE1haW5SZXNvdXJjZSgKLSAgICAgICAg
LyogW2luXSAqLyBJV2ViUmVzb3VyY2UqLCAKLSAgICAgICAgLyogW2luLCBzaXplX2lzKGNTdWJS
ZXNvdXJjZXMpXSAqLyBJV2ViUmVzb3VyY2UqKiwgCi0gICAgICAgIC8qIFtpbl0gKi8gaW50LCAK
LSAgICAgICAgLyogaW4sIHNpemVfaXMoY1N1YkZyYW1lQXJjaGl2ZXMpXSAqLyBJV2ViQXJjaGl2
ZSoqLCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQpCitIUkVTVUxUIFdlYkFyY2hpdmU6OmluaXRX
aXRoTWFpblJlc291cmNlKF9Jbl9vcHRfIElXZWJSZXNvdXJjZSosIAorICAgIF9faW5vdXRfZWNv
dW50X2Z1bGwoY1N1YlJlc291cmNlcykgSVdlYlJlc291cmNlKiosIGludCBjU3ViUmVzb3VyY2Vz
LAorICAgIF9faW5vdXRfZWNvdW50X2Z1bGwoY1N1YkZyYW1lQXJjaGl2ZXMpIElXZWJBcmNoaXZl
KiosIGludCBjU3ViRnJhbWVBcmNoaXZlcykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6OmluaXRXaXRoRGF0YSgKLSAg
ICAgICAgLyogW2luXSAqLyBJU3RyZWFtKikKK0hSRVNVTFQgV2ViQXJjaGl2ZTo6aW5pdFdpdGhE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6aW5pdFdpdGhOb2RlKAotICAgICAg
ICAvKiBbaW5dICovIElET01Ob2RlKiBub2RlKQorSFJFU1VMVCBXZWJBcmNoaXZlOjppbml0V2l0
aE5vZGUoX0luX29wdF8gSURPTU5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTIyLDI3ICsxMTgsMzYgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJBcmNoaXZlOjppbgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6Om1haW5SZXNvdXJjZSgKLSAgICAgICAgLyog
W291dCwgcmV0dmFsXSAqLyBJV2ViUmVzb3VyY2UqKikKK0hSRVNVTFQgV2ViQXJjaGl2ZTo6bWFp
blJlc291cmNlKF9DT01fT3V0cHRyX29wdF8gSVdlYlJlc291cmNlKiogcmVzdWx0KQogeworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBu
dWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViQXJjaGl2ZTo6c3ViUmVzb3VyY2VzKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxd
ICovIElFbnVtVkFSSUFOVCoqKQorSFJFU1VMVCBXZWJBcmNoaXZlOjpzdWJSZXNvdXJjZXMoX0NP
TV9PdXRwdHJfb3B0XyBJRW51bVZBUklBTlQqKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAg
cmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNo
aXZlOjpzdWJmcmFtZUFyY2hpdmVzKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIElFbnVt
VkFSSUFOVCoqKQorSFJFU1VMVCBXZWJBcmNoaXZlOjpzdWJmcmFtZUFyY2hpdmVzKF9DT01fT3V0
cHRyX29wdF8gSUVudW1WQVJJQU5UKiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVy
biBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6
ZGF0YSgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBJU3RyZWFtKiogc3RyZWFtKQorSFJF
U1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkK
IHsKKyAgICBpZiAoIXN0cmVhbSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgICpz
dHJlYW0gPSBudWxscHRyOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQXJjaGl2ZS5oCShyZXZpc2lvbiAxODg2
MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2
LDM4ICs0NiwyMyBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQg
cmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJl
ZigpOwogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCiAg
ICAgLy8gSVdlYkFyY2hpdmUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aW5pdFdpdGhNYWluUmVzb3VyY2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlJlc291cmNlKiBt
YWluUmVzb3VyY2UsIAotICAgICAgICAvKiBbaW4sIHNpemVfaXMoY1N1YlJlc291cmNlcyldICov
IElXZWJSZXNvdXJjZSoqIHN1YlJlc291cmNlcywgCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNT
dWJSZXNvdXJjZXMsIAotICAgICAgICAvKiBpbiwgc2l6ZV9pcyhjU3ViRnJhbWVBcmNoaXZlcyld
ICovIElXZWJBcmNoaXZlKiogc3ViRnJhbWVBcmNoaXZlcywgCi0gICAgICAgIC8qIFtpbl0gKi8g
aW50IGNTdWJGcmFtZUFyY2hpdmVzKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSAgaW5pdFdpdGhEYXRhKAotICAgICAgICAvKiBbaW5dICovIElTdHJlYW0qKTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAgaW5pdFdpdGhOb2RlKAotICAg
ICAgICAvKiBbaW5dICovIElET01Ob2RlKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgIG1haW5SZXNvdXJjZSgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBJ
V2ViUmVzb3VyY2UqKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
IHN1YlJlc291cmNlcygKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBJRW51bVZBUklBTlQq
Kik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgIHN1YmZyYW1lQXJj
aGl2ZXMoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSUVudW1WQVJJQU5UKiopOwotCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBkYXRhKAotICAgICAgICAvKiBb
b3V0LCByZXR2YWxdICovIElTdHJlYW0qKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGluaXRXaXRoTWFpblJlc291cmNlKF9Jbl9vcHRfIElXZWJSZXNvdXJjZSogbWFp
blJlc291cmNlLCAKKyAgICAgICAgX19pbm91dF9lY291bnRfZnVsbChjU3ViUmVzb3VyY2VzKSBJ
V2ViUmVzb3VyY2UqKiBzdWJSZXNvdXJjZXMsIGludCBjU3ViUmVzb3VyY2VzLCAKKyAgICAgICAg
X19pbm91dF9lY291bnRfZnVsbChjU3ViRnJhbWVBcmNoaXZlcykgSVdlYkFyY2hpdmUqKiBzdWJG
cmFtZUFyY2hpdmVzLCBpbnQgY1N1YkZyYW1lQXJjaGl2ZXMpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSAgaW5pdFdpdGhEYXRhKF9Jbl9vcHRfIElTdHJlYW0qKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgIGluaXRXaXRoTm9kZShfSW5fb3B0
XyBJRE9NTm9kZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAgbWFp
blJlc291cmNlKF9DT01fT3V0cHRyX29wdF8gSVdlYlJlc291cmNlKiopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAgc3ViUmVzb3VyY2VzKF9DT01fT3V0cHRyX29wdF8g
SUVudW1WQVJJQU5UKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAg
c3ViZnJhbWVBcmNoaXZlcyhfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFOVCoqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgIGRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJ
U3RyZWFtKiopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9O
RyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
PiBtX2FyY2hpdmU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw4ICs0OCw3IEBA
IHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2sKIH0KIAogV2ViQmFja0Zv
cndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+
IGJhY2tGb3J3YXJkTGlzdCkKLSAgICA6IG1fcmVmQ291bnQoMCkKLSAgICAsIG1fYmFja0Zvcndh
cmRMaXN0KGJhY2tGb3J3YXJkTGlzdCkKKyAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGJhY2tGb3J3
YXJkTGlzdCkKIHsKICAgICBBU1NFUlQoIWJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkuY29udGFp
bnMobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpKTsKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVy
cygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CkBAIC03MSw5ICs3MCw3IEBA
IFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgKIAogV2ViQmFja0Zvcndh
cmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8QmFj
a0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0
KiBpbnN0YW5jZTsKLQotICAgIGluc3RhbmNlID0gYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5n
ZXQoYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3QqIGluc3Rh
bmNlID0gYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5nZXQoYmFja0ZvcndhcmRMaXN0LmdldCgp
KTsKIAogICAgIGlmICghaW5zdGFuY2UpCiAgICAgICAgIGluc3RhbmNlID0gbmV3IFdlYkJhY2tG
b3J3YXJkTGlzdChiYWNrRm9yd2FyZExpc3QpOwpAQCAtODQsOSArODEsMTEgQEAgV2ViQmFja0Zv
cndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OgogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0OjpRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViQmFja0Zv
cndhcmRMaXN0OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9i
amVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0
cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBw
dk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJCYWNrRm9yd2FyZExpc3QqPih0aGlzKTsKICAgICBl
bHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkJhY2tGb3J3YXJkTGlzdCkpCkBAIC0x
MDAsMTIgKzk5LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmQK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0Zv
cndhcmRMaXN0OjpBZGRSZWYodm9pZCkKK1VMT05HIFdlYkJhY2tGb3J3YXJkTGlzdDo6QWRkUmVm
KCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYkJhY2tGb3J3
YXJkTGlzdDo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50Owog
ICAgIGlmICghbmV3UmVmKQpAQCAtMTE2LDggKzExNSw3IEBAIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIFdlYkJhY2tGb3J3YXJkTGkKIAogLy8gSVdlYkJhY2tGb3J3YXJkTGlzdCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oIAotICAgIC8q
IFtpbl0gKi8gSVdlYkhpc3RvcnlJdGVtKiBpdGVtKQorSFJFU1VMVCBXZWJCYWNrRm9yd2FyZExp
c3Q6OmFkZEl0ZW0oX0luX29wdF8gSVdlYkhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIENPTVB0
cjxXZWJIaXN0b3J5SXRlbT4gd2ViSGlzdG9yeUl0ZW07CiAgCkBAIC0xMjgsMjAgKzEyNiwxOSBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0Ojpn
b0JhY2soIHZvaWQpCitIUkVTVUxUIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKIHsKICAg
ICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29CYWNrKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQoIHZv
aWQpCitIUkVTVUxUIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29Gb3J3YXJkKCkKIHsKICAgICBtX2Jh
Y2tGb3J3YXJkTGlzdC0+Z29Gb3J3YXJkKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbSggCi0gICAg
LyogW2luXSAqLyBJV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pCitIUkVTVUxUIFdlYkJhY2tGb3J3YXJk
TGlzdDo6Z29Ub0l0ZW0oX0luX29wdF8gSVdlYkhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIENP
TVB0cjxXZWJIaXN0b3J5SXRlbT4gd2ViSGlzdG9yeUl0ZW07CiAgCkBAIC0xNTIsMTIgKzE0OSwx
MSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0
OjpiYWNrSXRlbSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSGlzdG9yeUl0ZW0qKiBp
dGVtKQorSFJFU1VMVCBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKF9DT01fT3V0cHRyX29w
dF8gSVdlYkhpc3RvcnlJdGVtKiogaXRlbSkKIHsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0KKyAgICAqaXRlbSA9IG51bGxwdHI7CiAgICAgSGlzdG9yeUl0ZW0q
IGhpc3RvcnlJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tJdGVtKCk7CiAKICAgICBpZiAo
IWhpc3RvcnlJdGVtKQpAQCAtMTY3LDE0ICsxNjMsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJCYWNrRm9yd2FyZAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSVdlYkhpc3RvcnlJdGVtKiogaXRlbSkKK0hSRVNVTFQgV2ViQmFja0Zv
cndhcmRMaXN0OjpjdXJyZW50SXRlbShfQ09NX091dHB0cl9vcHRfIElXZWJIaXN0b3J5SXRlbSoq
IGl0ZW0pCiB7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICppdGVtID0gbnVsbHB0cjsKIAogICAgIEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpOwotCiAgICAgaWYgKCFoaXN0b3J5SXRlbSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtMTgyLDE0ICsxNzcsMTMgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oIAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkhpc3RvcnlJdGVtKiogaXRlbSkKK0hSRVNVTFQg
V2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbShfQ09NX091dHB0cl9vcHRfIElXZWJIaXN0
b3J5SXRlbSoqIGl0ZW0pCiB7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworICAgICppdGVtID0gbnVsbHB0cjsKIAogICAgIEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRl
bSA9IG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkSXRlbSgpOwotCiAgICAgaWYgKCFoaXN0b3J5
SXRlbSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtMTk3LDQ5ICsxOTEsNTAgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZAogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xp
c3RXaXRoTGltaXQoIAotICAgIC8qIFtpbl0gKi8gaW50IGxpbWl0LAotICAgIC8qIFtvdXRdICov
IGludCogbGlzdENvdW50LAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkhpc3RvcnlJdGVt
KiogbGlzdCkKK0hSRVNVTFQgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChp
bnQgbGltaXQsIF9PdXRfIGludCogbGlzdENvdW50LAorICAgIF9fZGVyZWZfaW5vdXRfb3B0IElX
ZWJIaXN0b3J5SXRlbSoqIGxpc3QpCiB7CiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgaGlzdG9yeUl0
ZW1WZWN0b3I7CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0V2l0aExpbWl0KGxpbWl0
LCBoaXN0b3J5SXRlbVZlY3Rvcik7CiAKICAgICAqbGlzdENvdW50ID0gc3RhdGljX2Nhc3Q8aW50
PihoaXN0b3J5SXRlbVZlY3Rvci5zaXplKCkpOwogCi0gICAgaWYgKGxpc3QpCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBoaXN0b3J5SXRlbVZlY3Rvci5zaXplKCk7IGkrKykKLSAg
ICAgICAgICAgIGxpc3RbaV0gPSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9y
eUl0ZW1WZWN0b3JbaV0ucHRyKCkpOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIEVf
Tk9UX1NVRkZJQ0lFTlRfQlVGRkVSOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhp
c3RvcnlJdGVtVmVjdG9yLnNpemUoKTsgaSsrKQorICAgICAgICBsaXN0W2ldID0gV2ViSGlzdG9y
eUl0ZW06OmNyZWF0ZUluc3RhbmNlKGhpc3RvcnlJdGVtVmVjdG9yW2ldLnB0cigpKTsKIAogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3
YXJkTGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoIAotICAgIC8qIFtpbl0gKi8gaW50IGxpbWl0
LAotICAgIC8qIFtvdXRdICovIGludCogbGlzdENvdW50LAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYkhpc3RvcnlJdGVtKiogbGlzdCkKK0hSRVNVTFQgV2ViQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIF9PdXRfIGludCogbGlzdENvdW50LAorICAg
IF9fZGVyZWZfaW5vdXRfb3B0IElXZWJIaXN0b3J5SXRlbSoqIGxpc3QpCiB7CiAgICAgSGlzdG9y
eUl0ZW1WZWN0b3IgaGlzdG9yeUl0ZW1WZWN0b3I7CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmZv
cndhcmRMaXN0V2l0aExpbWl0KGxpbWl0LCBoaXN0b3J5SXRlbVZlY3Rvcik7CiAKICAgICAqbGlz
dENvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihoaXN0b3J5SXRlbVZlY3Rvci5zaXplKCkpOwogCi0g
ICAgaWYgKGxpc3QpCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBoaXN0b3J5SXRl
bVZlY3Rvci5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGxpc3RbaV0gPSBXZWJIaXN0b3J5SXRl
bTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW1WZWN0b3JbaV0ucHRyKCkpOworICAgIGlmICgh
bGlzdCkKKyAgICAgICAgcmV0dXJuIEVfTk9UX1NVRkZJQ0lFTlRfQlVGRkVSOworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBoaXN0b3J5SXRlbVZlY3Rvci5zaXplKCk7IGkrKykK
KyAgICAgICAgbGlzdFtpXSA9IFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZShoaXN0b3J5
SXRlbVZlY3RvcltpXS5wdHIoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmNhcGFjaXR5KCAKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KQorSFJFU1VMVCBXZWJCYWNrRm9yd2FyZExpc3Q6
OmNhcGFjaXR5KF9PdXRfIGludCogcmVzdWx0KQogewotICAgICpyZXN1bHQgPSAoaW50KW1fYmFj
a0ZvcndhcmRMaXN0LT5jYXBhY2l0eSgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworCisgICAgKnJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0LT5jYXBhY2l0
eSgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoIAotICAgIC8qIFtpbl0gKi8gaW50IHNpemUp
CitIUkVTVUxUIFdlYkJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoaW50IHNpemUpCiB7CiAg
ICAgaWYgKHNpemUgPCAwKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMjQ4LDI0ICsyNDMs
MjkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZAogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlz
dDo6YmFja0xpc3RDb3VudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIGNvdW50KQor
SFJFU1VMVCBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoX091dF8gaW50KiBjb3Vu
dCkKIHsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAg
KmNvdW50ID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6
OmZvcndhcmRMaXN0Q291bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBjb3VudCkK
K0hSRVNVTFQgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KF9PdXRfIGludCog
Y291bnQpCiB7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwog
ICAgICpjb3VudCA9IG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkTGlzdENvdW50KCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0Zvcndh
cmRMaXN0Ojpjb250YWluc0l0ZW0oIAotICAgIC8qIFtpbl0gKi8gSVdlYkhpc3RvcnlJdGVtKiBp
dGVtLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQorSFJFU1VMVCBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNvbnRhaW5zSXRlbShfSW5fb3B0XyBJV2ViSGlzdG9yeUl0ZW0qIGl0
ZW0sIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKwogICAgIENPTVB0cjxXZWJIaXN0b3J5SXRlbT4gd2ViSGlzdG9yeUl0
ZW07CiAKICAgICBpZiAoIWl0ZW0gfHwgRkFJTEVEKGl0ZW0tPlF1ZXJ5SW50ZXJmYWNlKCZ3ZWJI
aXN0b3J5SXRlbSkpKQpAQCAtMjc1LDE1ICsyNzUsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJCYWNrRm9yd2FyZAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoIAotICAgIC8qIFtp
bl0gKi8gaW50IGluZGV4LAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkhpc3RvcnlJdGVt
KiogaXRlbSkKK0hSRVNVTFQgV2ViQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleChpbnQgaW5k
ZXgsIF9DT01fT3V0cHRyX29wdF8gSVdlYkhpc3RvcnlJdGVtKiogaXRlbSkKIHsKICAgICBpZiAo
IWl0ZW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKml0ZW0gPSBudWxscHRyOwog
CiAgICAgSGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1B
dEluZGV4KGluZGV4KTsKLQogICAgIGlmICghaGlzdG9yeUl0ZW0pCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAgCkBAIC0yOTMsOCArMjkxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJCYWNrRm9yd2FyZAogCiAvLyBJV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbSggCi0gICAg
LyogW2luXSAqLyBJV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pCitIUkVTVUxUIFdlYkJhY2tGb3J3YXJk
TGlzdDo6cmVtb3ZlSXRlbShfSW5fb3B0XyBJV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAg
Q09NUHRyPFdlYkhpc3RvcnlJdGVtPiB3ZWJIaXN0b3J5SXRlbTsKICAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQ3LDY4ICs0NywzMiBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93
bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShS
RUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBw
dk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsK
KyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8v
IElXZWJCYWNrRm9yd2FyZExpc3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgYWRkSXRlbSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkhpc3RvcnlJdGVtICppdGVtKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ29CYWNrKCB2b2lk
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ29Gb3J3YXJk
KCB2b2lkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ29U
b0l0ZW0oIAotICAgICAgICAvKiBbaW5dICovIElXZWJIaXN0b3J5SXRlbSAqaXRlbSk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJhY2tJdGVtKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSGlzdG9yeUl0ZW0gKippdGVtKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3VycmVudEl0ZW0oIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJIaXN0b3J5SXRlbSAqKml0ZW0pOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb3J3YXJkSXRlbSggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkhpc3RvcnlJdGVtICoqaXRlbSk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJhY2tMaXN0V2l0aExpbWl0KCAKLSAg
ICAgICAgLyogW2luXSAqLyBpbnQgbGltaXQsCi0gICAgICAgIC8qIFtvdXRdICovIGludCAqbGlz
dENvdW50LAotICAgICAgICAvKiBbaW5dICovIElXZWJIaXN0b3J5SXRlbSAqKmxpc3QpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb3J3YXJkTGlzdFdpdGhM
aW1pdCggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGxpbWl0LAotICAgICAgICAvKiBbb3V0XSAq
LyBpbnQgKmxpc3RDb3VudCwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViSGlzdG9yeUl0ZW0gKips
aXN0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FwYWNp
dHkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqcmVzdWx0KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2FwYWNpdHkoIAotICAgICAg
ICAvKiBbaW5dICovIGludCBzaXplKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYmFja0xpc3RDb3VudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
aW50ICpjb3VudCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGZvcndhcmRMaXN0Q291bnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqc2l6
ZWNvdW50KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29u
dGFpbnNJdGVtKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViSGlzdG9yeUl0ZW0gKml0ZW0sCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXRlbUF0SW5kZXgoIAotICAgICAgICAvKiBb
aW5dICovIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSGlzdG9y
eUl0ZW0gKippdGVtKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRk
SXRlbShfSW5fb3B0XyBJV2ViSGlzdG9yeUl0ZW0qKTsgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdvQmFjaygpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBnb0ZvcndhcmQoKTsgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdvVG9JdGVtKF9Jbl9vcHRfIElXZWJIaXN0b3J5SXRlbSopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBiYWNrSXRlbShfQ09NX091dHB0cl9vcHRfIElX
ZWJIaXN0b3J5SXRlbSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y3VycmVudEl0ZW0oX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9yeUl0ZW0qKik7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvcndhcmRJdGVtKF9DT01fT3V0cHRyX29w
dF8gSVdlYkhpc3RvcnlJdGVtKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIF9PdXRfIGludCogbGlzdENvdW50LCBf
X2RlcmVmX2lub3V0X29wdCBJV2ViSGlzdG9yeUl0ZW0qKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGZvcndhcmRMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgX091dF8g
aW50ICpsaXN0Q291bnQsIF9fZGVyZWZfaW5vdXRfb3B0IElXZWJIaXN0b3J5SXRlbSAqKmxpc3Qp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYXBhY2l0eShfT3V0XyBp
bnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2FwYWNpdHko
aW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmFja0xpc3RDb3Vu
dChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9y
d2FyZExpc3RDb3VudChfT3V0XyBpbnQqKTsgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY29udGFpbnNJdGVtKF9Jbl9vcHRfIElXZWJIaXN0b3J5SXRlbSosIF9PdXRf
IEJPT0wqIHJlc3VsdCk7ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGl0ZW1BdEluZGV4KGludCBpbmRleCwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9yeUl0ZW0q
Kik7CiAgICAgCiAgICAgLy8gSVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlSXRlbSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkhpc3RvcnlJdGVtKiBpdGVtKTsKLQotICAgIC8vIFdlYkJhY2tGb3J3YXJkTGlzdAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVJdGVtKF9Jbl9vcHRf
IElXZWJIaXN0b3J5SXRlbSopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsK
KyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNhY2hl
LmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ2FjaGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNiBAQAogLy8gV2ViQ2FjaGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYkNhY2hlOjpXZWJDYWNoZSgpCi0gICAgOiBtX3JlZkNv
dW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkNhY2hlIik7CkBAIC02MCw5ICs1OSwxMSBAQCBXZWJDYWNoZSogV2ViQ2FjaGU6OmNyZWF0
ZUluc3RhbmNlKCkKIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkNhY2hlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBw
dk9iamVjdCkKK0hSRVNVTFQgV2ViQ2FjaGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAw
OworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpw
cHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25v
d24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ2FjaGUqPih0aGlzKTsK
ICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkNhY2hlKSkKQEAgLTc0LDEy
ICs3NSwxMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpRdWVyCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpBZGRS
ZWYodm9pZCkKK1VMT05HIFdlYkNhY2hlOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVm
Q291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpSZWxlYXNlKHZv
aWQpCitVTE9ORyBXZWJDYWNoZTo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1t
X3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtOTAsNyArOTEsNyBAQCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBXZWJDYWNoZTo6UmVsZWFzCiAKIC8vIElXZWJDYWNoZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotSFJFU1VMVCBXZWJDYWNoZTo6c3RhdGlzdGljcyhpbnQqIGNvdW50LCBJ
UHJvcGVydHlCYWcqKiBzKQorSFJFU1VMVCBXZWJDYWNoZTo6c3RhdGlzdGljcyhfSW5vdXRfIGlu
dCogY291bnQsIF9Jbm91dF9vcHRfIElQcm9wZXJ0eUJhZyoqIHMpCiB7CiAgICAgaWYgKCFjb3Vu
dCB8fCAocyAmJiAqY291bnQgPCA2KSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTIwNCw3
ICsyMDUsNyBAQCBIUkVTVUxUIFdlYkNhY2hlOjpzdGF0aXN0aWNzKGludCogY291bnQsCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ2FjaGU6OmVt
cHR5KCB2b2lkKQorSFJFU1VMVCBXZWJDYWNoZTo6ZW1wdHkoKQogewogICAgIGF1dG8mIG1lbW9y
eUNhY2hlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgIGlmIChtZW1v
cnlDYWNoZS5kaXNhYmxlZCgpKQpAQCAtMjIxLDE1ICsyMjIsMTMgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJDYWNoZTo6ZW1wdAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpzZXREaXNhYmxlZCggCi0gICAgLyogW2luXSAq
LyBCT09MIGRpc2FibGVkKQorSFJFU1VMVCBXZWJDYWNoZTo6c2V0RGlzYWJsZWQoQk9PTCBkaXNh
YmxlZCkKIHsKICAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJs
ZWQoISFkaXNhYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViQ2FjaGU6OmRpc2FibGVkKAotICAgIC8qIFtvdXRdW3JldHZhbF0gKi8gQk9P
TCogZGlzYWJsZWQpCitIUkVTVUxUIFdlYkNhY2hlOjpkaXNhYmxlZChfT3V0XyBCT09MKiBkaXNh
YmxlZCkKIHsKICAgICBpZiAoIWRpc2FibGVkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpA
QCAtMjM3LDcgKzIzNiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ2FjaGU6OmRp
c2EKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJDYWNoZTo6Y2FjaGVGb2xkZXIo
QlNUUiogbG9jYXRpb24pCitIUkVTVUxUIFdlYkNhY2hlOjpjYWNoZUZvbGRlcihfX2RlcmVmX291
dF9vcHQgQlNUUiogbG9jYXRpb24pCiB7CiAjaWYgVVNFKENVUkwpCiAgICAgU3RyaW5nIGNhY2hl
Rm9sZGVyID0gV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6Z2V0SW5zdGFuY2UoKS5jYWNoZURp
cmVjdG9yeSgpOwpAQCAtMjQ4LDcgKzI0Nyw3IEBAIEhSRVNVTFQgV2ViQ2FjaGU6OmNhY2hlRm9s
ZGVyKEJTVFIqIGxvY2EKICNlbmRpZgogfQogCi1IUkVTVUxUIFdlYkNhY2hlOjpzZXRDYWNoZUZv
bGRlcihCU1RSIGxvY2F0aW9uKQorSFJFU1VMVCBXZWJDYWNoZTo6c2V0Q2FjaGVGb2xkZXIoX0lu
XyBCU1RSIGxvY2F0aW9uKQogewogI2lmIFVTRShDVVJMKQogICAgIFN0cmluZyBjYWNoZUZvbGRl
cihsb2NhdGlvbiwgU3lzU3RyaW5nTGVuKGxvY2F0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNhY2hl
LmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNhY2hlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwyOSArMzgsMjAgQEAgcHJvdGVjdGVkOgogCiBw
dWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViQ2FjaGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc3RhdGlzdGljcyggCi0gICAgICAgIC8qIFtpbl1bb3V0XSAqLyBpbnQq
IGNvdW50LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElQcm9wZXJ0eUJhZyAqKnMpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbXB0eSh2b2lkKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGlzYWJsZWQo
IAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZGlzYWJsZWQpOwotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpc2FibGVkKAotICAgICAgICAvKiBbb3V0XVtyZXR2YWxd
ICovIEJPT0wqKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWNo
ZUZvbGRlcigvKiBbb3V0LCByZXR2YWxdICovIEJTVFIqIGxvY2F0aW9uKTsKLQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDYWNoZUZvbGRlcigvKiBbaW5dICovIEJT
VFIgbG9jYXRpb24pOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdGF0
aXN0aWNzKF9Jbm91dF8gaW50KiBjb3VudCwgX0lub3V0X29wdF8gSVByb3BlcnR5QmFnKiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbXB0eSgpOyAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREaXNhYmxlZChCT09MKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlzYWJsZWQoX091dF8gQk9PTCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWNoZUZvbGRlcihfX2RlcmVm
X291dF9vcHQgQlNUUiogbG9jYXRpb24pOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRDYWNoZUZvbGRlcihfSW5fIEJTVFIgbG9jYXRpb24pOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCShy
ZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIC8vIFdlYkNvcmVTdGF0aXN0aWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBX
ZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQotOiBtX3JlZkNvdW50KDApCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVT
dGF0aXN0aWNzIik7CkBAIC02Nyw5ICs2NiwxMSBAQCBXZWJDb3JlU3RhdGlzdGljcyogV2ViQ29y
ZVN0YXRpc3RpY3M6OmNyCiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
IHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVh
bEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmVTdGF0aXN0aWNzKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQo
cmlpZCwgSUlEX0lXZWJDb3JlU3RhdGlzdGljcykpCkBAIC04MSwxMiArODIsMTIgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdAogICAgIHJldHVybiBTX09LOwogfQog
Ci1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6QWRkUmVmKHZvaWQp
CitVTE9ORyBXZWJDb3JlU3RhdGlzdGljczo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3Jl
ZkNvdW50OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6
UmVsZWFzZSh2b2lkKQorVUxPTkcgV2ViQ29yZVN0YXRpc3RpY3M6OlJlbGVhc2UoKQogewogICAg
IFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTk3LDgg
Kzk4LDcgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3RpYwogCiAvLyBJ
V2ViQ29yZVN0YXRpc3RpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoIAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCogY291bnQpCitIUkVTVUxUIFdlYkNvcmVTdGF0
aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KF9PdXRfIFVJTlQqIGNvdW50KQogewogICAg
IGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMDgsOCArMTA4LDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdAogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0aWNzOjpq
YXZhU2NyaXB0R2xvYmFsT2JqZWN0c0NvdW50KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJ
TlQqIGNvdW50KQorSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdEdsb2JhbE9i
amVjdHNDb3VudChfT3V0XyBVSU5UKiBjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTE5LDggKzExOCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViQ29yZVN0YXRpc3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9i
amVjdHNDb3VudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UKiBjb3VudCkKK0hSRVNV
TFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RzQ291bnQoX091
dF8gVUlOVCogY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKQEAgLTEzMCw4ICsxMjgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNv
cmVTdGF0aXN0CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRHbG9iYWxPYmplY3RzQ291
bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCogY291bnQpCitIUkVTVUxUIFdlYkNv
cmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkR2xvYmFsT2JqZWN0c0NvdW50KF9PdXRf
IFVJTlQqIGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CkBAIC0xNDEsOSArMTM4LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29y
ZVN0YXRpc3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMo
IAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVByb3BlcnR5QmFnMioqIHR5cGVOYW1lc0FuZENv
dW50cykKK0hSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRPYmpl
Y3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnMioqIHR5cGVOYW1lc0Fu
ZENvdW50cykKIHsKKyAgICBpZiAoIXR5cGVOYW1lc0FuZENvdW50cykKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25W
TSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBqc09iamVjdFR5cGVOYW1l
cyhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMo
KSk7CiAgICAgdHlwZWRlZiBUeXBlQ291bnRTZXQ6OmNvbnN0X2l0ZXJhdG9yIEl0ZXJhdG9yOwpA
QCAtMTU3LDcgKzE1Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRp
c3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2
YVNjcmlwdE9iamVjdFR5cGVDb3VudHMoSVByb3BlcnR5QmFnMioqIHR5cGVOYW1lc0FuZENvdW50
cykKK0hSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRz
KF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnMioqIHR5cGVOYW1lc0FuZENvdW50cykKIHsK
ICAgICBpZiAoIXR5cGVOYW1lc0FuZENvdW50cykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
QEAgLTE3NSw4ICsxNzQsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0
T2JqCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Q29yZVN0YXRpc3RpY3M6Omljb25QYWdlVVJMTWFwcGluZ0NvdW50KCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFVJTlQqIGNvdW50KQorSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6aWNvblBh
Z2VVUkxNYXBwaW5nQ291bnQoX091dF8gVUlOVCogY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE4NCw4ICsxODIsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3RpY3M6Omljb25SZXRhaW5lZFBh
Z2VVUkxDb3VudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UICpjb3VudCkKK0hSRVNV
TFQgV2ViQ29yZVN0YXRpc3RpY3M6Omljb25SZXRhaW5lZFBhZ2VVUkxDb3VudChfT3V0XyBVSU5U
ICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpA
QCAtMTkzLDggKzE5MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRp
c3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJD
b3JlU3RhdGlzdGljczo6aWNvblJlY29yZENvdW50KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IFVJTlQgKmNvdW50KQorSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6aWNvblJlY29yZENvdW50
KF9PdXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CkBAIC0yMDIsOCArMTk4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJDb3JlU3RhdGlzdAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkNvcmVTdGF0aXN0aWNzOjppY29uc1dpdGhEYXRhQ291bnQoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gVUlOVCAqY291bnQpCitIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpp
Y29uc1dpdGhEYXRhQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTIxMSw4ICsyMDYsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRh
Q291bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCAqY291bnQpCitIUkVTVUxUIFdl
YkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUNvdW50KF9PdXRfIFVJTlQgKmNvdW50KQog
ewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0yMjAsOCAr
MjE0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdAogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0
aWNzOjpjYWNoZWRGb250RGF0YUluYWN0aXZlQ291bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gVUlOVCAqY291bnQpCitIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0
YUluYWN0aXZlQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTIyOSwxNCArMjIyLDEzIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZv
bnREYXRhKHZvaWQpCitIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9u
dERhdGEodm9pZCkKIHsKICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVG
b250RGF0YSgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkNvcmVTdGF0aXN0aWNzOjpnbHlwaFBhZ2VDb3VudCggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBVSU5UICpjb3VudCkKK0hSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmdseXBoUGFn
ZUNvdW50KF9PdXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CkBAIC0yNjIsNyArMjU0LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlz
dGljczo6c2V0SmF2YVNjcmlwdAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYkNv
cmVTdGF0aXN0aWNzOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoQk9PTCogc2hvdWxkUHJpbnQpCitI
UkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoX091dF8gQk9P
TCogc2hvdWxkUHJpbnQpCiB7CiAgICAgaWYgKCFzaG91bGRQcmludCkKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKQEAgLTI5MSw3ICsyODMsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNz
OjpzdG9wSWdub3JpbmdXCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViQ29yZVN0
YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoSVByb3BlcnR5QmFnKiogc3RhdGlzdGljcykKK0hS
RVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoX0NPTV9PdXRwdHJfb3B0
XyBJUHJvcGVydHlCYWcqKiBzdGF0aXN0aWNzKQogewogICAgIGlmICghc3RhdGlzdGljcykKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTMyMyw3ICszMTUsNyBAQCBIUkVTVUxUIFdlYkNv
cmVTdGF0aXN0aWNzOjpyZXR1cm5GcmVlTWVtCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZFBhZ2VDb3VudChJTlQqIGNvdW50KQorSFJFU1VM
VCBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkUGFnZUNvdW50KF9PdXRfIElOVCogY291bnQpCiB7
CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTMzMiw3ICsz
MjQsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRQYWdlQ291CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZyYW1lQ291
bnQoSU5UKiBjb3VudCkKK0hSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZyYW1lQ291
bnQoX091dF8gSU5UKiBjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5oCShyZXZp
c2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDU2ICszNywzOSBAQCBwcm90ZWN0ZWQ6CiAKIHB1
YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJDb3JlU3RhdGlzdGljcwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBVSU5UICpjb3VudCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRHbG9iYWxPYmplY3RzQ291bnQoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIFVJTlQgKmNvdW50KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgamF2YVNjcmlwdFByb3RlY3RlZE9iamVjdHNDb3VudCggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCAqY291bnQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0UHJvdGVjdGVkR2xvYmFsT2JqZWN0c0NvdW50KCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UICpjb3VudCk7Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291
bnRzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJUHJvcGVydHlCYWcyKiogdHlwZU5h
bWVzQW5kQ291bnRzKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNv
blBhZ2VVUkxNYXBwaW5nQ291bnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQg
KmNvdW50KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNvblJldGFp
bmVkUGFnZVVSTENvdW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UICpjb3Vu
dCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb25SZWNvcmRDb3Vu
dCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCAqY291bnQpOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uc1dpdGhEYXRhQ291bnQoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQgKmNvdW50KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgY2FjaGVkRm9udERhdGFDb3VudCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gVUlOVCAqY291bnQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjYWNoZWRGb250RGF0YUluYWN0aXZlQ291bnQoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFVJTlQgKmNvdW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgamF2YVNjcmlwdE9iamVjdHNDb3VudChfT3V0XyBVSU5UKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRHbG9iYWxPYmplY3RzQ291bnQoX091
dF8gVUlOVCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2Ny
aXB0UHJvdGVjdGVkT2JqZWN0c0NvdW50KF9PdXRfIFVJTlQqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgamF2YVNjcmlwdFByb3RlY3RlZEdsb2JhbE9iamVjdHNDb3Vu
dChfT3V0XyBVSU5UKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGph
dmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3Bl
cnR5QmFnMioqIHR5cGVOYW1lc0FuZENvdW50cyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGljb25QYWdlVVJMTWFwcGluZ0NvdW50KF9PdXRfIFVJTlQqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNvblJldGFpbmVkUGFnZVVSTENvdW50
KF9PdXRfIFVJTlQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNv
blJlY29yZENvdW50KF9PdXRfIFVJTlQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaWNvbnNXaXRoRGF0YUNvdW50KF9PdXRfIFVJTlQqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FjaGVkRm9udERhdGFDb3VudChfT3V0XyBVSU5UKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhY2hlZEZvbnREYXRhSW5h
Y3RpdmVDb3VudChfT3V0XyBVSU5UKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBnbHlwaFBhZ2VDb3VudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gVUlOVCAqY291bnQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKC8qIFtyZXR2YWxdW291dF0gKi8gSVByb3BlcnR5
QmFnMioqIHR5cGVOYW1lc0FuZENvdW50cyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGdseXBoUGFnZUNvdW50KF9PdXRfIFVJTlQqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRw
dHJfb3B0XyBJUHJvcGVydHlCYWcyKiogdHlwZU5hbWVzQW5kQ291bnRzKTsKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0
cygpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnYXJiYWdlQ29sbGVj
dEphdmFTY3JpcHRPYmplY3RzT25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoQk9PTCB3YWl0
VW50aWxEb25lKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SmF2
YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoQk9PTCk7Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkUHJpbnRFeGNlcHRpb25zKEJPT0wqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkUHJpbnRFeGNlcHRp
b25zKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKEJPT0wpOwotCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHN0YXJ0SWdub3JpbmdXZWJDb3JlTm9kZUxlYWtzKCk7CiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0b3BJZ25vcmluZ1dlYkNvcmVOb2RlTGVh
a3MoKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZW1vcnlTdGF0
aXN0aWNzKC8qIFtyZXR2YWxdW291dF0gKi8gSVByb3BlcnR5QmFnKiogc3RhdGlzdGljcyk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1lbW9yeVN0YXRpc3RpY3MoX0NP
TV9PdXRwdHJfb3B0XyBJUHJvcGVydHlCYWcqKiBzdGF0aXN0aWNzKTsKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmV0dXJuRnJlZU1lbW9yeVRvU3lzdGVtKCk7Ci0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FjaGVkUGFnZUNvdW50KC8qIFty
ZXR2YWxdW291dF0gKi8gSU5UICpjb3VudCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNhY2hlZEZyYW1lQ291bnQoLyogW3JldHZhbF1bb3V0XSAqLyBJTlQgKmNvdW50
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FjaGVkUGFnZUNvdW50
KF9PdXRfIElOVCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWNo
ZWRGcmFtZUNvdW50KF9PdXRfIElOVCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZD
b3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxMywgMjAx
NSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01MCwxMiArNTAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAv
LyBXZWJEYXRhU291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8ge0YyMzA4NTRELTcwOTEtNDI4YS04REI1LTM3
Q0FCQTQ0QzEwNX0KLWNvbnN0IEdVSUQgSUlEX1dlYkRhdGFTb3VyY2UgPSAKLXsgMHg1YzJmOTA5
OSwgMHhlNjVlLCAweDRhMGYsIHsgMHg5YywgMHhhMCwgMHg2YSwgMHhkNiwgMHg5MiwgMHg1Miwg
MHhhNiwgMHgyYSB9IH07Citjb25zdCBHVUlEIElJRF9XZWJEYXRhU291cmNlID0geyAweDVjMmY5
MDk5LCAweGU2NWUsIDB4NGEwZiwgeyAweDljLCAweGEwLCAweDZhLCAweGQ2LCAweDkyLCAweDUy
LCAweGE2LCAweDJhIH0gfTsKIAogV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1
bWVudExvYWRlciogbG9hZGVyKQotICAgIDogbV9yZWZDb3VudCgwKQotICAgICwgbV9sb2FkZXIo
bG9hZGVyKQorICAgIDogbV9sb2FkZXIobG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VDb3Vu
dCsrOwogICAgIGdDbGFzc0NvdW50Kys7CkBAIC04NSwzMiArODMsMjkgQEAgV2ViRG9jdW1lbnRM
b2FkZXIqIFdlYkRhdGFTb3VyY2U6OmRvY3VtZQogCiAvLyBJV2ViRGF0YVNvdXJjZVByaXZhdGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6b3ZlcnJpZGVFbmNvZGlu
ZyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKmVuY29kaW5nKi8pCitIUkVTVUxU
IFdlYkRhdGFTb3VyY2U6Om92ZXJyaWRlRW5jb2RpbmcoX0RlcmVmX29wdF9vdXRfIEJTVFIqIC8q
ZW5jb2RpbmcqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnNl
dE92ZXJyaWRlRW5jb2RpbmcoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmVuY29kaW5nKi8pCitI
UkVTVUxUIFdlYkRhdGFTb3VyY2U6OnNldE92ZXJyaWRlRW5jb2RpbmcoX0luXyBCU1RSIC8qZW5j
b2RpbmcqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6Om1haW5E
b2N1bWVudEVycm9yKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJFcnJvcioqIGVy
cm9yKQorSFJFU1VMVCBXZWJEYXRhU291cmNlOjptYWluRG9jdW1lbnRFcnJvcihfQ09NX091dHB0
cl9vcHRfIElXZWJFcnJvcioqIGVycm9yKQogewogICAgIGlmICghZXJyb3IpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgfQog
Ci0gICAgKmVycm9yID0gMDsKKyAgICAqZXJyb3IgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2xv
YWRlcikKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RF
RDsKIAogICAgIGlmIChtX2xvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIFNfT0s7CkBAIC0xMTksMTEgKzExNCwxMCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFTb3VyY2U6CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRh
TG9hZCgKLSAgICAvKiBbaW5dICovIEJPT0wgZmxhZykKK0hSRVNVTFQgV2ViRGF0YVNvdXJjZTo6
c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChCT09MIGZsYWcpCiB7CiAgICAgaWYgKCFtX2xv
YWRlcikKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RF
RDsKIAogICAgIG1fbG9hZGVyLT5zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGZsYWcpOwog
ICAgIHJldHVybiBTX09LOwpAQCAtMTMxLDkgKzEyNSwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRhdGFTb3VyY2U6CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjpRdWVyeUludGVyZmFjZShSRUZJSUQg
cmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViRGF0YVNvdXJjZTo6UXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7
Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9XZWJEYXRhU291cmNlKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHRoaXM7
CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKQEAgLTE0OSwx
MiArMTQ1LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZToKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJj
ZTo6QWRkUmVmKHZvaWQpCitVTE9ORyBXZWJEYXRhU291cmNlOjpBZGRSZWYoKQogewogICAgIHJl
dHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFT
b3VyY2U6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYkRhdGFTb3VyY2U6OlJlbGVhc2UoKQogewog
ICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTE2
NSwyNSArMTYxLDMxIEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OlIK
IAogLy8gSVdlYkRhdGFTb3VyY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEYXRhU291cmNlOjppbml0V2l0aFJlcXVlc3QoIAotICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJl
cXVlc3QqIC8qcmVxdWVzdCovKQorSFJFU1VMVCBXZWJEYXRhU291cmNlOjppbml0V2l0aFJlcXVl
c3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIC8qcmVxdWVzdCovKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6ZGF0YSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJU3RyZWFtKiogc3RyZWFtKQorSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0
cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKIHsKLSAgICAqc3RyZWFtID0gMDsKKyAgICBpZiAo
IXN0cmVhbSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqc3RyZWFtID0gbnVsbHB0
cjsKICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICBy
ZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9
CiAKLUhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oLyogW3JldHZhbF1bb3V0
XSAqLyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKK0hSRVNVTFQgV2ViRGF0YVNv
dXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNl
bnRhdGlvbioqIHJlcCkKIHsKKyAgICBpZiAoIXJlcCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqcmVwID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOworCiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAgICAgaWYgKCFtX3Jl
cHJlc2VudGF0aW9uKSB7CiAgICAgICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbiogaHRtbFJlcCA9
IFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2Uoc3RhdGljX2Nhc3Q8V2ViRnJh
bWVMb2FkZXJDbGllbnQmPihtX2xvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkpLndlYkZy
YW1lKCkpOwpAQCAtMTk0LDM3ICsxOTYsNjMgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXBy
ZXNlbnRhdGlvbigvKgogICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uLmNvcHlSZWZUbyhyZXAp
OwogfQogCi1IUkVTVUxUIFdlYkRhdGFTb3VyY2U6OndlYkZyYW1lKC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYkZyYW1lKiogZnJhbWUpCitIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OndlYkZyYW1lKF9D
T01fT3V0cHRyX29wdF8gSVdlYkZyYW1lKiogZnJhbWUpCiB7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZnJhbWUgPSBudWxscHRyOworICAgIGlmICgh
bV9sb2FkZXIpCisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisKICAgICAqZnJhbWUgPSBz
dGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KG1fbG9hZGVyLT5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKSkud2ViRnJhbWUoKTsKICAgICAoKmZyYW1lKS0+QWRkUmVmKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6
aW5pdGlhbFJlcXVlc3QoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlVSTFJlcXVlc3Qq
KiByZXF1ZXN0KQorSFJFU1VMVCBXZWJEYXRhU291cmNlOjppbml0aWFsUmVxdWVzdChfQ09NX091
dHB0cl9vcHRfIElXZWJVUkxSZXF1ZXN0KiogcmVxdWVzdCkKIHsKKyAgICBpZiAoIXJlcXVlc3Qp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlcXVlc3QgPSBudWxscHRyOworICAg
IGlmICghbV9sb2FkZXIpCisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisKICAgICAqcmVx
dWVzdCA9IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+b3Jp
Z2luYWxSZXF1ZXN0KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnJlcXVlc3QoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYk11dGFibGVVUkxSZXF1ZXN0KiogcmVxdWVzdCkKK0hSRVNVTFQgV2ViRGF0YVNvdXJj
ZTo6cmVxdWVzdChfQ09NX091dHB0cl9vcHRfIElXZWJNdXRhYmxlVVJMUmVxdWVzdCoqIHJlcXVl
c3QpCiB7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICpyZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOworCiAgICAgKnJlcXVlc3QgPSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPnJlcXVlc3QoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6cmVzcG9uc2UoIAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlVSTFJlc3BvbnNlKiogcmVzcG9uc2UpCitIUkVTVUxU
IFdlYkRhdGFTb3VyY2U6OnJlc3BvbnNlKF9DT01fT3V0cHRyX29wdF8gSVdlYlVSTFJlc3BvbnNl
KiogcmVzcG9uc2UpCiB7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqcmVzcG9uc2UgPSBudWxscHRyOworICAgIGlmICghbV9sb2FkZXIpCisgICAg
ICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisKICAgICAqcmVzcG9uc2UgPSBXZWJVUkxSZXNwb25z
ZTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPnJlc3BvbnNlKCkpOwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnRleHRFbmNv
ZGluZ05hbWUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogbmFtZSkKK0hSRVNVTFQg
V2ViRGF0YVNvdXJjZTo6dGV4dEVuY29kaW5nTmFtZShfRGVyZWZfb3B0X291dF8gQlNUUiogbmFt
ZSkKIHsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBp
ZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworCiAgICAgU3RyaW5n
IGVuY29kaW5nID0gbV9sb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKTsKICAgICBpZiAoZW5jb2Rp
bmcuaXNOdWxsKCkpCiAgICAgICAgIGVuY29kaW5nID0gbV9sb2FkZXItPnJlc3BvbnNlKCkudGV4
dEVuY29kaW5nTmFtZSgpOwpAQCAtMjM0LDIzICsyNjIsMzggQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEYXRhU291cmNlOgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OmlzTG9hZGluZyggCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiBsb2FkaW5nKQorSFJFU1VMVCBXZWJEYXRhU291cmNlOjppc0xvYWRp
bmcoX091dF8gQk9PTCogbG9hZGluZykKIHsKKyAgICBpZiAoIWxvYWRpbmcpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm4gRV9V
TkVYUEVDVEVEOworCiAgICAgKmxvYWRpbmcgPSBtX2xvYWRlci0+aXNMb2FkaW5nSW5BUElTZW5z
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkRhdGFTb3VyY2U6OnBhZ2VUaXRsZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiB0
aXRsZSkKK0hSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cGFnZVRpdGxlKF9EZXJlZl9vcHRfb3V0XyBC
U1RSKiB0aXRsZSkKIHsKKyAgICBpZiAoIXRpdGxlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworCisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKKwog
ICAgICp0aXRsZSA9IEJTdHJpbmcobV9sb2FkZXItPnRpdGxlKCkuc3RyaW5nKCkpLnJlbGVhc2Uo
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJE
YXRhU291cmNlOjp1bnJlYWNoYWJsZVVSTCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
KiB1cmwpCitIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnVucmVhY2hhYmxlVVJMKF9EZXJlZl9vcHRf
b3V0XyBCU1RSKiB1cmwpCiB7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwor
CiAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAg
ICAgQlN0cmluZyB1cmxTdHJpbmcodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkpOwogCkBAIC0yNTgs
MzAgKzMwMSwzNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNv
dXJjZTo6d2ViQXJjaGl2ZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViQXJjaGl2ZSoq
IC8qYXJjaGl2ZSovKQorSFJFU1VMVCBXZWJEYXRhU291cmNlOjp3ZWJBcmNoaXZlKF9DT01fT3V0
cHRyX29wdF8gSVdlYkFyY2hpdmUqKiBhcmNoaXZlKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGlmICghYXJjaGl2ZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
YXJjaGl2ZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjptYWluUmVzb3VyY2UoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSVdlYlJlc291cmNlKiogLypyZXNvdXJjZSovKQorSFJFU1VMVCBXZWJE
YXRhU291cmNlOjptYWluUmVzb3VyY2UoX0NPTV9PdXRwdHJfb3B0XyBJV2ViUmVzb3VyY2UqKiBy
ZXNvdXJjZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXNvdXJjZSA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJE
YXRhU291cmNlOjpzdWJyZXNvdXJjZXMoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSUVudW1W
QVJJQU5UKiogLypyZXN1bHQqLykKK0hSRVNVTFQgV2ViRGF0YVNvdXJjZTo6c3VicmVzb3VyY2Vz
KF9DT01fT3V0cHRyX29wdF8gSUVudW1WQVJJQU5UKiogcmVzdWx0KQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6c3VicmVzb3VyY2VGb3JVUkwo
IAotICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwsCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2Vi
UmVzb3VyY2UqKiByZXNvdXJjZSkKK0hSRVNVTFQgV2ViRGF0YVNvdXJjZTo6c3VicmVzb3VyY2VG
b3JVUkwoX0luXyBCU1RSIHVybCwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViUmVzb3VyY2UqKiByZXNv
dXJjZSkKIHsKICAgICBpZiAoIXJlc291cmNlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMjkwLDggKzMzNywxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRh
dGFTb3VyY2U6CiAKICAgICAqcmVzb3VyY2UgPSBudWxscHRyOwogCisgICAgaWYgKCFtX2xvYWRl
cikKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKKyAgICAKICAgICBEb2N1bWVudCogZG9j
ID0gbV9sb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkuZG9jdW1lbnQoKTsKLQogICAgIGlm
ICghZG9jKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0zMDQsOCArMzUzLDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOgogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OmFkZFN1YnJlc291
cmNlKCAKLSAgICAvKiBbaW5dICovIElXZWJSZXNvdXJjZSogLypzdWJyZXNvdXJjZSovKQorSFJF
U1VMVCBXZWJEYXRhU291cmNlOjphZGRTdWJyZXNvdXJjZShfSW5fb3B0XyBJV2ViUmVzb3VyY2Uq
IC8qc3VicmVzb3VyY2UqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuaAkocmV2aXNpb24g
MTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDc4ICs0NSwzOSBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoK
ICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVh
c2UoKTsKIAogICAgIC8vIElXZWJEYXRhU291cmNlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGluaXRXaXRoUmVxdWVzdCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVS
TFJlcXVlc3QgKnJlcXVlc3QpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkYXRhKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJU3RyZWFtICoqc3Ry
ZWFtKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwcmVz
ZW50YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJEb2N1bWVudFJlcHJl
c2VudGF0aW9uICoqcmVwKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2ViRnJhbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJGcmFtZSAq
KmZyYW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5p
dGlhbFJlcXVlc3QoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJVUkxSZXF1ZXN0
ICoqcmVxdWVzdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJlcXVlc3QoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJNdXRhYmxlVVJMUmVx
dWVzdCAqKnJlcXVlc3QpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZXNwb25zZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlVSTFJlc3Bv
bnNlICoqcmVzcG9uc2UpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB0ZXh0RW5jb2RpbmdOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICpuYW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNM
b2FkaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpsb2FkaW5nKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFnZVRpdGxlKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICp0aXRsZSk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVucmVhY2hhYmxlVVJMKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICp1cmwpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJBcmNoaXZlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJV2ViQXJjaGl2ZSAqKmFyY2hpdmUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBtYWluUmVzb3VyY2UoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElXZWJSZXNvdXJjZSAqKnJlc291cmNlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc3VicmVzb3VyY2VzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRW51bVZBUklBTlQgKiplbnVtUmVzb3VyY2VzKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc3VicmVzb3VyY2VGb3JVUkwoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdXJsLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJSZXNvdXJjZSAq
KnJlc291cmNlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YWRkU3VicmVzb3VyY2UoIAotICAgICAgICAvKiBbaW5dICovIElXZWJSZXNvdXJjZSAqc3VicmVz
b3VyY2UpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFJl
cXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKik7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRy
X29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdlYkZyYW1lKF9DT01fT3V0cHRyX29wdF8gSVdlYkZyYW1lKiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0aWFsUmVxdWVzdChf
Q09NX091dHB0cl9vcHRfIElXZWJVUkxSZXF1ZXN0KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSByZXF1ZXN0KF9DT01fT3V0cHRyX29wdF8gSVdlYk11dGFibGVVUkxS
ZXF1ZXN0KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXNwb25z
ZShfQ09NX091dHB0cl9vcHRfIElXZWJVUkxSZXNwb25zZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dEVuY29kaW5nTmFtZShfRGVyZWZfb3B0X291dF8gQlNU
UiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0xvYWRpbmcoX091
dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlVGl0
bGUoX0RlcmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdW5yZWFjaGFibGVVUkwoX0RlcmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViQXJjaGl2ZShfQ09NX091dHB0cl9vcHRf
IElXZWJBcmNoaXZlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBt
YWluUmVzb3VyY2UoX0NPTV9PdXRwdHJfb3B0XyBJV2ViUmVzb3VyY2UqKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1YnJlc291cmNlcyhfQ09NX091dHB0cl9vcHRf
IElFbnVtVkFSSUFOVCoqIGVudW1SZXNvdXJjZXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzdWJyZXNvdXJjZUZvclVSTChfSW5fIEJTVFIgdXJsLCBfQ09NX091dHB0
cl9vcHRfIElXZWJSZXNvdXJjZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgYWRkU3VicmVzb3VyY2UoX0luX29wdF8gSVdlYlJlc291cmNlKik7CiAKICAgICAvLyBJ
V2ViRGF0YVNvdXJjZVByaXZhdGUKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBvdmVycmlkZUVuY29kaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICplbmNvZGluZyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldE92ZXJyaWRlRW5jb2RpbmcoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZW5jb2Rpbmcp
OwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1haW5Eb2N1bWVudEVy
cm9yKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJFcnJvcioqIGVycm9yKTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZlck1haW5SZXNvdXJj
ZURhdGFMb2FkKAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZmxhZyk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG92ZXJyaWRlRW5jb2RpbmcoX0RlcmVmX29wdF9vdXRf
IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0T3ZlcnJp
ZGVFbmNvZGluZyhfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBtYWluRG9jdW1lbnRFcnJvcihfQ09NX091dHB0cl9vcHRfIElXZWJFcnJvcioqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGVmZXJNYWluUmVzb3VyY2VE
YXRhTG9hZChCT09MKTsKIAogICAgIC8vIFdlYkRhdGFTb3VyY2UKICAgICBXZWJEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdDsKKwogcHJvdGVjdGVkOgotICAgIFVMT05HIG1f
cmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBSZWZQdHI8V2ViRG9j
dW1lbnRMb2FkZXI+IG1fbG9hZGVyOwogICAgIENPTVB0cjxJV2ViRG9jdW1lbnRSZXByZXNlbnRh
dGlvbj4gbV9yZXByZXNlbnRhdGlvbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJE
YXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsMjAg
KzU3LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlCYWcq
IGNyZWF0ZUluc3RhbmNlKGNvbnN0IERhdGFiYXNlRGV0YWlscyYpOwogCiAgICAgLy8gSVVua25v
d24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2Uo
UkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCk7CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBBZGRSZWYoKTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uo
KTsKIAogICAgIC8vIElQcm9wZXJ0eUJhZwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFSSUFOVCogcFZhciwgSUVycm9y
TG9nKiBwRXJyb3JMb2cpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
cml0ZShMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQqIHBWYXIpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZWFkKF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1l
LCBfSW5vdXRfIFZBUklBTlQqLCBfSW5fIElFcnJvckxvZyopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXcml0ZShfSW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0lu
XyBWQVJJQU5UKik7CiBwcml2YXRlOgogICAgIERhdGFiYXNlRGV0YWlsc1Byb3BlcnR5QmFnKGNv
bnN0IERhdGFiYXNlRGV0YWlscyYgZGV0YWlscykgCi0gICAgICAgIDogbV9yZWZDb3VudCgwKQot
ICAgICAgICAsIG1fZGV0YWlscyhkZXRhaWxzKSB7IH0KKyAgICAgICAgOiBtX2RldGFpbHMoZGV0
YWlscykgeyB9CiAgICAgfkRhdGFiYXNlRGV0YWlsc1Byb3BlcnR5QmFnKCkgeyB9CiAKLSAgICBV
TE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgRGF0YWJh
c2VEZXRhaWxzIG1fZGV0YWlsczsKIH07CiAKQEAgLTgzLDEyICs4MiwxMiBAQCBEYXRhYmFzZURl
dGFpbHNQcm9wZXJ0eUJhZyogRGF0YWJhc2VEZXRhCiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlC
YWc6OkFkZFJlZigpCitVTE9ORyBEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6QWRkUmVmKCkK
IHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6UmVsZWFzZSgpCitVTE9ORyBEYXRhYmFzZURl
dGFpbHNQcm9wZXJ0eUJhZzo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3Jl
ZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtOTcsOSArOTYsMTEgQEAgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgRGF0YWJhc2VEZXRhaWxzUAogICAgIHJldHVybiBuZXdSZWY7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlCYWc6OlF1ZXJ5
SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBEYXRhYmFz
ZURldGFpbHNQcm9wZXJ0eUJhZzo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAg
aWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVj
dCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAg
ICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJh
Zyo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JUHJvcGVydHlC
YWcpKQpAQCAtMTEyLDcgKzExMyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGF0YWJh
c2VEZXRhaWwKIH0KIAogLy8gSVByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1IUkVTVUxUIERhdGFi
YXNlRGV0YWlsc1Byb3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFSSUFO
VCogcFZhciwgSUVycm9yTG9nKikKK0hSRVNVTFQgRGF0YWJhc2VEZXRhaWxzUHJvcGVydHlCYWc6
OlJlYWQoX0luXyBMUENPTEVTVFIgcHN6UHJvcE5hbWUsIF9Jbm91dF8gVkFSSUFOVCogcFZhciwg
X0luXyBJRXJyb3JMb2cqKQogewogICAgIGlmICghcHN6UHJvcE5hbWUgfHwgIXBWYXIpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMzMsMTIgKzEzNCwxMiBAQCBIUkVTVUxUIERhdGFi
YXNlRGV0YWlsc1Byb3BlcnR5QmFnOjpSZWFkCiAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEYXRhYmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6
V3JpdGUoTFBDT0xFU1RSIHBzelByb3BOYW1lLCBWQVJJQU5UKiBwVmFyKQorSFJFU1VMVCBEYXRh
YmFzZURldGFpbHNQcm9wZXJ0eUJhZzo6V3JpdGUoX0luXyBMUENPTEVTVFIgcHN6UHJvcE5hbWUs
IF9Jbl8gVkFSSUFOVCogcFZhcikKIHsKICAgICBpZiAoIXBzelByb3BOYW1lIHx8ICFwVmFyKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgcmV0dXJuIEVfRkFJTDsKKyAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogCiBzdGF0aWMgQ09NUHRyPFdlYkRhdGFiYXNlTWFuYWdlcj4gc19z
aGFyZWRXZWJEYXRhYmFzZU1hbmFnZXI7CkBAIC0xNTIsNyArMTUzLDYgQEAgV2ViRGF0YWJhc2VN
YW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OgogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6Oldl
YkRhdGFiYXNlTWFuYWdlcigpCi0gICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOwpA
QCAtMTY1LDkgKzE2NSwxMSBAQCBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFn
ZXIoCiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEYXRhYmFzZU1hbmFnZXI6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewot
ICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViRGF0YWJhc2VNYW5hZ2VyKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlp
ZCwgSUlEX0lXZWJEYXRhYmFzZU1hbmFnZXIpKQpAQCAtMTc5LDEyICsxODEsMTIgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIHJldHVybiBTX09LOwogfQog
Ci1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbmFnZXI6OkFkZFJlZigpCitV
TE9ORyBXZWJEYXRhYmFzZU1hbmFnZXI6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZD
b3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW5hZ2VyOjpS
ZWxlYXNlKCkKK1VMT05HIFdlYkRhdGFiYXNlTWFuYWdlcjo6UmVsZWFzZSgpCiB7CiAgICAgVUxP
TkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtMTk2LDkgKzE5
OCwxMSBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbmFnCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBDT01WYXJpYW50U2V0dGVyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiA6IENP
TUlVbmtub3duVmFyaWFudFNldHRlcjxXZWJTZWN1cml0eU9yaWdpbiwgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiA+IHt9OwogCiAvLyBJV2ViRGF0YWJhc2VNYW5hZ2VyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFn
ZXIoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkRhdGFiYXNlTWFuYWdlcioqIHJlc3Vs
dCkKK0hSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIo
X0NPTV9PdXRwdHJfb3B0XyBJV2ViRGF0YWJhc2VNYW5hZ2VyKiogcmVzdWx0KQogeworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgaWYgKCFzX3NoYXJl
ZFdlYkRhdGFiYXNlTWFuYWdlcikgewogICAgICAgICBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdl
ci5hZG9wdFJlZihXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkpOwogICAgICAg
ICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENsaWVudChzX3NoYXJlZFdlYkRhdGFi
YXNlTWFuYWdlci5nZXQoKSk7CkBAIC0yMDcsMTMgKzIxMSwxMiBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgcmV0dXJuIHNfc2hhcmVkV2ViRGF0YWJhc2VN
YW5hZ2VyLmNvcHlSZWZUbyhyZXN1bHQpOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRhdGFiYXNlTWFuYWdlcjo6b3JpZ2lucyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RW51bVZBUklBTlQqKiByZXN1bHQpCitIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6b3JpZ2lu
cyhfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFOVCoqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSAwOworICAg
ICpyZXN1bHQgPSBudWxscHRyOwogCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFz
ZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0yMjYsMTQgKzIyOSwxNSBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGF0YWJhc2VzV2l0aE9yaWdpbiggCi0gICAgLyogW2luXSAqLyBJV2ViU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElFbnVtVkFSSUFOVCoqIHJlc3VsdCkK
K0hSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKF9Jbl9vcHRf
IElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFO
VCoqIHJlc3VsdCkKIHsKLSAgICBpZiAoIW9yaWdpbiB8fCAhcmVzdWx0KQorICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwor
ICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3Vs
dCA9IDA7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAKICAgICBpZiAodGhpcyAhPSBzX3NoYXJl
ZFdlYkRhdGFiYXNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTI1MSwxNSAr
MjU1LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1h
bmFnZXI6OmRldGFpbHNGb3JEYXRhYmFzZSggCi0gICAgLyogW2luXSAqLyBCU1RSIGRhdGFiYXNl
TmFtZSwKLSAgICAvKiBbaW5dICovIElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSVByb3BlcnR5QmFnKiogcmVzdWx0KQorSFJFU1VMVCBXZWJEYXRh
YmFzZU1hbmFnZXI6OmRldGFpbHNGb3JEYXRhYmFzZShfSW5fIEJTVFIgZGF0YWJhc2VOYW1lLCBf
SW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgX0NPTV9PdXRwdHJfb3B0XyBJUHJv
cGVydHlCYWcqKiByZXN1bHQpCiB7Ci0gICAgaWYgKCFvcmlnaW4gfHwgIXJlc3VsdCkKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKKyAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAg
ICpyZXN1bHQgPSAwOwogCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFn
ZXIpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0yNzgsNyArMjgwLDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIHJldHVybiBTX09LOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFs
bERhdGFiYXNlcygpCitIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJh
c2VzKCkKIHsKICAgICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcikKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTI4OCw4ICsyOTAsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4oIAotICAg
IC8qIFtpbl0gKi8gSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCitIUkVTVUxUIFdlYkRhdGFi
YXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogewogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAt
MzA2LDkgKzMwNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4K
ICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSggCi0gICAgLyogW2luXSAqLyBCU1RSIGRh
dGFiYXNlTmFtZSwKLSAgICAvKiBbaW5dICovIElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQor
SFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKF9Jbl8gQlNUUiBkYXRh
YmFzZU5hbWUsIF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGlm
ICghb3JpZ2luKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMzcwLDkgKzM2OSw3IEBA
IHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGkKICAgICBub3RpZnlDZW50
ZXItPnBvc3ROb3RpZmljYXRpb25OYW1lKGRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTmFtZSwgc2Vj
dXJpdHlPcmlnaW4uZ2V0KCksIDApOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoCi0gICAgLyogW2luXSAqLyBCU1RSIG9yaWdpbiwK
LSAgICAvKiBbaW5dICovIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKK0hSRVNVTFQgV2ViRGF0
YWJhc2VNYW5hZ2VyOjpzZXRRdW90YShfSW5fIEJTVFIgb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpCiB7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTg4
NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsNDIgKzM3LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
RGF0YWJhc2VNYW5hZ2VyKiBjcmVhdGVJbnN0YW5jZSgpOwogCiAgICAgLy8gSVVua25vd24KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoIAotICAg
ICAgICAvKiBbaW5dICovIFJFRklJRCByaWlkLAotICAgICAgICAvKiBbaWlkX2lzXVtvdXRdICov
IHZvaWQqKiBwcHZPYmplY3QpOwotCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigp
OwotCiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAg
ICAvLyBJV2ViRGF0YWJhc2VNYW5hZ2VyCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlciggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSVdlYkRhdGFiYXNlTWFuYWdlcioqIHJlc3VsdCk7Ci0gICAgICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvcmlnaW5zKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBJRW51bVZBUklBTlQqKiByZXN1bHQpOwotICAgICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0YWJhc2VzV2l0aE9yaWdpbiggCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSUVudW1WQVJJQU5UKiogcmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRldGFpbHNGb3JEYXRhYmFzZSggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBkYXRhYmFzZU5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVByb3Bl
cnR5QmFnKiogcmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRlbGV0ZUFsbERhdGFiYXNlcygpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlT3JpZ2luKCAKLSAgICAgICAgLyogW2luXSAq
LyBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWxldGVEYXRhYmFzZSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBkYXRhYmFzZU5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dFF1b3RhKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgb3JpZ2luLAotICAgICAgICAvKiBbaW5d
ICovIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcihfQ09NX091dHB0cl9vcHRfIElX
ZWJEYXRhYmFzZU1hbmFnZXIqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBvcmlnaW5zKF9DT01fT3V0cHRyX29wdF8gSUVudW1WQVJJQU5UKiogcmVzdWx0
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0YWJhc2VzV2l0aE9y
aWdpbihfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qLCBfQ09NX091dHB0cl9vcHRfIElFbnVt
VkFSSUFOVCoqIHJlc3VsdCk7ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRldGFpbHNGb3JEYXRhYmFzZShfSW5fIEJTVFIgZGF0YWJhc2VOYW1lLCBfSW5fb3B0XyBJ
V2ViU2VjdXJpdHlPcmlnaW4qLCBfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHJlc3Vs
dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlbGV0ZUFsbERhdGFi
YXNlcygpOyAgICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRl
bGV0ZU9yaWdpbihfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qKTsgICAgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlbGV0ZURhdGFiYXNlKF9Jbl8gQlNUUiBk
YXRhYmFzZU5hbWUsIF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRRdW90YShfSW5fIEJTVFIgb3JpZ2luLCB1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpOwogCiAgICAgLy8gRGF0YWJhc2VNYW5hZ2VyQ2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKik7CkBAIC04Miw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViRGF0YWJhc2VNYW5h
Z2VyKCk7CiAgICAgfldlYkRhdGFiYXNlTWFuYWdlcigpOwogCi0gICAgVUxPTkcgbV9yZWZDb3Vu
dDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKIAogdm9pZCBXZWJLaXRJbml0aWFs
aXplV2ViRGF0YWJhc2VzSWZOZWNlc3NhcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YkRvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9h
ZC5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw3ICs1Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogLy8gV2ViRG93bmxvYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJEb3dubG9hZDo6V2ViRG93bmxvYWQo
KQotICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCIpOwpAQCAtOTEsOSArOTAsMTEgQEAgV2ViRG93
bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZQogCiAvLyBJVW5rbm93biAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OlF1ZXJ5SW50ZXJm
YWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYg
KCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9
IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAg
ICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViRG93bmxvYWQqPih0aGlzKTsKICAgICBl
bHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkRvd25sb2FkKSkKQEAgLTEwOSwxMiAr
MTEwLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OlEKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OkFk
ZFJlZih2b2lkKQorVUxPTkcgV2ViRG93bmxvYWQ6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsr
bV9yZWZDb3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OlJl
bGVhc2Uodm9pZCkKK1VMT05HIFdlYkRvd25sb2FkOjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBu
ZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC0xMjUsMTcgKzEyNiwx
MyBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6UmVsCiAKIC8vIElXZWJE
b3dubG9hZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OmNhblJlc3VtZURvd25sb2FkRGVjb2RlZFdpdGhFbmNvZGluZ01JTUVUeXBlKAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIsIAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIEJPT0wqKQor
SFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuUmVzdW1lRG93bmxvYWREZWNvZGVkV2l0aEVuY29kaW5n
TUlNRVR5cGUoX0luXyBCU1RSLCBfT3V0XyBCT09MKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgdGFyZ2V0UGF0aCwgCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiogYnVuZGxl
UGF0aCkKK0hSRVNVTFQgV2ViRG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKF9Jbl8g
QlNUUiB0YXJnZXRQYXRoLCBfX2RlcmVmX291dF9vcHQgQlNUUiogYnVuZGxlUGF0aCkKIHsKICAg
ICBpZiAoIXRhcmdldFBhdGgpCiAgICAgICAgIHJldHVybiBFX0lOVkFMSURBUkc7CkBAIC0xNTQs
MTMgKzE1MSwxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpiCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OnJlcXVlc3QoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSVdlYlVSTFJlcXVlc3Qq
KiByZXF1ZXN0KQorSFJFU1VMVCBXZWJEb3dubG9hZDo6cmVxdWVzdChfQ09NX091dHB0cl9vcHRf
IElXZWJVUkxSZXF1ZXN0KiogcmVxdWVzdCkKIHsKLSAgICBpZiAocmVxdWVzdCkgewotICAgICAg
ICAqcmVxdWVzdCA9IG1fcmVxdWVzdC5nZXQoKTsKLSAgICAgICAgaWYgKCpyZXF1ZXN0KQotICAg
ICAgICAgICAgKCpyZXF1ZXN0KS0+QWRkUmVmKCk7Ci0gICAgfQorICAgIGlmICghcmVxdWVzdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgICpyZXF1ZXN0ID0gbV9yZXF1ZXN0Lmdl
dCgpOworICAgIGlmICgqcmVxdWVzdCkKKyAgICAgICAgKCpyZXF1ZXN0KS0+QWRkUmVmKCk7CisK
ICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaAkocmV2aXNp
b24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02Miw1NiArNjIsMjcgQEAgcHJpdmF0ZToKICAgICB+V2ViRG93bmxvYWQoKTsKIHB1
YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJEb3dubG9hZAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFJlcXVlc3QoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YlVSTFJlcXVlc3QqIHJlcXVlc3QsIAotICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERl
bGVnYXRlKiBkZWxlZ2F0ZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGJ1bmRs
ZVBhdGgsIAotICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0
ZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuUmVzdW1lRG93
bmxvYWREZWNvZGVkV2l0aEVuY29kaW5nTUlNRVR5cGUoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBtaW1lVHlwZSwgCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KTsK
LQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFJlcXVlc3Qo
X0luX29wdF8gSVdlYlVSTFJlcXVlc3QqLCBfSW5fb3B0XyBJV2ViRG93bmxvYWREZWxlZ2F0ZSop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0VG9SZXN1bWVXaXRo
QnVuZGxlKF9Jbl8gQlNUUiBidW5kbGVQYXRoLCBfSW5fb3B0XyBJV2ViRG93bmxvYWREZWxlZ2F0
ZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5SZXN1bWVEb3du
bG9hZERlY29kZWRXaXRoRW5jb2RpbmdNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5cGUsIF9PdXRf
IEJPT0wqIHJlc3VsdCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0
YXJ0KCk7Ci0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuY2VsKCk7
Ci0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuY2VsRm9yUmVzdW1l
KCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlc0ZpbGVV
cG9uRmFpbHVyZSgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiByZXN1bHQpOwot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJ1bmRsZVBhdGhGb3JUYXJn
ZXRQYXRoKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGFyZ2V0LCAKLSAgICAgICAgLyogW291
dCwgcmV0dmFsXSAqLyBCU1RSKiBidW5kbGUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlcXVlc3QoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSVdlYlVS
TFJlcXVlc3QqKiByZXF1ZXN0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKAotICAgICAgICAvKiBbaW5dICovIEJPT0wg
ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0RGVzdGluYXRpb24oCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwYXRoLCAK
LSAgICAgICAgLyogW2luXSAqLyBCT09MIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZShfT3V0XyBCT09M
KiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBidW5kbGVQ
YXRoRm9yVGFyZ2V0UGF0aChfSW5fIEJTVFIgdGFyZ2V0LCBfX2RlcmVmX291dF9vcHQgQlNUUiog
YnVuZGxlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVxdWVzdChf
Q09NX091dHB0cl9vcHRfIElXZWJVUkxSZXF1ZXN0KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKEJPT0wpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZXN0aW5hdGlvbihfSW5fIEJTVFIg
cGF0aCwgQk9PTCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICAvLyBJV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOwotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdXNlQ3JlZGVudGlhbCgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3JlZGVu
dGlhbCogY3JlZGVudGlhbCwgCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxD
cmVkZW50aWFsKiwgX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7CiAK
ICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzCkBAIC0x
MzQsNyArMTA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICBVTE9ORyBt
X3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAKICAgICBXVEY6OlN0cmlu
ZyBtX2Rlc3RpbmF0aW9uOwogICAgIFdURjo6U3RyaW5nIG1fYnVuZGxlUGF0aDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
MjEsOSArMTIxLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBVUkwmIHVybCwgSQog
CiAvLyBJV2ViRG93bmxvYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRvd25sb2FkOjppbml0V2l0aFJlcXVlc3QoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVS
TFJlcXVlc3QqIHJlcXVlc3QsIAotICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVn
YXRlKiBkZWxlZ2F0ZSkKK0hSRVNVTFQgV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdChfSW5f
b3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgX0luX29wdF8gSVdlYkRvd25sb2FkRGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gd2ViUmVx
dWVzdDsKICAgICBpZiAoIXJlcXVlc3QgfHwgRkFJTEVEKHJlcXVlc3QtPlF1ZXJ5SW50ZXJmYWNl
KCZ3ZWJSZXF1ZXN0KSkpIHsKQEAgLTE0Nyw3ICsxNDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkOjppCiAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBkb3du
bG9hZCBmYWlsZWQgdG8gY3JlYXRlLCAKICAgICAvLyB3ZSBoYXZlIHBhcnRpY3VsYXIgY2xlYW51
cCB0byBkbwogICAgIGlmICghbV9kb3dubG9hZCkgewotICAgICAgICBtX3JlcXVlc3QgPSAwOyAg
ICAKKyAgICAgICAgbV9yZXF1ZXN0ID0gbnVsbHB0cjsgICAgCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAgICAgfQogCkBAIC0xNTgsOSArMTU2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEb3dubG9hZDo6aQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgYnVuZGxlUGF0aCwgCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkRvd25s
b2FkRGVsZWdhdGUqIGRlbGVnYXRlKQorSFJFU1VMVCBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1l
V2l0aEJ1bmRsZShfSW5fIEJTVFIgYnVuZGxlUGF0aCwgX0luX29wdF8gSVdlYkRvd25sb2FkRGVs
ZWdhdGUqIGRlbGVnYXRlKQogewogICAgIExPRyhEb3dubG9hZCwgIkF0dGVtcHRpbmcgcmVzdW1l
IG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4o
YnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMjA4LDcgKzIwNCw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmkKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c3RhcnQoKQorSFJFU1VM
VCBXZWJEb3dubG9hZDo6c3RhcnQoKQogewogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2Fk
IC0gU3RhcnRpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGlmICghbV9kb3dubG9hZCkK
QEAgLTIyMiwxOCArMjE4LDE4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OnMKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6Y2FuY2VsKCkKK0hSRVNVTFQgV2ViRG93bmxvYWQ6OmNhbmNlbCgpCiB7CiAg
ICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCki
LCB0aGlzKTsKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBDRlVSTERvd25sb2FkQ2FuY2VsKG1fZG93bmxvYWQuZ2V0KCkpOwotICAgIG1fZG93bmxv
YWQgPSAwOworICAgIG1fZG93bmxvYWQgPSBudWxscHRyOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWxGb3JSZXN1bWUo
KQorSFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIHsKICAgICBMT0coRG93
bmxvYWQsICJXZWJEb3dubG9hZCAtIENhbmNlbGxpbmcgZG93bmxvYWQgKCVwKSwgd3JpdGluZyBy
ZXN1bWUgaW5mb3JtYXRpb24gdG8gZmlsZSBpZiBwb3NzaWJsZSIsIHRoaXMpOwogICAgIEFTU0VS
VChtX2Rvd25sb2FkKTsKQEAgLTI2MSwyMSArMjU3LDIyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRG93bmxvYWQ6OmMKICAgICBEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0
YShyZXN1bWVCeXRlcywgcmVzdW1lTGVuZ3RoLCBtX2J1bmRsZVBhdGgpOwogCiBleGl0OgotICAg
IG1fZG93bmxvYWQgPSAwOworICAgIG1fZG93bmxvYWQgPSBudWxscHRyOwogICAgIHJldHVybiBo
cjsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6ZGVsZXRlc0Zp
bGVVcG9uRmFpbHVyZSgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiByZXN1bHQp
CitIUkVTVUxUIFdlYkRvd25sb2FkOjpkZWxldGVzRmlsZVVwb25GYWlsdXJlKF9PdXRfIEJPT0wq
IHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KyAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogICAgICpyZXN1bHQgPSBDRlVSTERvd25sb2FkRGVsZXRlc1Vwb25GYWlsdXJl
KG1fZG93bmxvYWQuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKAotICAg
ICAgICAvKiBbaW5dICovIEJPT0wgZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSkKK0hSRVNVTFQgV2Vi
RG93bmxvYWQ6OnNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmUoQk9PTCBkZWxldGVzRmlsZVVwb25G
YWlsdXJlKQogewogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
QEAgLTI4Myw5ICsyODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2Fk
OjpzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcGF0aCwg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd092ZXJ3cml0ZSkKK0hSRVNVTFQgV2ViRG93
bmxvYWQ6OnNldERlc3RpbmF0aW9uKF9Jbl8gQlNUUiBwYXRoLCBCT09MIGFsbG93T3ZlcndyaXRl
KQogewogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTMw
NCwxMiArMjk5LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMK
IAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKikKK0hSRVNVTFQgV2ViRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopCiB7CiAgICAgaWYg
KG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbChtX2Rvd25sb2FkLmdl
dCgpKTsKLSAgICAgICAgbV9kb3dubG9hZCA9IDA7CisgICAgICAgIG1fZG93bmxvYWQgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0
aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/CkBAIC0zMjAsOCArMzE0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCitIUkVTVUxUIFdlYkRvd25sb2Fk
Ojpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0lu
X29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CiAgICAg
Q09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnks
IGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCkBAIC0zMzIsOSArMzI1LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50
aWFsKAotICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAK
LSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxs
ZW5nZSkKK0hSRVNVTFQgV2ViRG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwoX0luX29wdF8gSVdlYlVS
TENyZWRlbnRpYWwqIGNyZWRlbnRpYWwsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogY2hhbGxlbmdlKQogewogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hh
bGxlbmdlKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRHJvcFNvdXJjZS5jcHAJKHJldmlzaW9uIDE4
ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUxLDkgKzUxLDcgQEAgSFJFU1VMVCBXZWJEcm9wU291cmNlOjpjcmVhdGVJbnN0YW5j
ZShXZQogfQogCiBXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcp
Ci06IG1fcmVmKDEpCi0sIG1fZHJvcHBlZChmYWxzZSkgCi0sIG1fd2ViVmlldyh3ZWJWaWV3KQor
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKQEAgLTY1LDkgKzYzLDExIEBAIFdl
YkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkRyb3BTb3VyY2UiKTsKIH0KIAotU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorU1RETUVUSE9ESU1Q
IFdlYkRyb3BTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICgh
cHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBu
dWxscHRyOwogICAgIGlmIChJc0VxdWFsSUlEKHJpaWQsIElJRF9JVW5rbm93bikgfHwgCiAgICAg
ICAgIElzRXF1YWxJSUQocmlpZCwgSUlEX0lEcm9wU291cmNlKSkgewogICAgICAgICAqcHB2T2Jq
ZWN0ID0gdGhpczsKQEAgLTc5LDEyICs3OSwxMiBAQCBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJj
ZTo6UXVlcnlJbnRlcmZhCiAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiB9CiAKLVNURE1FVEhP
RElNUF8oVUxPTkcpIFdlYkRyb3BTb3VyY2U6OkFkZFJlZih2b2lkKQorU1RETUVUSE9ESU1QXyhV
TE9ORykgV2ViRHJvcFNvdXJjZTo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gSW50ZXJsb2NrZWRJ
bmNyZW1lbnQoJm1fcmVmKTsKIH0KIAotU1RETUVUSE9ESU1QXyhVTE9ORykgV2ViRHJvcFNvdXJj
ZTo6UmVsZWFzZSh2b2lkKQorU1RETUVUSE9ESU1QXyhVTE9ORykgV2ViRHJvcFNvdXJjZTo6UmVs
ZWFzZSgpCiB7CiAgICAgbG9uZyBjID0gSW50ZXJsb2NrZWREZWNyZW1lbnQoJm1fcmVmKTsKICAg
ICBpZiAoYyA9PSAwKQpAQCAtMTA0LDcgKzEwNCw3IEBAIFBsYXRmb3JtTW91c2VFdmVudCBnZW5l
cmF0ZU1vdXNlRXZlbnQoV2UKICAgICAgICAgaXNEcmFnID8gTGVmdEJ1dHRvbiA6IE5vQnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgY3VycmVudFRpbWUoKSwgMCk7CiB9CiAKLVNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpR
dWVyeUNvbnRpbnVlRHJhZyhCT09MIGZFc2NhcGVQcmVzc2VkLCBEV09SRCBncmZLZXlTdGF0ZSkK
K1NURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRpbnVlRHJhZyhfSW5fIEJPT0wg
ZkVzY2FwZVByZXNzZWQsIF9Jbl8gRFdPUkQgZ3JmS2V5U3RhdGUpCiB7CiAgICAgaWYgKGZFc2Nh
cGVQcmVzc2VkIHx8ICEoZ3JmS2V5U3RhdGUgJiAoTUtfTEJVVFRPTnxNS19SQlVUVE9OKSkpIHsK
ICAgICAgICAgbV9kcm9wcGVkID0gIWZFc2NhcGVQcmVzc2VkOwpAQCAtMTE0LDcgKzExNCw3IEBA
IFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUNvbnRpbnUKICAgICByZXR1cm4gU19P
SzsKIH0KIAotU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OkdpdmVGZWVkYmFjayhEV09SRCBk
d0VmZmVjdCkKK1NURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpHaXZlRmVlZGJhY2soX0luXyBE
V09SRCBkd0VmZmVjdCkKIHsKICAgICBCT09MIHNob3dDdXN0b21DdXJzb3JzOwogICAgIGlmIChG
QUlMRUQoV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKS0+Y3VzdG9t
RHJhZ0N1cnNvcnNFbmFibGVkKCZzaG93Q3VzdG9tQ3Vyc29ycykpKQpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViRHJvcFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkRyb3BTb3VyY2UuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViRHJvcFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDE4ICs0MSwxOCBAQCBXZWJDb3Jl
OjpQbGF0Zm9ybU1vdXNlRXZlbnQgZ2VuZXJhdGVNb3VzCiBjbGFzcyBXZWJEcm9wU291cmNlIDog
cHVibGljIElEcm9wU291cmNlCiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0
KTsgICAgICAgIAotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZv
aWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlDb250aW51ZURyYWco
Qk9PTCBmRXNjYXBlUHJlc3NlZCwgRFdPUkQgZ3JmS2V5U3RhdGUpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBHaXZlRmVlZGJhY2soRFdPUkQgZHdFZmZlY3QpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7ICAgICAgICAKKyAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAgIHZpcnR1YWwgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUNvbnRpbnVlRHJhZyhfSW5fIEJPT0wgZkVzY2FwZVByZXNzZWQs
IF9Jbl8gRFdPUkQgZ3JmS2V5U3RhdGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBHaXZlRmVlZGJhY2soX0luXyBEV09SRCBkd0VmZmVjdCk7CiAKICAgICBzdGF0aWMg
SFJFU1VMVCBjcmVhdGVJbnN0YW5jZShXZWJWaWV3KiB3ZWJWaWV3LCBJRHJvcFNvdXJjZSoqIHJl
c3VsdCk7CiBwcml2YXRlOgogICAgIFdlYkRyb3BTb3VyY2UoV2ViVmlldyogd2ViVmlldyk7CiAg
ICAgfldlYkRyb3BTb3VyY2UoKTsKLSAgICBsb25nIG1fcmVmOwotICAgIGJvb2wgbV9kcm9wcGVk
OworICAgIGxvbmcgbV9yZWYgeyAxIH07CisgICAgYm9vbCBtX2Ryb3BwZWQgeyBmYWxzZSB9Owog
ICAgIENPTVB0cjxXZWJWaWV3PiBtX3dlYlZpZXc7CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAw
NywgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogLy8gV2ViRWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1l
bnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgOiBtX3Jlc3Vs
dChzdGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCi0gICAgLCBtX3JlZkNv
dW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOwpAQCAtNjYsOSArNjUsMTEgQEAgV2ViRWxlbWVudFBy
b3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydAogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViRWxlbWVu
dFByb3BlcnR5QmFnOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBw
dk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVs
bHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAg
KnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElQcm9wZXJ0eUJhZyo+KHRoaXMpOwogICAgIGVsc2Ug
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JUHJvcGVydHlCYWcpKQpAQCAtODAsMTIgKzgxLDEy
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRWxlbWVudFByb3AKICAgICByZXR1cm4g
U19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRWxlbWVudFByb3BlcnR5QmFn
OjpBZGRSZWYodm9pZCkKK1VMT05HIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6QWRkUmVmKCkKIHsK
ICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJFbGVtZW50UHJvcGVydHlCYWc6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZzo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50Owog
ICAgIGlmICghbmV3UmVmKQpAQCAtMTk1LDEwICsxOTYsMTAgQEAgSFJFU1VMVCBXZWJFbGVtZW50
UHJvcGVydHlCYWc6OlJlYWQoTFBDTwogICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXcml0ZShMUENP
TEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQqIHBWYXIpCitIUkVTVUxUIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZzo6V3JpdGUoX0luXyBMUENPTEVTVFIgcHN6UHJvcE5hbWUsIF9Jbl8gVkFSSUFOVCog
cFZhcikKIHsKICAgICBpZiAoIXBzelByb3BOYW1lIHx8ICFwVmFyKQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogCi0gICAgcmV0dXJuIEVfRkFJTDsKKyAgICByZXR1cm4gRV9OT1RJTVBMOwog
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmgJKHJldmlz
aW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MywyMyArNDMsMTcgQEAgcHJvdGVjdGVkOgogCiBwdWJsaWM6
CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxl
YXNlKCk7CiAKICAgICAvLyBJUHJvcGVydHlCYWcKLSAgICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8g
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZWFkKCAKLSAgICAgICAgLyogW2luXSAqLyBMUENP
TEVTVFIgcHN6UHJvcE5hbWUsCi0gICAgICAgIC8qIFtvdXRdW2luXSAqLyBWQVJJQU5UICpwVmFy
LAotICAgICAgICAvKiBbaW5dICovIElFcnJvckxvZyAqcEVycm9yTG9nKTsKLSAgICAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdyaXRlKCAKLSAgICAgICAgLyog
W2luXSAqLyBMUENPTEVTVFIgcHN6UHJvcE5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gVkFSSUFO
VCAqcFZhcik7CisgICAgdmlydHVhbCAvKiBbbG9jYWxdICovIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQqIHBWYXIsIElFcnJvckxv
ZyogcEVycm9yTG9nKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV3Jp
dGUoX0luXyBMUENPTEVTVFIgcHN6UHJvcE5hbWUsIF9Jbl8gVkFSSUFOVCogcFZhcik7CiAKIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ+IG1fcmVz
dWx0OwotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsK
IH07CiAKICNlbmRpZiAvLyBXZWJFbGVtZW50UHJvcGVydHlCYWdfSApJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkVycm9yLmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRXJy
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDggKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAvLyBXZWJFcnJvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViRXJyb3I6OldlYkVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQotICAgIDog
bV9yZWZDb3VudCgwKQotICAgICwgbV9lcnJvcihlcnJvcikKKyAgICA6IG1fZXJyb3IoZXJyb3Ip
CiAgICAgLCBtX3VzZXJJbmZvKHVzZXJJbmZvKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC03
MCw5ICs2OSwxMSBAQCBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKCkKIAogLy8g
SVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkVycm9y
OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAw
OworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpw
cHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25v
d24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkVycm9yKj4odGhpcyk7
CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgQ0xTSURfV2ViRXJyb3IpKQpAQCAtODgs
MTIgKzg5LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OlF1ZXIKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OkFk
ZFJlZih2b2lkKQorVUxPTkcgV2ViRXJyb3I6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9y
ZWZDb3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OlJlbGVhc2Uo
dm9pZCkKK1VMT05HIFdlYkVycm9yOjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBuZXdSZWYgPSAt
LW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC0xMDQsMjQgKzEwNSwyMSBAQCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBXZWJFcnJvcjo6UmVsZWFzCiAKIC8vIElXZWJFcnJvciAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFcnJvcjo6aW5pdCggCi0gICAg
LyogW2luXSAqLyBCU1RSIGRvbWFpbiwKLSAgICAvKiBbaW5dICovIGludCBjb2RlLAotICAgIC8q
IFtpbl0gKi8gQlNUUiB1cmwpCitIUkVTVUxUIFdlYkVycm9yOjppbml0KF9Jbl8gQlNUUiBkb21h
aW4sIGludCBjb2RlLCBfSW5fIEJTVFIgdXJsKQogewogICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVy
cm9yKFN0cmluZyhkb21haW4sIFN5c1N0cmluZ0xlbihkb21haW4pKSwgY29kZSwgU3RyaW5nKHVy
bCwgU3lzU3RyaW5nTGVuKHVybCkpLCBTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFcnJvcjo6Y29kZSggCi0gICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRXJyb3I6OmNvZGUoX091dF8g
aW50KiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAgICAgKnJlc3VsdCA9IG1fZXJyb3IuZXJyb3JDb2RlKCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAgICAgICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFcnJvcjo6ZG9tYWlu
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRXJy
b3I6OmRvbWFpbihfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTMwLDggKzEyOCw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OmRvbWEKICAgICByZXR1cm4gU19PSzsKIH0K
ICAgICAgICAgICAgICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFcnJvcjo6bG9j
YWxpemVkRGVzY3JpcHRpb24oIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KQorSFJFU1VMVCBXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24oX19kZXJlZl9vcHRfb3V0
IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKQEAgLTE0OSw0MCArMTQ2LDQ3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RXJyb3I6OmxvY2EKIH0KIAogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RXJyb3I6OmxvY2FsaXplZEZhaWx1cmVSZWFzb24oIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgV2ViRXJyb3I6OmxvY2FsaXplZEZhaWx1cmVSZWFz
b24oX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
cmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgICAgICAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRXJyb3I6OmxvY2FsaXplZFJlY292ZXJ5T3B0aW9u
cyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRW51bVZBUklBTlQqKiAvKnJlc3VsdCovKQor
SFJFU1VMVCBXZWJFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKF9fZGVyZWZfb3B0X291
dCBJRW51bVZBUklBTlQqKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9
IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkVycm9yOjpsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24oIAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLypyZXN1bHQqLykKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRXJyb3I6OmxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbihfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBu
dWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgICAgCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkVycm9yOjpyZWNvdmVyQXR0ZW1wdGVyKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElVbmtub3duKiogLypyZXN1bHQqLykKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRXJyb3I6OnJlY292ZXJBdHRlbXB0ZXIoX19kZXJlZl9vcHRfb3V0IElVbmtub3duKiog
cmVzdWx0KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyZXN1bHQgPSBudWxscHRyOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAgICAgICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJFcnJvcjo6dXNlckluZm8oIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVByb3BlcnR5QmFn
KiogcmVzdWx0KQorSFJFU1VMVCBXZWJFcnJvcjo6dXNlckluZm8oX0NPTV9PdXRwdHJfb3B0XyBJ
UHJvcGVydHlCYWcqKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7Ci0gICAgKnJlc3VsdCA9IDA7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIW1fdXNlckluZm8pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xOTAsOCAr
MTk0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFcnJvcjo6dXNlcgogICAgIHJl
dHVybiBtX3VzZXJJbmZvLmNvcHlSZWZUbyhyZXN1bHQpOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkVycm9yOjpmYWlsaW5nVVJMKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRXJyb3I6OmZhaWxpbmdVUkwoX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTIwMCw4ICsyMDMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkVycm9yOjpmYWlsCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRXJyb3I6OmlzUG9saWN5Q2hhbmdlRXJyb3IoIAotICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqcmVzdWx0KQorSFJFU1VMVCBXZWJFcnJvcjo6aXNQb2xpY3lDaGFuZ2VFcnJv
cihfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CkBAIC0yMTEsNyArMjEzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJFcnJvcjo6aXNQbwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYkVycm9y
Ojpzc2xQZWVyQ2VydGlmaWNhdGUoLyogW3JldHZhbF1bb3V0XSAqLyBVTE9OR19QVFIqIHJlc3Vs
dCkKK0hSRVNVTFQgV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZShfT3V0XyBVTE9OR19QVFIq
IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViRXJyb3IuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw1MyArNDEsMzAgQEAgcHJvdGVj
dGVkOgogCiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmpl
Y3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwot
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViRXJyb3IKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBk
b21haW4sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNvZGUsCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB1cmwpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvZGUo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqcmVzdWx0KTsKLSAgICAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRvbWFpbiggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsaXplZERlc2NyaXB0aW9uKCAKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxpemVkRmFpbHVyZVJlYXNvbiggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucygg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSUVudW1WQVJJQU5UICoqcmVzdWx0KTsKLSAg
ICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsaXplZFJl
Y292ZXJ5U3VnZ2VzdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KTsKLSAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVj
b3ZlckF0dGVtcHRlciggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVVua25vd24gKipy
ZXN1bHQpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dXNlckluZm8oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElQcm9wZXJ0eUJhZyAqKnJl
c3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmFpbGluZ1VS
TCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1BvbGljeUNoYW5nZUVycm9yKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0KF9Jbl8gQlNUUiBkb21haW4sIGludCBjb2RlLCBf
SW5fIEJTVFIgdXJsKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29k
ZShfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9t
YWluKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGxvY2FsaXplZERlc2NyaXB0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsaXplZEZhaWx1cmVSZWFz
b24oX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKF9fZGVyZWZfb3B0X291dCBJRW51bVZB
UklBTlQqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBs
b2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24oX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVjb3ZlckF0dGVtcHRlcihfX2RlcmVm
X29wdF9vdXQgSVVua25vd24qKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB1c2VySW5mbyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyAqKnJlc3Vs
dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZhaWxpbmdVUkwoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNQb2xpY3lDaGFuZ2VFcnJvcihfT3V0XyBCT09MKik7CiAKICAgICAvLyBJV2ViRXJyb3JQ
cml2YXRlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNzbFBlZXJDZXJ0
aWZpY2F0ZSgvKiBbcmV0dmFsXVtvdXRdICovIFVMT05HX1BUUiogcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3NsUGVlckNlcnRpZmljYXRlKF9PdXRfIFVM
T05HX1BUUiopOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgcmVzb3VyY2VF
cnJvcigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxP
TkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBtX3VzZXJJbmZv
OwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gbV9j
ZkVycm9yVXNlckluZm9EaWN0OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24g
MTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsNyArMTUwLDcgQEAgY29uc3QgZmxvYXQgUHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFj
dG9yCiBXZWJGcmFtZSoga2l0KEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTog
RG9lc24ndCB0aGlzIG5lZWQgdG8gYmUgYXdhcmUgb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudD8K
ICAgICBGcmFtZUxvYWRlckNsaWVudCYgZnJhbWVMb2FkZXJDbGllbnQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgV2ViRnJhbWUqIGtpdChGcmFtZSogZnJh
bWUpCiBGcmFtZSogY29yZShXZWJGcmFtZSogd2ViRnJhbWUpCiB7CiAgICAgaWYgKCF3ZWJGcmFt
ZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biB3ZWJGcmFtZS0+aW1wbCgpOwogfQogCkBAIC0xNjgsMTYgKzE2OCwxNiBAQCBGcmFtZSogY29y
ZShXZWJGcmFtZSogd2ViRnJhbWUpCiBGcmFtZSogY29yZShjb25zdCBXZWJGcmFtZSogd2ViRnJh
bWUpCiB7CiAgICAgaWYgKCF3ZWJGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBjb25zdF9jYXN0PFdlYkZyYW1lKj4od2ViRnJhbWUp
LT5pbXBsKCk7CiB9CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIEVsZW1lbnQg
KmVsZW1lbnRGcm9tRE9NRWxlbWVudChJRE9NRWxlbWVudCAqZWxlbWVudCkKK3N0YXRpYyBFbGVt
ZW50KiBlbGVtZW50RnJvbURPTUVsZW1lbnQoSURPTUVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAg
aWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBDT01QdHI8SURPTUVsZW1lbnRQcml2YXRlPiBlbGVQcml2OwogICAgIEhSRVNVTFQg
aHIgPSBlbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnRQcml2YXRlLCAodm9p
ZCoqKSAmZWxlUHJpdik7CkBAIC0yMjksMjYgKzIyOSwyMCBAQCBzdGF0aWMgSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50RnJvCiBjbGFzcyBXZWJGcmFtZTo6V2ViRnJhbWVQcml2YXRlIHsK
IHB1YmxpYzoKICAgICBXZWJGcmFtZVByaXZhdGUoKSAKLSAgICAgICAgOiBmcmFtZSgwKQotICAg
ICAgICAsIHdlYlZpZXcoMCkKICAgICB7CiAgICAgfQogCiAgICAgfldlYkZyYW1lUHJpdmF0ZSgp
IHsgfQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgeyByZXR1cm4gZnJhbWUgPyBmcmFtZS0+
dmlldygpIDogMDsgfQorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgeyByZXR1cm4gZnJhbWUg
PyBmcmFtZS0+dmlldygpIDogbnVsbHB0cjsgfQogCi0gICAgRnJhbWUqIGZyYW1lOwotICAgIFdl
YlZpZXcqIHdlYlZpZXc7CisgICAgRnJhbWUqIGZyYW1lIHsgbnVsbHB0ciB9OworICAgIFdlYlZp
ZXcqIHdlYlZpZXcgeyBudWxscHRyIH07CiB9OwogCiAvLyBXZWJGcmFtZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdl
YkZyYW1lOjpXZWJGcmFtZSgpCi0gICAgOiBtX3JlZkNvdW50KDApCi0gICAgLCBkKG5ldyBXZWJG
cmFtZTo6V2ViRnJhbWVQcml2YXRlKQotICAgICwgbV9xdWlja1JlZGlyZWN0Q29taW5nKGZhbHNl
KQotICAgICwgbV9pblByaW50aW5nTW9kZShmYWxzZSkKLSAgICAsIG1fcGFnZUhlaWdodCgwKQor
ICAgIDogZChuZXcgV2ViRnJhbWU6OldlYkZyYW1lUHJpdmF0ZSkKIHsKICAgICBXZWJGcmFtZUNv
dW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTI3MCw4ICsyNjQsNyBAQCBXZWJGcmFtZSog
V2ViRnJhbWU6OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNldEFsbG93c1Njcm9sbGluZygKLSAg
ICAvKiBbaW5dICovIEJPT0wgZmxhZykKK0hSRVNVTFQgV2ViRnJhbWU6OnNldEFsbG93c1Njcm9s
bGluZyhCT09MIGZsYWcpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvcmUodGhpcykpCiAg
ICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKQpAQCAtMjgwLDQ0ICsy
NzMsNDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2V0QQogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjphbGxv
d3NTY3JvbGxpbmcoCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpmbGFnKQorSFJFU1VM
VCBXZWJGcmFtZTo6YWxsb3dzU2Nyb2xsaW5nKF9PdXRfIEJPT0wqIGZsYWcpCiB7Ci0gICAgaWYg
KGZsYWcpCi0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb3JlKHRoaXMpKQotICAgICAgICAg
ICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICAgICAg
KmZsYWcgPSB2aWV3LT5jYW5IYXZlU2Nyb2xsYmFycygpOworICAgIGlmICghZmxhZykKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgICpmbGFnID0gRkFMU0U7CisKKyAgICBpZiAoRnJh
bWUqIGZyYW1lID0gY29yZSh0aGlzKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgICpmbGFnID0gdmlldy0+Y2FuSGF2ZVNjcm9sbGJh
cnMoKTsKKyAgICB9CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6c2V0SXNEaXNjb25uZWN0ZWQoCi0gICAgLyogW2luXSAqLyBCT09M
IGZsYWcpCitIUkVTVUxUIFdlYkZyYW1lOjpzZXRJc0Rpc2Nvbm5lY3RlZChCT09MIGZsYWcpCiB7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfRkFJTDsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2V0RXhjbHVkZUZyb21UZXh0U2VhcmNo
KAotICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKQorSFJFU1VMVCBXZWJGcmFtZTo6c2V0RXhjbHVk
ZUZyb21UZXh0U2VhcmNoKEJPT0wgZmxhZykKIHsKLSAgICByZXR1cm4gRV9GQUlMOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIEhSRVNVTFQg
V2ViRnJhbWU6OnJlbG9hZEZyb21PcmlnaW4oKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOwor
ICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5y
ZWxvYWQodHJ1ZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViRnJhbWU6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KFJFQ1QgcmVjdCwgSERDIGRldmljZUNvbnRleHQpCitI
UkVTVUxUIFdlYkZyYW1lOjpwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNUIHJlY3QsIF9J
bl8gSERDIGRldmljZUNvbnRleHQpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhp
cyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAg
IHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUt
PnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0zNDQsMTEgKzM0MSwxMSBAQCBIUkVTVUxUIFdl
YkZyYW1lOjpwYWludERvY3VtZW50UmVjdFRvQ29uCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgV2ViRnJhbWU6OnBhaW50U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KFJFQ1Qg
cmVjdCwgUE9JTlQgcHQsIEhEQyBkZXZpY2VDb250ZXh0KQorSFJFU1VMVCBXZWJGcmFtZTo6cGFp
bnRTY3JvbGxWaWV3UmVjdFRvQ29udGV4dEF0UG9pbnQoUkVDVCByZWN0LCBQT0lOVCBwdCwgX0lu
XyBIREMgZGV2aWNlQ29udGV4dCkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlz
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFtZS0+
dmlldygpOwogICAgIGlmICghdmlldykKQEAgLTM3MiwxNSArMzY5LDE5IEBAIEhSRVNVTFQgV2Vi
RnJhbWU6OnBhaW50U2Nyb2xsVmlld1JlY3RUb0MKIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpRdWVyeUludGVyZmFjZShSRUZJ
SUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViRnJhbWU6OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewot
ICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBfX3V1aWRvZihXZWJGcmFtZSkpKQogICAgICAgICAqcHB2T2JqZWN0ID0gdGhpczsK
ICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQotICAgICAgICAq
cHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkZyYW1lKj4odGhpcyk7CisgICAgICAgICpwcHZP
YmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViRnJhbWUyKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNF
cXVhbEdVSUQocmlpZCwgSUlEX0lXZWJGcmFtZSkpCi0gICAgICAgICpwcHZPYmplY3QgPSBzdGF0
aWNfY2FzdDxJV2ViRnJhbWUqPih0aGlzKTsKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19j
YXN0PElXZWJGcmFtZTIqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJ
SURfSVdlYkZyYW1lMikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViRnJh
bWUyKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJGcmFt
ZVByaXZhdGUpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkZyYW1lUHJp
dmF0ZSo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViRG9j
dW1lbnRUZXh0KSkKQEAgLTM5MiwxMiArMzkzLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OlF1ZXIKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRnJhbWU6OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViRnJhbWU6OkFkZFJlZigp
CiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYkZyYW1lOjpSZWxlYXNlKHZvaWQp
CiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpA
QCAtNDA4LDI4ICs0MDksMjggQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OlJl
bGVhcwogCiAvLyBJV2ViRnJhbWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkZyYW1lOjpuYW1lKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZyYW1l
TmFtZSkKK0hSRVNVTFQgV2ViRnJhbWU6Om5hbWUoX0RlcmVmX29wdF9vdXRfIEJTVFIqIGZyYW1l
TmFtZSkKIHsKICAgICBpZiAoIWZyYW1lTmFtZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICB9CiAKLSAgICAqZnJhbWVOYW1l
ID0gMDsKKyAgICAqZnJhbWVOYW1lID0gbnVsbHB0cjsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlM
OworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgKmZyYW1lTmFtZSA9IEJTdHJp
bmcoY29yZUZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OndlYlZpZXco
IAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlZpZXcqKiB2aWV3KQorSFJFU1VMVCBXZWJG
cmFtZTo6d2ViVmlldyhfQ09NX091dHB0cl9vcHRfIElXZWJWaWV3KiogdmlldykKIHsKLSAgICAq
dmlldyA9IDA7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICp2aWV3ID0gbnVsbHB0cjsKICAgICBpZiAoIWQtPndlYlZpZXcpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAgICAgKnZpZXcgPSBkLT53ZWJWaWV3OwpAQCAtNDM3LDU4ICs0MzgsNjQgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6d2ViVgogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpmcmFtZVZpZXcoCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJV2ViRnJhbWVWaWV3KiogLyp2aWV3Ki8pCitIUkVTVUxUIFdl
YkZyYW1lOjpmcmFtZVZpZXcoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWVWaWV3KiogdmlldykK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisgICAgKnZpZXcgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OkRPTURvY3VtZW50
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCoqIHJlc3VsdCkKK0hSRVNV
TFQgV2ViRnJhbWU6OkRPTURvY3VtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTURvY3VtZW50Kiog
cmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAgICpyZXN1bHQgPSAw
OworICAgICpyZXN1bHQgPSBudWxscHRyOwogCi0gICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKHRoaXMpKQotICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5k
b2N1bWVudCgpKQotICAgICAgICAgICAgKnJlc3VsdCA9IERPTURvY3VtZW50OjpjcmVhdGVJbnN0
YW5jZShkb2N1bWVudCk7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CisgICAg
aWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisKKyAgICBpZiAo
RG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAqcmVz
dWx0ID0gRE9NRG9jdW1lbnQ6OmNyZWF0ZUluc3RhbmNlKGRvY3VtZW50KTsKIAogICAgIHJldHVy
biAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIAogCi1IUkVTVUxUIFdlYkZyYW1lOjpET01X
aW5kb3coLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NV2luZG93Kiogd2luZG93KQorSFJFU1VMVCBX
ZWJGcmFtZTo6RE9NV2luZG93KF9DT01fT3V0cHRyX29wdF8gSURPTVdpbmRvdyoqIHdpbmRvdykK
IHsKICAgICBpZiAoIXdpbmRvdykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICB9CiAKLSAgICAqd2luZG93ID0gMDsKKyAgICAq
d2luZG93ID0gbnVsbHB0cjsKIAotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlz
KSkgewotICAgICAgICBpZiAoV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlV2luZG93ID0gY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkKLSAgICAgICAgICAgICp3aW5kb3cgPSA6OkRP
TVdpbmRvdzo6Y3JlYXRlSW5zdGFuY2UoY29yZVdpbmRvdyk7Ci0gICAgfQorICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOworCisgICAgaWYgKFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZVdpbmRv
dyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCisgICAgICAgICp3aW5kb3cg
PSA6OkRPTVdpbmRvdzo6Y3JlYXRlSW5zdGFuY2UoY29yZVdpbmRvdyk7CiAKICAgICByZXR1cm4g
KndpbmRvdyA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRnJhbWU6OmZyYW1lRWxlbWVudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NSFRN
TEVsZW1lbnQqKiBmcmFtZUVsZW1lbnQpCitIUkVTVUxUIFdlYkZyYW1lOjpmcmFtZUVsZW1lbnQo
X0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTEVsZW1lbnQqKiBmcmFtZUVsZW1lbnQpCiB7CiAgICAg
aWYgKCFmcmFtZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqZnJh
bWVFbGVtZW50ID0gMDsKKyAgICAqZnJhbWVFbGVtZW50ID0gbnVsbHB0cjsKKwogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgQ09NUHRy
PElET01FbGVtZW50PiBkb21FbGVtZW50KEFkb3B0Q09NLCBET01FbGVtZW50OjpjcmVhdGVJbnN0
YW5jZShjb3JlRnJhbWUtPm93bmVyRWxlbWVudCgpKSk7CiAgICAgQ09NUHRyPElET01IVE1MRWxl
bWVudD4gaHRtbEVsZW1lbnQoUXVlcnksIGRvbUVsZW1lbnQpOwpAQCAtNDk3LDI5ICs1MDQsMzAg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6ZnJhbQogICAgIHJldHVybiBo
dG1sRWxlbWVudC5jb3B5UmVmVG8oZnJhbWVFbGVtZW50KTsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6Y3VycmVudEZvcm0oIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01FbGVtZW50ICoqY3VycmVudEZvcm0pCitIUkVTVUxUIFdlYkZyYW1lOjpjdXJy
ZW50Rm9ybShfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiogY3VycmVudEZvcm0pCiB7CiAg
ICAgaWYgKCFjdXJyZW50Rm9ybSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICB9CiAKLSAgICAqY3VycmVudEZvcm0gPSAwOwor
ICAgICpjdXJyZW50Rm9ybSA9IG51bGxwdHI7CiAKLSAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUodGhpcykpIHsKLSAgICAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQg
PSBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmN1cnJlbnRGb3JtKCkpCi0gICAgICAgICAgICAqY3Vy
cmVudEZvcm0gPSBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZShmb3JtRWxlbWVudCk7Ci0gICAg
fQorICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghY29yZUZyYW1l
KQorICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworCisgICAgaWYgKEhUTUxGb3JtRWxlbWVu
dCogZm9ybUVsZW1lbnQgPSBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmN1cnJlbnRGb3JtKCkpCisg
ICAgICAgICpjdXJyZW50Rm9ybSA9IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKGZvcm1FbGVt
ZW50KTsKIAogICAgIHJldHVybiAqY3VycmVudEZvcm0gPyBTX09LIDogRV9GQUlMOwogfQogCi1K
U0dsb2JhbENvbnRleHRSZWYgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6Omdsb2JhbENvbnRl
eHQoKQorSlNHbG9iYWxDb250ZXh0UmVmIFdlYkZyYW1lOjpnbG9iYWxDb250ZXh0KCkKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHRv
R2xvYmFsUmVmKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpKTsKIH0KQEAgLTUzNyw5ICs1NDUsMTEgQEAgSlNHbG9i
YWxDb250ZXh0UmVmIFdlYkZyYW1lOjpnbG9iYWxDb250ZQogICAgIHJldHVybiB0b0dsb2JhbFJl
Zihjb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZC0+d29ybGQoKSktPmdsb2Jh
bEV4ZWMoKSk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmxvYWRS
ZXF1ZXN0KCAKLSAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQorSFJFU1VM
VCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3Qp
CiB7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm4gU19PSzsKKwogICAgIENPTVB0
cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdEltcGw7CiAKICAgICBIUkVTVUxUIGhyID0g
cmVxdWVzdC0+UXVlcnlJbnRlcmZhY2UoJnJlcXVlc3RJbXBsKTsKQEAgLTU0OCw3ICs1NTgsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpsb2FkCiAgCiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBjb3JlRnJh
bWUtPmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3RJbXBs
LT5yZXNvdXJjZVJlcXVlc3QoKSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3cpKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTU3OCwxMiArNTg4LDcgQEAgdm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUGFzc1JlZlB0cjxXZWJDbwogICAgICAgICBjb3JlRnJhbWUtPmxv
YWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3QsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBzdWJzdGl0dXRlRGF0YSkpOwog
fQogCi0KLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmxvYWREYXRhKCAKLSAg
ICAvKiBbaW5dICovIElTdHJlYW0qIGRhdGEsCi0gICAgLyogW2luXSAqLyBCU1RSIG1pbWVUeXBl
LAotICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLAotICAgIC8qIFtpbl0gKi8g
QlNUUiB1cmwpCitIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBk
YXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5f
IEJTVFIgdXJsKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAKQEAgLTU5OSw3MCArNjA0LDYxIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmxvYWQKICAgICAgICAgfQogICAgIH0KIAotICAgIGxv
YWREYXRhKHNoYXJlZEJ1ZmZlciwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgMCk7
CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwg
dXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJGcmFtZTo6
bG9hZFBsYWluVGV4dFN0cmluZygKLSAgICAvKiBbaW5dICovIEJTVFIgc3RyaW5nLAotICAgIC8q
IFtpbl0gKi8gQlNUUiB1cmwpCitIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5n
KF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oc3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihzdHJpbmcp
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIp
ICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwogICAgIEJTdHJpbmcgcGxhaW5UZXh0TWltZVR5
cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRF
WFQoInV0Zi0xNiIpLCA2KTsKLSAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIucmVsZWFzZSgpLCBw
bGFpblRleHRNaW1lVHlwZSwgdXRmMTZFbmNvZGluZywgdXJsLCAwKTsKKyAgICBsb2FkRGF0YShz
aGFyZWRCdWZmZXIucmVsZWFzZSgpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRmMTZFbmNvZGluZywg
dXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9h
ZEhUTUxTdHJpbmcoQlNUUiBzdHJpbmcsIEJTVFIgYmFzZVVSTCwgQlNUUiB1bnJlYWNoYWJsZVVS
TCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBf
SW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4o
c3RyaW5nKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVv
ZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4oaHRtbFN0cmluZykpOwogICAgIEJTdHJpbmcgdXRmMTZF
bmNvZGluZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnJl
bGVhc2UoKSwgMCwgdXRmMTZFbmNvZGluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyggCi0g
ICAgLyogW2luXSAqLyBCU1RSIHN0cmluZywKLSAgICAvKiBbaW5dICovIEJTVFIgYmFzZVVSTCkK
K0hSRVNVTFQgV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBf
SW5fIEJTVFIgYmFzZVVSTCkKIHsKLSAgICBsb2FkSFRNTFN0cmluZyhzdHJpbmcsIGJhc2VVUkws
IDApOworICAgIGxvYWRIVE1MU3RyaW5nKGh0bWxTdHJpbmcsIGJhc2VVUkwsIG51bGxwdHIpOwog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyggCi0gICAgLyogW2luXSAqLyBCU1RSIHN0ciwKLSAg
ICAvKiBbaW5dICovIEJTVFIgYmFzZVVSTCwKLSAgICAvKiBbaW5dICovIEJTVFIgdW5yZWFjaGFi
bGVVUkwpCitIUkVTVUxUIFdlYkZyYW1lOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhfSW5fIEJT
VFIgc3RyLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKQogewog
ICAgIGxvYWRIVE1MU3RyaW5nKHN0ciwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpsb2Fk
QXJjaGl2ZSggCi0gICAgLyogW2luXSAqLyBJV2ViQXJjaGl2ZSogLyphcmNoaXZlKi8pCitIUkVT
VUxUIFdlYkZyYW1lOjpsb2FkQXJjaGl2ZShfSW5fb3B0XyBJV2ViQXJjaGl2ZSogLyphcmNoaXZl
Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpnZXRXZWJEYXRhU291cmNlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UqIGdldFdlYkRh
dGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICByZXR1cm4gbG9hZGVyID8g
c3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihsb2FkZXIpLT5kYXRhU291cmNlKCkgOiAw
OworICAgIHJldHVybiBsb2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGxv
YWRlciktPmRhdGFTb3VyY2UoKSA6IG51bGxwdHI7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OmRhdGFTb3VyY2UoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdl
YkRhdGFTb3VyY2UqKiBzb3VyY2UpCitIUkVTVUxUIFdlYkZyYW1lOjpkYXRhU291cmNlKF9DT01f
T3V0cHRyX29wdF8gSVdlYkRhdGFTb3VyY2UqKiBzb3VyY2UpCiB7CiAgICAgaWYgKCFzb3VyY2Up
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAgICAgfQogCi0gICAgKnNvdXJjZSA9IDA7CisgICAgKnNvdXJjZSA9IG51bGxwdHI7CiAK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkK
LSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAog
ICAgIFdlYkRhdGFTb3VyY2UqIHdlYkRhdGFTb3VyY2UgPSBnZXRXZWJEYXRhU291cmNlKGNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CiAKQEAgLTY3NCwxOSArNjcwLDE4IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmRhdGEKICAgICByZXR1cm4gKnNv
dXJjZSA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RnJhbWU6OnByb3Zpc2lvbmFsRGF0YVNvdXJjZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
V2ViRGF0YVNvdXJjZSoqIHNvdXJjZSkKK0hSRVNVTFQgV2ViRnJhbWU6OnByb3Zpc2lvbmFsRGF0
YVNvdXJjZShfQ09NX091dHB0cl9vcHRfIElXZWJEYXRhU291cmNlKiogc291cmNlKQogewogICAg
IGlmICghc291cmNlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAgICpzb3VyY2UgPSAwOworICAgICpzb3VyY2Ug
PSBudWxscHRyOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYg
KCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VO
RVhQRUNURUQ7CiAKICAgICBXZWJEYXRhU291cmNlKiB3ZWJEYXRhU291cmNlID0gZ2V0V2ViRGF0
YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7
CiAKQEAgLTcwNywzNyArNzAyLDM1IEBAIFVSTCBXZWJGcmFtZTo6dXJsKCkgY29uc3QKICAgICBy
ZXR1cm4gY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6c3RvcExvYWRpbmcoIHZvaWQpCitIUkVTVUxUIFdlYkZyYW1l
OjpzdG9wTG9hZGluZygpCiB7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMp
KQogICAgICAgICBjb3JlRnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnJlbG9h
ZCggdm9pZCkKK0hSRVNVTFQgV2ViRnJhbWU6OnJlbG9hZCgpCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBF
X0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBjb3JlRnJhbWUtPmxv
YWRlcigpLnJlbG9hZCgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1lZCggCi0gICAgLyogW2luXSAqLyBCU1RS
IG5hbWUsCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViRnJhbWUqKiBmcmFtZSkKK0hSRVNV
TFQgV2ViRnJhbWU6OmZpbmRGcmFtZU5hbWVkKF9Jbl8gQlNUUiBuYW1lLCBfQ09NX091dHB0cl9v
cHRfIElXZWJGcmFtZSoqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgfQogCi0g
ICAgKmZyYW1lID0gMDsKKyAgICAqZnJhbWUgPSBudWxscHRyOwogCiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBF
X0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBGcmFtZSogZm91bmRG
cmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLmZpbmQoQXRvbWljU3RyaW5nKG5hbWUsIFN5c1N0cmlu
Z0xlbihuYW1lKSkpOwogICAgIGlmICghZm91bmRGcmFtZSkKQEAgLTc1MCwxMSArNzQzLDE0IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmZpbmQKICAgICByZXR1cm4gZm91
bmRXZWJGcmFtZS0+UXVlcnlJbnRlcmZhY2UoSUlEX0lXZWJGcmFtZSwgKHZvaWQqKilmcmFtZSk7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBhcmVudEZyYW1lKCAK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJGcmFtZSoqIGZyYW1lKQorSFJFU1VMVCBXZWJG
cmFtZTo6cGFyZW50RnJhbWUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWUqKiBmcmFtZSkKIHsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgKmZyYW1l
ID0gbnVsbHB0cjsKKwogICAgIEhSRVNVTFQgaHIgPSBTX09LOwotICAgICpmcmFtZSA9IDA7CiAg
ICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpKQogICAgICAgICBpZiAoV2ViRnJh
bWUqIHdlYkZyYW1lID0ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLnBhcmVudCgpKSkKICAgICAgICAg
ICAgIGhyID0gd2ViRnJhbWUtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViRnJhbWUsICh2b2lkKiop
IGZyYW1lKTsKQEAgLTc2NSwxMSArNzYxLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRnJhbWU6OnBhcmUKIGNsYXNzIEVudW1DaGlsZEZyYW1lcyA6IHB1YmxpYyBJRW51bVZBUklB
TlQKIHsKIHB1YmxpYzoKLSAgICBFbnVtQ2hpbGRGcmFtZXMoRnJhbWUqIGYpIDogbV9yZWZDb3Vu
dCgxKSwgbV9mcmFtZShmKSwgbV9jdXJDaGlsZChmID8gZi0+dHJlZSgpLmZpcnN0Q2hpbGQoKSA6
IDApIHsgfQorICAgIEVudW1DaGlsZEZyYW1lcyhGcmFtZSogZikKKyAgICAgICAgOiBtX2ZyYW1l
KGYpLCBtX2N1ckNoaWxkKGYgPyBmLT50cmVlKCkuZmlyc3RDaGlsZCgpIDogbnVsbHB0cikKKyAg
ICB7CisgICAgfQogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKICAgICB7Ci0gICAgICAgICpwcHZPYmplY3Qg
PSAwOworICAgICAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9JVW5rbm93bikgfHwgSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lFbnVtVkFS
SUFOVCkpCiAgICAgICAgICAgICAqcHB2T2JqZWN0ID0gdGhpczsKICAgICAgICAgZWxzZQpAQCAt
Nzc5LDcgKzc3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkKKyAgICB2aXJ0
dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpCiAgICAgewogICAgICAgICByZXR1
cm4gKyttX3JlZkNvdW50OwogICAgIH0KQEAgLTg0MiwxMyArODQxLDEyIEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNv
dW50IHsgMSB9OwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIEZyYW1lKiBtX2N1ckNoaWxkOwog
fTsKIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMoIAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSUVudW1WQVJJQU5UICoqZW51bUZyYW1lcykKK0hSRVNV
TFQgV2ViRnJhbWU6OmNoaWxkRnJhbWVzKF9DT01fT3V0cHRyX29wdF8gSUVudW1WQVJJQU5UKiog
ZW51bUZyYW1lcykKIHsKICAgICBpZiAoIWVudW1GcmFtZXMpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CkBAIC04NTksNDQgKzg1NywzNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpjaGlsCiAKIC8vIElXZWJGcmFtZVByaXZhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgV2ViRnJhbWU6OnJl
bmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb24oQk9PTCBmb3JQcmludGluZywgQlNUUiAq
cmVzdWx0KQorSFJFU1VMVCBXZWJGcmFtZTo6cmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihCT09MIGZvclByaW50aW5nLCBfRGVyZWZfb3B0X291dF8gQlNUUiogcmVzdWx0KQogewog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICAqcmVzdWx0
ID0gQlN0cmluZyhleHRlcm5hbFJlcHJlc2VudGF0aW9uKGNvcmVGcmFtZSwgZm9yUHJpbnRpbmcg
PyBSZW5kZXJBc1RleHRQcmludGluZ01vZGUgOiBSZW5kZXJBc1RleHRCZWhhdmlvck5vcm1hbCkp
LnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJGcmFtZTo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKAotICAgIC8qIFtpbl0gKi8g
QlNUUiBpZCwKLSAgICAvKiBbaW5dICovIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLAotICAgIC8q
IFtpbl0gKi8gZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzLAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gaW50KiByZXN1bHQpCitIUkVTVUxUIFdlYkZyYW1lOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQoX0luXyBCU1RSIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdo
dEluUGl4ZWxzLCBfT3V0XyBpbnQqIHBhZ2VOdW1iZXIpCiB7CiAgICAgLy8gVE9ETzogUGxlYXNl
IHJlbW92ZSB0aGlzIGZ1bmN0aW9uIGlmIG5vdCBuZWVkZWQgYXMgdGhpcyBpcyBMVEMgc3BlY2lm
aWMgZnVuY3Rpb24KICAgICAvLyBhbmQgaGFzIGJlZW4gbW92ZWQgdG8gSW50ZXJuYWxzLgotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEVfRkFJTDsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkZyYW1lOjpudW1iZXJPZlBhZ2VzKAotICAgIC8qIFtpbl0gKi8gZmxvYXQgcGFn
ZVdpZHRoSW5QaXhlbHMsCi0gICAgLyogW2luXSAqLyBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMs
Ci0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6
Om51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJ
blBpeGVscywgX091dF8gaW50KiBwYWdlQ291bnQpCiB7CiAgICAgLy8gVE9ETzogUGxlYXNlIHJl
bW92ZSB0aGlzIGZ1bmN0aW9uIGlmIG5vdCBuZWVkZWQgYXMgdGhpcyBpcyBMVEMgc3BlY2lmaWMg
ZnVuY3Rpb24KICAgICAvLyBhbmQgaGFzIGJlZW4gbW92ZWQgdG8gSW50ZXJuYWxzLgotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEVfRkFJTDsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkZyYW1lOjpzY3JvbGxPZmZzZXQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
U0laRSogb2Zmc2V0KQorSFJFU1VMVCBXZWJGcmFtZTo6c2Nyb2xsT2Zmc2V0KF9PdXRfIFNJWkUq
IG9mZnNldCkKIHsKICAgICBpZiAoIW9mZnNldCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTkwNSw3ICs4OTUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZy
YW1lOjpzY3JvCiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAo
IWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5F
WFBFQ1RFRDsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwogICAg
IGlmICghdmlldykKQEAgLTkxNSwxMSArOTA1LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OnNjcm8KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6bGF5b3V0KCkKK0hSRVNVTFQgV2ViRnJhbWU6OmxheW91dCgp
CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7
CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCkBAIC05MjksMjYgKzkxOSwyNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZy
YW1lOjpsYXlvCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OmZpcnN0TGF5b3V0RG9uZSgKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6OmZpcnN0TGF5b3V0RG9uZShfT3V0XyBCT09M
KiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgfQogCi0gICAgKnJlc3VsdCA9
IDA7CisgICAgKnJlc3VsdCA9IEZBTFNFOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
dGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAg
ICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICAqcmVzdWx0ID0gY29yZUZyYW1lLT5sb2Fk
ZXIoKS5zdGF0ZU1hY2hpbmUoKS5maXJzdExheW91dERvbmUoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6cGVuZGluZ0ZyYW1lVW5s
b2FkRXZlbnRDb3VudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UKiByZXN1bHQpCitI
UkVTVUxUIFdlYkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KF9PdXRfIFVJTlQq
IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTk1OSwzOCArOTQ3LDM1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RnJhbWU6OnBlbmQKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlm
ICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9V
TkVYUEVDVEVEOwogCiAgICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtl
cigKLSAgICAgICAgLyogW2luXSAqLyBVSU5UIGZyb20sCi0gICAgICAgIC8qIFtpbl0gKi8gVUlO
VCBsZW5ndGgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQorSFJF
U1VMVCBXZWJGcmFtZTo6aGFzU3BlbGxpbmdNYXJrZXIoVUlOVCBmcm9tLCBVSU5UIGxlbmd0aCwg
Qk9PTCogcmVzdWx0KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAg
IGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogICAgICpyZXN1bHQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLnNlbGVjdGlv
blN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3Ro
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJG
cmFtZTo6Y2xlYXJPcGVuZXIoKQorSFJFU1VMVCBXZWJGcmFtZTo6Y2xlYXJPcGVuZXIoKQogewog
ICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZSh0
aGlzKSkKLSAgICAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIoMCk7CisgICAgICAg
IGNvcmVGcmFtZS0+bG9hZGVyKCkuc2V0T3BlbmVyKG51bGxwdHIpOwogCiAgICAgcmV0dXJuIGhy
OwogfQogCi1IUkVTVUxUIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKEJTVFIgZGlyZWN0aW9u
KQorSFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihfSW5fIEJTVFIgZGlyZWN0aW9u
KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZy
YW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OwogCiAgICAgU3RyaW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24sIFN5c1N0cmluZ0xlbihk
aXJlY3Rpb24pKTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJhdXRvIikKQEAgLTEwMDQs
MjEgKzk4OSwyMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKEJTVFIKIAog
Ly8gSVdlYkRvY3VtZW50VGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZy
YW1lOjpzdXBwb3J0c1RleHRFbmNvZGluZyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiByZXN1bHQpCitIUkVTVUxUIFdlYkZyYW1lOjpzdXBwb3J0c1RleHRFbmNvZGluZyhfT3V0XyBC
T09MKiByZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IEZBTFNFOwogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNlbGVjdGVkU3Ry
aW5nKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2Vi
RnJhbWU6OnNlbGVjdGVkU3RyaW5nKF9EZXJlZl9vcHRfb3V0XyBCU1RSKiByZXN1bHQpCiB7Ci0g
ICAgKnJlc3VsdCA9IDA7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAg
ICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIFN0cmluZyB0ZXh0ID0gY29yZUZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCkpOwogCkBAIC0xMDI2LDExICsxMDExLDExIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRnJhbWU6OnNlbGUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZWN0QWxsKCkKK0hSRVNVTFQgV2ViRnJhbWU6
OnNlbGVjdEFsbCgpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAg
aWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBF
X1VORVhQRUNURUQ7CiAKICAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2Vs
ZWN0QWxsIikuZXhlY3V0ZSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTAzOCw3ICsx
MDIzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZQogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpkZXNl
bGVjdEFsbCgpCitIUkVTVUxUIFdlYkZyYW1lOjpkZXNlbGVjdEFsbCgpCiB7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KQEAgLTExMzUsNyArMTEyMCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmZv
cm1Gb3JFbGVtZW50KElET01FbGUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJG
cmFtZTo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGUoSURPTUVsZW1lbnQgKmVsZW1lbnQsIEJPT0wg
KnJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKF9Jbl9v
cHRfIElET01FbGVtZW50ICplbGVtZW50LCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgKnJl
c3VsdCA9IGZhbHNlOwogICAgIGlmICghZWxlbWVudCkKQEAgLTExNTAsMjcgKzExMzUsMjcgQEAg
SFJFU1VMVCBXZWJGcmFtZTo6ZWxlbWVudERvZXNBdXRvQ29tcGxldAogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpyZXN1bWVBbmltYXRp
b25zKCkKK0hSRVNVTFQgV2ViRnJhbWU6OnJlc3VtZUFuaW1hdGlvbnMoKQogewogICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEVf
RkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIGZyYW1lLT5hbmltYXRp
b24oKS5yZXN1bWVBbmltYXRpb25zKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnN1c3BlbmRBbmltYXRpb25zKCkKK0hSRVNVTFQg
V2ViRnJhbWU6OnN1c3BlbmRBbmltYXRpb25zKCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHRoaXMpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAg
IHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBmcmFtZS0+YW5pbWF0aW9uKCkuc3VzcGVuZEFu
aW1hdGlvbnMoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJGcmFtZTo6cGF1
c2VBbmltYXRpb24oQlNUUiBhbmltYXRpb25OYW1lLCBJRE9NTm9kZSogbm9kZSwgZG91YmxlIHNl
Y29uZHNGcm9tTm93LCBCT09MKiBhbmltYXRpb25XYXNSdW5uaW5nKQorSFJFU1VMVCBXZWJGcmFt
ZTo6cGF1c2VBbmltYXRpb24oX0luXyBCU1RSIGFuaW1hdGlvbk5hbWUsIF9Jbl9vcHRfIElET01O
b2RlKiBub2RlLCBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIF9PdXRfIEJPT0wqIGFuaW1hdGlvbldh
c1J1bm5pbmcpCiB7CiAgICAgaWYgKCFub2RlIHx8ICFhbmltYXRpb25XYXNSdW5uaW5nKQogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTE3OSw3ICsxMTY0LDcgQEAgSFJFU1VMVCBXZWJG
cmFtZTo6cGF1c2VBbmltYXRpb24oQlNUUiBhbgogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh0
aGlzKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICBy
ZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgQ09NUHRyPERPTU5vZGU+IGRvbU5vZGUoUXVlcnks
IG5vZGUpOwogICAgIGlmICghZG9tTm9kZSkKQEAgLTExODksNyArMTE3NCw3IEBAIEhSRVNVTFQg
V2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9uKEJTVFIgYW4KICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJRE9N
Tm9kZSogbm9kZSwgZG91YmxlIHNlY29uZHNGcm9tTm93LCBCT09MKiB0cmFuc2l0aW9uV2FzUnVu
bmluZykKK0hSRVNVTFQgV2ViRnJhbWU6OnBhdXNlVHJhbnNpdGlvbihfSW5fIEJTVFIgcHJvcGVy
dHlOYW1lLCBfSW5fb3B0XyBJRE9NTm9kZSogbm9kZSwgZG91YmxlIHNlY29uZHNGcm9tTm93LCBf
T3V0XyBCT09MKiB0cmFuc2l0aW9uV2FzUnVubmluZykKIHsKICAgICBpZiAoIW5vZGUgfHwgIXRy
YW5zaXRpb25XYXNSdW5uaW5nKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTE5OCw3
ICsxMTgzLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKEJTVFIgcAogCiAg
ICAgRnJhbWUqIGZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgQ09NUHRy
PERPTU5vZGU+IGRvbU5vZGUoUXVlcnksIG5vZGUpOwogICAgIGlmICghZG9tTm9kZSkKQEAgLTEy
MDgsNyArMTE5Myw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnBhdXNlVHJhbnNpdGlvbihCU1RSIHAK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJGcmFtZTo6dmlzaWJsZUNvbnRlbnRS
ZWN0KFJFQ1QqIHJlY3QpCitIUkVTVUxUIFdlYkZyYW1lOjp2aXNpYmxlQ29udGVudFJlY3QoX091
dF8gUkVDVCogcmVjdCkKIHsKICAgICBpZiAoIXJlY3QpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CkBAIC0xMjE2LDcgKzEyMDEsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjp2aXNpYmxlQ29udGVu
dFJlY3QoUkVDCiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7
CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgIGlmICghdmlldykK
QEAgLTEyMjYsNyArMTIxMSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnZpc2libGVDb250ZW50UmVj
dChSRUMKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJGcmFtZTo6bnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zKFVJTlQqIG51bWJlcikKK0hSRVNVTFQgV2ViRnJhbWU6Om51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucyhfT3V0XyBVSU5UKiBudW1iZXIpCiB7CiAgICAgaWYgKCFudW1iZXIp
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMjM1LDEzICsxMjIwLDEzIEBAIEhSRVNV
TFQgV2ViRnJhbWU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW8KIAogICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUodGhpcyk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAg
ICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgICpudW1iZXIgPSBmcmFtZS0+YW5pbWF0
aW9uKCkubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJGcmFtZTo6aXNEaXNwbGF5aW5nU3RhbmRhbG9u
ZUltYWdlKEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6OmlzRGlzcGxheWluZ1N0YW5k
YWxvbmVJbWFnZShfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMjUwLDE0ICsxMjM1LDE0IEBAIEhSRVNVTFQgV2Vi
RnJhbWU6OmlzRGlzcGxheWluZ1N0YW5kYWxvbmUKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
dGhpcyk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpOwogICAgICpyZXN1bHQgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+aXNJbWFnZURv
Y3VtZW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViRnJhbWU6OmFsbG93
c0ZvbGxvd2luZ0xpbmsoQlNUUiB1cmwsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6
OmFsbG93c0ZvbGxvd2luZ0xpbmsoX0luXyBCU1RSIHVybCwgX091dF8gQk9PTCogcmVzdWx0KQog
ewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTI2Niw3
ICsxMjUxLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayhCUwogCiAg
ICAgRnJhbWUqIGZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgKnJlc3Vs
dCA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTEz
MjcsNyArMTMxMiw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUUK
IAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1l
KQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwog
CiAgICAgVmVjdG9yPFN0cmluZz4gbGFiZWxTdHJpbmdzKGNMYWJlbHMpOwogICAgIGZvciAoaW50
IGk9MDsgaTxjTGFiZWxzOyBpKyspCkBAIC0xMzY3LDcgKzEzNTIsNyBAQCBIUkVTVUxUIFdlYkZy
YW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtCiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAg
ICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxhYmVsU3Ry
aW5ncyhjTGFiZWxzKTsKICAgICBmb3IgKGludCBpPTA7IGk8Y0xhYmVsczsgaSsrKQpAQCAtMTQw
NiwxNSArMTM5MSwxNSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpjYW5Qcm92aWRlRG9jdW1lbnRTb3Vy
CiAgICAgcmV0dXJuIGhyOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpsYXllclRyZWVBc1RleHQoQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJGcmFtZTo6bGF5ZXJU
cmVlQXNUZXh0KF9EZXJlZl9vdXRfb3B0XyBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKnJlc3VsdCA9IDA7CisgICAgKnJl
c3VsdCA9IG51bGxwdHI7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAKICAgICBTdHJpbmcgdGV4dCA9IGZyYW1lLT5sYXllclRyZWVBc1RleHQoKTsKICAg
ICAqcmVzdWx0ID0gQlN0cmluZyh0ZXh0KS5yZWxlYXNlKCk7CkBAIC0xNDQ0LDE1ICsxNDI5LDE2
IEBAIHZvaWQgV2ViRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcKICAgICBjb3JlRnJh
bWUtPnNldFByaW50aW5nKHByaW50aW5nLCBwYWdlU2l6ZSwgb3JpZ2luYWxQYWdlU2l6ZSwgbWF4
aW11bVNocmlua1JhdGlvLCBhZGp1c3RWaWV3U2l6ZSA/IEFkanVzdFZpZXdTaXplIDogRG9Ob3RB
ZGp1c3RWaWV3U2l6ZSk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6
OnNldEluUHJpbnRpbmdNb2RlKCAKLSAgICAvKiBbaW5dICovIEJPT0wgdmFsdWUsCi0gICAgLyog
W2luXSAqLyBIREMgcHJpbnREQykKK0hSRVNVTFQgV2ViRnJhbWU6OnNldEluUHJpbnRpbmdNb2Rl
KEJPT0wgdmFsdWUsIF9Jbl8gSERDIHByaW50REMpCiB7CiAgICAgaWYgKG1faW5QcmludGluZ01v
ZGUgPT0gISF2YWx1ZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZSh0aGlzKTsKLSAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5kb2N1
bWVudCgpKQorICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OworCisgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICBtX2luUHJpbnRpbmdNb2RlID0gISF2YWx1ZTsKQEAgLTE1NDksOSArMTUzNSw3
IEBAIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgV2ViRnJhbWUKICAgICByZXR1cm4g
bV9wYWdlUmVjdHM7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6Omdl
dFByaW50ZWRQYWdlQ291bnQoIAotICAgIC8qIFtpbl0gKi8gSERDIHByaW50REMsCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBVSU5UICpwYWdlQ291bnQpCitIUkVTVUxUIFdlYkZyYW1lOjpnZXRQ
cmludGVkUGFnZUNvdW50KF9Jbl8gSERDIHByaW50REMsIF9PdXRfIFVJTlQgKnBhZ2VDb3VudCkK
IHsKICAgICBpZiAoIXBhZ2VDb3VudCB8fCAhcHJpbnREQykgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTE1NjYsNyArMTU1MCwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkZyYW1lOjpnZXRQCiAgICAgfQogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
dGhpcyk7Ci0gICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKKyAg
ICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKKworICAgIGlm
ICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAg
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlcyA9IGNvbXB1dGVQYWdlUmVjdHMocHJpbnREQyk7
CkBAIC0xNzc2LDExICsxNzYzLDcgQEAgc3RhdGljIHZvaWQgc2V0Q2Fpcm9UcmFuc2Zvcm1Ub1By
ZXZpZXdIRAogCiAjZW5kaWYKIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6
c3Bvb2xQYWdlcyggCi0gICAgLyogW2luXSAqLyBIREMgcHJpbnREQywKLSAgICAvKiBbaW5dICov
IFVJTlQgc3RhcnRQYWdlLAotICAgIC8qIFtpbl0gKi8gVUlOVCBlbmRQYWdlLAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gdm9pZCogY3R4KQorSFJFU1VMVCBXZWJGcmFtZTo6c3Bvb2xQYWdlcyhI
REMgcHJpbnREQywgVUlOVCBzdGFydFBhZ2UsIFVJTlQgZW5kUGFnZSwgdm9pZCogY3R4KQogewog
I2lmIFVTRShDRykKICAgICBpZiAoIXByaW50REMgfHwgIWN0eCkgewpAQCAtMTgyNyw3ICsxODEw
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICB9CiAK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKLSAgICBpZiAoIWNvcmVGcmFtZSB8
fCAhY29yZUZyYW1lLT5kb2N1bWVudCgpKQorICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICBy
ZXR1cm4gRV9VTkVYUEVDVEVEOworCisgICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBVSU5UIHBhZ2VDb3VudCA9IChVSU5UKSBtX3Bh
Z2VSZWN0cy5zaXplKCk7CkBAIC0xODY3LDI3ICsxODUzLDM0IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aXNGcmFtZVNldCggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYkZyYW1lOjppc0ZyYW1lU2V0KF9PdXRf
IEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKwogICAgICpyZXN1bHQgPSBGQUxTRTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKHRoaXMpOwotICAgIGlmICghY29yZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmRvY3VtZW50KCkp
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisKKyAg
ICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgICpyZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSA/IFRSVUUg
OiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJGcmFtZTo6c3RyaW5nKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3Vs
dCkKK0hSRVNVTFQgV2ViRnJhbWU6OnN0cmluZyhfRGVyZWZfb3B0X291dF8gQlNUUiogcmVzdWx0
KQogewotICAgICpyZXN1bHQgPSAwOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworCisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIEVf
RkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIFJlZlB0cjxSYW5nZT4g
YWxsUmFuZ2UocmFuZ2VPZkNvbnRlbnRzKCpjb3JlRnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBT
dHJpbmcgYWxsU3RyaW5nID0gcGxhaW5UZXh0KGFsbFJhbmdlLmdldCgpKTsKQEAgLTE4OTUsOCAr
MTg4OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnN0cmkKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2l6
ZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBTSVpFICpzaXplKQorSFJFU1VMVCBXZWJGcmFt
ZTo6c2l6ZShfT3V0XyBTSVpFKiBzaXplKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKQEAgLTE5MDQsNyArMTg5Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OnNpemUKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMp
OwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICBy
ZXR1cm4gRV9VTkVYUEVDVEVEOwogICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmll
dygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTE5MTMsOCAr
MTkwNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNpemUKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFz
U2Nyb2xsQmFycyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpCitIUkVT
VUxUIFdlYkZyYW1lOjpoYXNTY3JvbGxCYXJzKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE5MjIsNyArMTkxMyw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6Omhhc1MKIAogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQpAQCAtMTkzNCw4
ICsxOTI1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFzUwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpj
b250ZW50Qm91bmRzKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFJFQ1QgKnJlc3VsdCkKK0hS
RVNVTFQgV2ViRnJhbWU6OmNvbnRlbnRCb3VuZHMoX091dF8gUkVDVCogcmVzdWx0KQogewogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTk0Myw3ICsxOTMz
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6Y29udAogCiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAg
IHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0xOTU0
LDggKzE5NDQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpjb250CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6
OmZyYW1lQm91bmRzKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFJFQ1QgKnJlc3VsdCkKK0hS
RVNVTFQgV2ViRnJhbWU6OmZyYW1lQm91bmRzKF9PdXRfIFJFQ1QqIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE5NjMsNyArMTk1Miw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmZyYW0KIAogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQpAQCAtMTk3NSw5
ICsxOTY0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6ZnJhbQogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpp
c0Rlc2NlbmRhbnRPZkZyYW1lKCAKLSAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqYW5jZXN0b3Is
Ci0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpCitIUkVTVUxUIFdlYkZyYW1l
Ojppc0Rlc2NlbmRhbnRPZkZyYW1lKF9Jbl9vcHRfIElXZWJGcmFtZSogYW5jZXN0b3IsIF9PdXRf
IEJPT0wqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKQEAgLTIxMDIsNyArMjA4OSw3IEBAIHZvaWQgV2ViRnJhbWU6OnVwZGF0ZUJhY2tncm91
bmQoKQogfQogCiAvLyBJV2ViRnJhbWUyCi1IUkVTVUxUIFdlYkZyYW1lOjppc01haW5GcmFtZShC
T09MKiB2YWx1ZSkKK0hSRVNVTFQgV2ViRnJhbWU6OmlzTWFpbkZyYW1lKF9PdXRfIEJPT0wqIHZh
bHVlKQogewogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDExLCAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTEsIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtODUsMjA3ICs4Niw4NiBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICAvLyBJ
VW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRS
ZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAog
ICAgIC8vSVdlYkZyYW1lCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5h
bWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKmZyYW1lTmFtZSk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXcoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJWaWV3ICoqdmlldyk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZnJhbWVWaWV3KAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElXZWJGcmFtZVZpZXcgKip2aWV3KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTURvY3VtZW50KiogZG9jdW1lbnQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTVdpbmRvdygvKiBbcmV0dmFsXVtvdXRdICovIElET01XaW5kb3cqKik7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZyYW1lRWxlbWVudCgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUhUTUxFbGVtZW50ICoqZnJhbWVFbGVt
ZW50KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZFJl
cXVlc3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0KTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZERhdGEoIAotICAg
ICAgICAvKiBbaW5dICovIElTdHJlYW0gKmRhdGEsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBt
aW1lVHlwZSwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHRFbmNvZGluZ05hbWUsCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBsb2FkSFRNTFN0cmluZyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBz
dHJpbmcsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBiYXNlVVJMKTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoIAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgc3RyLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgYmFz
ZVVSTCwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZEFyY2hpdmUoIAotICAgICAg
ICAvKiBbaW5dICovIElXZWJBcmNoaXZlICphcmNoaXZlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0YVNvdXJjZSggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSVdlYkRhdGFTb3VyY2UgKipzb3VyY2UpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcm92aXNpb25hbERhdGFTb3VyY2UoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElXZWJEYXRhU291cmNlICoqc291cmNlKTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RvcExvYWRpbmcoIHZvaWQpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWxvYWQoIHZvaWQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaW5kRnJhbWVOYW1l
ZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElXZWJGcmFtZSAqKmZyYW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcGFyZW50RnJhbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElXZWJGcmFtZSAqKmZyYW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2hpbGRGcmFtZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElFbnVt
VkFSSUFOVCAqKmVudW1GcmFtZXMpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGN1cnJlbnRGb3JtKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxl
bWVudCAqKmZvcm1FbGVtZW50KTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBuYW1lKF9EZXJlZl9vcHRfb3V0XyBCU1RSKiBmcmFtZU5hbWUpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3KF9DT01fT3V0cHRyX29wdF8gSVdlYlZp
ZXcqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZyYW1lVmlldyhf
Q09NX091dHB0cl9vcHRfIElXZWJGcmFtZVZpZXcqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50KF9DT01fT3V0cHRyX29wdF8gSURPTURvY3VtZW50
KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01XaW5kb3coX0NP
TV9PdXRwdHJfb3B0XyBJRE9NV2luZG93KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBmcmFtZUVsZW1lbnQoX0NPTV9PdXRwdHJfb3B0XyBJRE9NSFRNTEVsZW1lbnQq
KiBmcmFtZUVsZW1lbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBs
b2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5f
IEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJs
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZEhUTUxTdHJpbmco
X0luXyBCU1RSLCBfSW5fIEJTVFIgYmFzZVVSTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKF9Jbl8gQlNUUiwgX0luXyBCU1RS
IGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGxvYWRBcmNoaXZlKF9Jbl9vcHRfIElXZWJBcmNoaXZlKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRhdGFTb3VyY2UoX0NPTV9PdXRw
dHJfb3B0XyBJV2ViRGF0YVNvdXJjZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcHJvdmlzaW9uYWxEYXRhU291cmNlKF9DT01fT3V0cHRyX29wdF8gSVdlYkRhdGFT
b3VyY2UqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0b3BMb2Fk
aW5nKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbG9hZCgpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaW5kRnJhbWVOYW1lZChfSW5f
IEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWUqKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudEZyYW1lKF9DT01fT3V0cHRyX29wdF8gSVdl
YkZyYW1lKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZEZy
YW1lcyhfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFOVCoqIGVudW1GcmFtZXMpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXJyZW50Rm9ybShfQ09NX091dHB0cl9v
cHRfIElET01FbGVtZW50KiopOwogICAgIHZpcnR1YWwgLyogW2xvY2FsXSAqLyBKU0dsb2JhbENv
bnRleHRSZWYgU1RETUVUSE9EQ0FMTFRZUEUgZ2xvYmFsQ29udGV4dCgpOwogCiAgICAgLy8gSVdl
YkZyYW1lUHJpdmF0ZQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVz
ZWQxKCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb24oQk9PTCBmb3JQcmlu
dGluZywgQlNUUiAqcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBp
ZCwKLSAgICAgICAgLyogW2luXSAqLyBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywKLSAgICAgICAg
LyogW2luXSAqLyBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gaW50KiByZXN1bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIG51bWJlck9mUGFnZXMoCi0gICAgICAgIC8qIFtpbl0gKi8gZmxvYXQgcGFnZVdpZHRo
SW5QaXhlbHMsCi0gICAgICAgIC8qIFtpbl0gKi8gZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxPZmZzZXQoCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gU0laRSogb2Zmc2V0KTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uKEJPT0wgZm9yUHJp
bnRpbmcsIF9EZXJlZl9vcHRfb3V0XyBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoX0luXyBCU1RSIGlk
LCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzLCBfT3V0
XyBpbnQqIHBhZ2VOdW1iZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0
SW5QaXhlbHMsIF9PdXRfIGludCogcGFnZUNvdW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2Nyb2xsT2Zmc2V0KF9PdXRfIFNJWkUqKTsKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGF5b3V0KCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RMYXlvdXREb25lKAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCk7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZmlyc3RMYXlvdXREb25lKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMigpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50
Q291bnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQqIHJlc3VsdCk7Ci0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGVuZGluZ0ZyYW1lVW5sb2FkRXZl
bnRDb3VudChfT3V0XyBVSU5UKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHVudXNlZDMoKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5QcmludGluZ01vZGUoIAotICAgICAgICAvKiBb
aW5dICovIEJPT0wgdmFsdWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSERDIHByaW50REMpOwotICAg
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0UHJpbnRlZFBh
Z2VDb3VudCggCi0gICAgICAgIC8qIFtpbl0gKi8gSERDIHByaW50REMsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gVUlOVCAqcGFnZUNvdW50KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc3Bvb2xQYWdlcyggCi0gICAgICAgIC8qIFtpbl0gKi8gSERD
IHByaW50REMsCi0gICAgICAgIC8qIFtpbl0gKi8gVUlOVCBzdGFydFBhZ2UsCi0gICAgICAgIC8q
IFtpbl0gKi8gVUlOVCBlbmRQYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHZvaWQq
IGN0eCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNGcmFtZVNl
dCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmcoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2l6ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gU0laRSAqc2l6
ZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzU2Nyb2xsQmFy
cyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGVudEJvdW5kcyggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gUkVDVCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZnJhbWVCb3VuZHMoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIFJFQ1QgKnJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaXNEZXNjZW5kYW50T2ZGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YkZyYW1lICphbmNlc3RvciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1
bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93c1Nj
cm9sbGluZygKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpOwotCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93c1Njcm9sbGluZygKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MICpmbGFnKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRJc0Rpc2Nvbm5lY3RlZCgKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGZs
YWcpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2x1ZGVG
cm9tVGV4dFNlYXJjaCgKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpOwotCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEluUHJpbnRpbmdNb2RlKEJPT0wgdmFs
dWUsIF9Jbl8gSERDIHByaW50REMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXRQcmludGVkUGFnZUNvdW50KF9Jbl8gSERDIHByaW50REMsIF9PdXRfIFVJTlQqIHBh
Z2VDb3VudCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNwb29sUGFn
ZXMoSERDIHByaW50REMsIFVJTlQgc3RhcnRQYWdlLCBVSU5UIGVuZFBhZ2UsIHZvaWQqIGN0eCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRnJhbWVTZXQoX091dF8g
Qk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmcoX0Rl
cmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2l6ZShfT3V0XyBTSVpFKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhhc1Njcm9sbEJhcnMoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjb250ZW50Qm91bmRzKF9PdXRfIFJFQ1QqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZnJhbWVCb3VuZHMoX091dF8gUkVDVCopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0Rlc2NlbmRhbnRPZkZyYW1lKF9Jbl9v
cHRfIElXZWJGcmFtZSogYW5jZXN0b3IsIF9PdXRfIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93c1Njcm9sbGluZyhCT09MKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dzU2Nyb2xsaW5nKF9PdXRf
IEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SXNEaXNj
b25uZWN0ZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEV4Y2x1ZGVGcm9tVGV4dFNlYXJjaChCT09MKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcmVsb2FkRnJvbU9yaWdpbigpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBhaW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KC8qIFtpbl0gKi8gUkVD
VCByZWN0LCAvKiBbaW5dICovIEhEQyBkZXZpY2VDb250ZXh0KTsKLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2lu
dCgvKiBbaW5dICovIFJFQ1QgcmVjdCwgLyogW2luXSAqLyBQT0lOVCBwdCwgLyogW2luXSAqLyBI
REMgZGV2aWNlQ29udGV4dCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZWxlbWVudERvZXNBdXRvQ29tcGxldGUoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1l
bnQqIGVsZW1lbnQsIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGF1c2VBbmltYXRpb24o
QlNUUiBhbmltYXRpb25OYW1lLCBJRE9NTm9kZSosIGRvdWJsZSBzZWNvbmRzRnJvbU5vdywgQk9P
TCogYW5pbWF0aW9uV2FzUnVubmluZyk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHBhdXNlVHJhbnNpdGlvbihCU1RSIHByb3BlcnR5TmFtZSwgSURPTU5vZGUqLCBkb3Vi
bGUgc2Vjb25kc0Zyb21Ob3csIEJPT0wqIHRyYW5zaXRpb25XYXNSdW5uaW5nKTsKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFVJ
TlQqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZFBsYWluVGV4
dFN0cmluZyhCU1RSIHN0cmluZywgQlNUUiB1cmwpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZShCT09MKik7Ci0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dzRm9sbG93aW5nTGluaygK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiByZXN1bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3Js
ZCosIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdFJlZiwgQlNUUiBzY3JpcHQsIEJTVFIqIGV2YWx1
YXRpb25SZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWlu
dERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNULCBfSW5fIEhEQyk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50
KFJFQ1QsIFBPSU5ULCBfSW5fIEhEQyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKF9Jbl9vcHRfIElET01FbGVtZW50KiwgX091
dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXVzZUFu
aW1hdGlvbihfSW5fIEJTVFIgYW5pbWF0aW9uTmFtZSwgX0luX29wdF8gSURPTU5vZGUqLCBkb3Vi
bGUgc2Vjb25kc0Zyb21Ob3csIF9PdXRfIEJPT0wqIGFuaW1hdGlvbldhc1J1bm5pbmcpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXVzZVRyYW5zaXRpb24oX0luXyBC
U1RSIHByb3BlcnR5TmFtZSwgX0luX29wdF8gSURPTU5vZGUqLCBkb3VibGUgc2Vjb25kc0Zyb21O
b3csIF9PdXRfIEJPT0wqIHRyYW5zaXRpb25XYXNSdW5uaW5nKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKF9PdXRfIFVJTlQq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZFBsYWluVGV4dFN0
cmluZyhfSW5fIEJTVFIsIF9Jbl8gQlNUUiB1cmwpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2UoX091dF8gQk9PTCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd3NGb2xsb3dpbmdMaW5r
KF9Jbl8gQlNUUiwgX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZChJV2ViU2Ny
aXB0V29ybGQqLCBKU09iamVjdFJlZiwgQlNUUiBzY3JpcHQsIEJTVFIqIGV2YWx1YXRpb25SZXN1
bHQpOwogICAgIHZpcnR1YWwgSlNHbG9iYWxDb250ZXh0UmVmIFNURE1FVEhPRENBTExUWVBFIGds
b2JhbENvbnRleHRGb3JTY3JpcHRXb3JsZChJV2ViU2NyaXB0V29ybGQqKTsKLQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNpYmxlQ29udGVudFJlY3QoUkVDVCopOwot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxheWVyVHJlZUFzVGV4dChC
U1RSKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzU3BlbGxp
bmdNYXJrZXIoCi0gICAgICAgIC8qIFtpbl0gKi8gVUlOVCBmcm9tLAotICAgICAgICAvKiBbaW5d
ICovIFVJTlQgbGVuZ3RoLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3Vs
dCk7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlzaWJsZUNvbnRl
bnRSZWN0KF9PdXRfIFJFQ1QqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgbGF5ZXJUcmVlQXNUZXh0KF9EZXJlZl9vdXRfb3B0XyBCU1RSKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc1NwZWxsaW5nTWFya2VyKFVJTlQgZnJvbSwgVUlO
VCBsZW5ndGgsIEJPT0wqIHJlc3VsdCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNsZWFyT3BlbmVyKCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0VGV4dERpcmVjdGlvbihCU1RSKTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRUZXh0RGlyZWN0aW9uKF9Jbl8gQlNUUik7CiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDQoKSB7IHJldHVybiBFX05PVElNUEw7IH0K
LQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXN1bWVBbmltYXRpb25z
KCk7Ci0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3VzcGVuZEFuaW1h
dGlvbnMoKTsKIAogICAgIC8vIElXZWJEb2N1bWVudFRleHQKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc3VwcG9ydHNUZXh0RW5jb2RpbmcoIAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNlbGVjdGVkU3RyaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSKiByZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZWxlY3RBbGwoKTsKLSAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc3VwcG9ydHNUZXh0RW5jb2RpbmcoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWxlY3RlZFN0cmluZyhfRGVyZWZfb3B0X291dF8g
QlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWxlY3RBbGwo
KTsgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlc2VsZWN0QWxs
KCk7CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNNYWluRnJhbWUo
Qk9PTCopOworICAgIC8vIElXZWJGcmFtZTI6CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGlzTWFpbkZyYW1lKF9PdXRfIEJPT0wqKTsKICAgICAKICAgICAvLyBGcmFtZUxv
YWRlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpOwpAQCAt
MzE5LDcgKzE5OSw3IEBAIHB1YmxpYzoKICAgICBDT01QdHI8SUFjY2Vzc2libGU+IGFjY2Vzc2li
bGUoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoQlNUUiBz
dHJpbmcsIEJTVFIgYmFzZVVSTCwgQlNUUiB1bnJlYWNoYWJsZVVSTCk7CisgICAgdm9pZCBsb2Fk
SFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RS
IHVucmVhY2hhYmxlVVJMKTsKICAgICB2b2lkIGxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RS
IGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50
aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNo
cmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKQEAgLTMzMCwxNCArMjEw
LDE1IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRyYXdGb290ZXIoUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQqIHBjdHgsIElXZWJVSURlbGVnYXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFn
ZVJlY3QsIFVJTlQgcGFnZSwgVUlOVCBwYWdlQ291bnQsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxv
YXQgZm9vdGVySGVpZ2h0KTsKIAogcHJvdGVjdGVkOgotICAgIFVMT05HICAgICAgICAgICAgICAg
bV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIGNsYXNzIFdlYkZy
YW1lUHJpdmF0ZTsKLSAgICBXZWJGcmFtZVByaXZhdGUqICAgIGQ7Ci0gICAgYm9vbCAgICAgICAg
ICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmc7Ci0gICAgV2ViQ29yZTo6VVJMICAgICAgIG1f
b3JpZ2luYWxSZXF1ZXN0VVJMOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9pblByaW50aW5n
TW9kZTsKKyAgICBXZWJGcmFtZVByaXZhdGUqIGQ7CisgICAgYm9vbCBtX3F1aWNrUmVkaXJlY3RD
b21pbmcgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlVSTCBtX29yaWdpbmFsUmVxdWVzdFVSTDsK
KyAgICBib29sIG1faW5QcmludGluZ01vZGUgeyBmYWxzZSB9OworCiAgICAgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IG1fcGFnZVJlY3RzOwotICAgIGludCBtX3BhZ2VIZWlnaHQ7ICAgLy8gaGVp
Z2h0IG9mIHRoZSBwYWdlIGFkanVzdGVkIGJ5IG1hcmdpbnMKKyAgICBpbnQgbV9wYWdlSGVpZ2h0
IHsgMCB9OyAvLyBoZWlnaHQgb2YgdGhlIHBhZ2UgYWRqdXN0ZWQgYnkgbWFyZ2lucwogICAgIG11
dGFibGUgQ09NUHRyPEFjY2Vzc2libGVEb2N1bWVudD4gbV9hY2Nlc3NpYmxlOwogfTsKIApJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAJKHJldmlz
aW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDggKzM2LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAvLyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihQYXNzUmVmUHRyPEZy
YW1lPiBmcmFtZSkKLSAgICA6IG1fcmVmQ291bnQoMCkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisg
ICAgOiBtX2ZyYW1lKGZyYW1lKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CkBAIC01OCw5ICs1NywxMSBA
QCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpCiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hS
RVNVTFQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9
IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAg
KnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5r
bm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViUG9saWN5RGVjaXNp
b25MaXN0ZW5lcio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9J
V2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcikpCkBAIC03NCwxMiArNzUsMTIgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZVBvbGljeQogICAgIHJldHVybiBTX09LOwogfQogCi1V
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpBZGRSZWYodm9p
ZCkKK1VMT05HIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJu
ICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcjo6UmVsZWFzZSh2b2lkKQorVUxPTkcgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6
UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICgh
bmV3UmVmKQpAQCAtOTAsMTkgKzkxLDE5IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkZy
YW1lUG9saWN5TGkKIAogLy8gSVdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6dXNlKHZvaWQpCitI
UkVTVUxUIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OnVzZSgpCiB7CiAgICAgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lVc2UpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmRvd25sb2FkKHZvaWQpCitI
UkVTVUxUIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmRvd25sb2FkKCkKIHsKICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKFBvbGljeURvd25sb2FkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjppZ25vcmUo
dm9pZCkKK0hSRVNVTFQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6aWdub3JlKCkKIHsKICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUlnbm9yZSk7CiAgICAgcmV0dXJuIFNfT0s7CkBA
IC0xMTAsNyArMTExLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZVBvbGlj
eQogCiAvLyBJV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjb250aW51ZVN1Ym1pdCh2b2lkKQor
SFJFU1VMVCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjb250aW51ZVN1Ym1pdCgpCiB7CiAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lVc2UpOwogICAgIHJldHVybiBTX09LOwpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuaAkocmV2aXNpb24g
MTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ1LDIzICs0NSwyNCBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAg
ICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uo
KTsKIAogICAgIC8vIElXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHVzZSh2b2lkKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZG93bmxvYWQodm9pZCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGlnbm9yZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdXNlKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRv
d25sb2FkKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlnbm9yZSgp
OwogCiAgICAgLy8gSVdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXIKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGludWVTdWJtaXQodm9pZCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRpbnVlU3VibWl0KCk7CiAKICAgICAvLyBXZWJG
cmFtZVBvbGljeUxpc3RlbmVyCiAgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeUFjdGlvbik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKIHByaXZhdGU6Ci0g
ICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gbV9mcmFtZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAx
ODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsMTEgQEAgV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcjo6fldlYkdlb2xvYwogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6UXVlcnlJ
bnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAg
IGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmpl
Y3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsSUlEKHJpaWQsIF9fdXVpZG9mKElVbmtub3du
KSkpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxJSUQocmlpZCwgX191dWlk
b2YoSVdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIpKSkKQEAgLTY3LDEyICs2OSwxMiBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkdlb2xvY2F0aW9uCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXI6OkFkZFJlZigpCitVTE9ORyBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpBZGRSZWYo
KQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExU
WVBFIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OlJlbGVhc2UoKQorVUxPTkcgV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0g
LS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtODMsMTMgKzg1LDEzIEBAIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFdlYkdlb2xvY2F0aW9uUG8KIAogLy8gSVdlYlBvbGljeURlY2lz
aW9uTGlzdGVuZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lcjo6YWxsb3coKQorSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyOjphbGxvdygpCiB7CiAgICAgbV9nZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKHRydWUp
OwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OmRlbnkoKQorSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyOjpkZW55KCkKIHsKICAgICBtX2dlb2xvY2F0aW9uLT5zZXRJc0FsbG93ZWQo
ZmFsc2UpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ09NUHRyPFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXI+IGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
R2VvbG9jYXRpb24+KTsKIAogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2Jq
ZWN0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwogICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CiAgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKQEAgLTUyLDcgKzUyLDcgQEAgcHJp
dmF0ZToKICAgICBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6R2VvbG9jYXRpb24+KTsKICAgICB+V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcigpOwog
Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAg
IFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCShyZXZpc2lv
biAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDYgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24+IFdlYkdlb2xvYwogfQogCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uKCkKLSAgICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOwpA
QCAtNDgsOSArNDcsMTEgQEAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9u
UAogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIp
OwogfQogCi1IUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAg
ICBpZiAoSXNFcXVhbElJRChyaWlkLCBfX3V1aWRvZihXZWJHZW9sb2NhdGlvblBvc2l0aW9uKSkp
CiAgICAgICAgICpwcHZPYmplY3QgPSB0aGlzOwogICAgIGVsc2UgaWYgKElzRXF1YWxJSUQocmlp
ZCwgX191dWlkb2YoSVVua25vd24pKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAg
cHJpdmF0ZToKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2
T2JqZWN0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwog
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CiAgICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGltcGwoKSBjb25zdCB7
IHJldHVybiBtX3Bvc2l0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVUxPTkcgbV9yZWZD
b3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOwogfTsKIApJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAy
MDE1IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw4ICszOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ly8gV2ViSFRNTFJlcHJlc2VudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJIVE1MUmVwcmVzZW50YXRpb246OldlYkhUTUxS
ZXByZXNlbnRhdGlvbigpCi0gICAgOiBtX3JlZkNvdW50KDApCi0gICAgLCBtX2ZyYW1lKDApCiB7
CiAgICAgV2ViSFRNTFJlcHJlc2VudGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwpA
QCAtNTEsNyArNDksNyBAQCBXZWJIVE1MUmVwcmVzZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50
CiB7CiAgICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgbV9mcmFtZS0+UmVsZWFzZSgpOwotICAg
ICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9mcmFtZSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgV2ViSFRNTFJlcHJlc2VudGF0aW9uQ291bnQtLTsKQEAgLTcwLDkgKzY4LDExIEBAIFdlYkhU
TUxSZXByZXNlbnRhdGlvbiogV2ViSFRNTFJlcHJlc2VudGEKIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdl
YkhUTUxSZXByZXNlbnRhdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAg
aWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVj
dCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAg
ICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViSFRNTFJlcHJlc2VudGF0aW9uKj4o
dGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJIVE1MUmVwcmVz
ZW50YXRpb24pKQpAQCAtODYsMTIgKzg2LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViSFRNTFJlcHJlc2UKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpBZGRSZWYoKQorVUxPTkcgV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVM
T05HIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6UmVsZWFzZSgpCitV
TE9ORyBXZWJIVE1MUmVwcmVzZW50YXRpb246OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1Jl
ZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTEwMiwxNTYgKzEwMiwxMzcg
QEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudAogCiAvLyBJV2ViSFRN
TFJlcHJlc2VudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzdXBwb3J0ZWRNSU1FVHlwZXMoCi0gICAgICAgIC8qIFtv
dXRdW2luXSAqLyBCU1RSKiAvKnR5cGVzKi8sCi0gICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQq
IC8qY1R5cGVzKi8pCitIUkVTVUxUIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6c3VwcG9ydGVkTUlN
RVR5cGVzKF9fZGVyZWZfb3B0X2lub3V0IEJTVFIqIC8qdHlwZXMqLywgX0lub3V0XyBpbnQqIC8q
Y1R5cGVzKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9U
SU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uOjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygKLSAgICAgICAgLyogW291dF1baW5d
ICovIEJTVFIqIC8qdHlwZXMqLywKLSAgICAgICAgLyogW291dF1baW5dICovIGludCogLypjVHlw
ZXMqLykKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcyhfX2RlcmVmX29wdF9pbm91dCBCU1RSKiAvKnR5cGVzKi8sIF9Jbm91dF8gaW50KiAv
KmNUeXBlcyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05P
VElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoCi0gICAgICAgIC8qIFtvdXRdW2luXSAq
LyBCU1RSKiAvKnR5cGVzKi8sCi0gICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIC8qY1R5cGVz
Ki8pCitIUkVTVUxUIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMoX19kZXJlZl9vcHRfaW5vdXQgQlNUUiogLyp0eXBlcyovLCBfSW5vdXRfIGludCogLypjVHlw
ZXMqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRp
b246OmF0dHJpYnV0ZWRTdHJpbmdGcm9tRE9NTm9kZXMoCi0gICAgICAgIC8qIFtpbl0gKi8gSURP
TU5vZGUqIC8qc3RhcnROb2RlKi8sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IC8qc3RhcnRPZmZz
ZXQqLywKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogLyplbmROb2RlKi8sCi0gICAgICAg
IC8qIFtpbl0gKi8gaW50IC8qZW5kT2Zmc2V0Ki8sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURhdGFPYmplY3QqKiAvKmF0dHJpYnV0ZWRTdHJpbmcqLykKK0hSRVNVTFQgV2ViSFRNTFJl
cHJlc2VudGF0aW9uOjphdHRyaWJ1dGVkU3RyaW5nRnJvbURPTU5vZGVzKF9Jbl9vcHRfIElET01O
b2RlKiAvKnN0YXJ0Tm9kZSovLAorICAgIGludCAvKnN0YXJ0T2Zmc2V0Ki8sIF9Jbl9vcHRfIElE
T01Ob2RlKiAvKmVuZE5vZGUqLywgaW50IC8qZW5kT2Zmc2V0Ki8sIF9DT01fT3V0cHRyX29wdF8g
SURhdGFPYmplY3QqKiBhdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGlmICghYXR0cmlidXRlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqYXR0cmlidXRlZFN0cmluZyA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjplbGVtZW50V2l0aE5hbWUoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAg
ICAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBmb3JtLAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01FbGVtZW50KiogZWxlbWVudCkKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjplbGVtZW50V2l0aE5hbWUoX0luXyBCU1RSIG5hbWUsIF9Jbl9vcHRfIElET01FbGVtZW50
KiBmb3JtLCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiogZWxlbWVudCkKIHsKKyAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmVsZW1lbnQgPSBu
dWxscHRyOwogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAg
IHJldHVybiBtX2ZyYW1lLT5lbGVtZW50V2l0aE5hbWUobmFtZSwgZm9ybSwgZWxlbWVudCk7CiB9
CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
ZWxlbWVudERvZXNBdXRvQ29tcGxldGUoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQq
IGVsZW1lbnQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQorSFJF
U1VMVCBXZWJIVE1MUmVwcmVzZW50YXRpb246OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKF9Jbl9v
cHRfIElET01FbGVtZW50KiBlbGVtZW50LCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgQk9PTCBkb2VzQXV0b0Nv
bXBsZXRlOwogICAgIEhSRVNVTFQgaHIgPSBtX2ZyYW1lLT5lbGVtZW50RG9lc0F1dG9Db21wbGV0
ZShlbGVtZW50LCAmZG9lc0F1dG9Db21wbGV0ZSk7CiAgICAgKnJlc3VsdCA9IGRvZXNBdXRvQ29t
cGxldGUgPyBUUlVFIDogRkFMU0U7CiAgICAgcmV0dXJuIGhyOwogfQogICAgIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246OmVsZW1lbnRJc1Bhc3N3b3Jk
KAotICAgICAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBlbGVtZW50LAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjplbGVtZW50SXNQYXNzd29yZChfSW5fb3B0XyBJRE9NRWxlbWVudCogZWxlbWVudCwgX091
dF8gQk9PTCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogICAgIGJvb2wgaXNQYXNzd29yZDsKICAgICBIUkVTVUxUIGhyID0gbV9mcmFtZS0+
ZWxlbWVudElzUGFzc3dvcmQoZWxlbWVudCwgJmlzUGFzc3dvcmQpOwogICAgICpyZXN1bHQgPSBp
c1Bhc3N3b3JkID8gIFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gaHI7CiB9CiAgICAgCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Zm9ybUZvckVsZW1l
bnQoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqIGVsZW1lbnQsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQqKiBmb3JtKQorSFJFU1VMVCBXZWJIVE1MUmVw
cmVzZW50YXRpb246OmZvcm1Gb3JFbGVtZW50KF9Jbl9vcHRfIElET01FbGVtZW50KiBlbGVtZW50
LCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiogZm9ybSkKIHsKKyAgICBpZiAoIWZvcm0p
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmZvcm0gPSBudWxscHRyOwogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVybiBtX2ZyYW1l
LT5mb3JtRm9yRWxlbWVudChlbGVtZW50LCBmb3JtKTsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjdXJyZW50Rm9ybSgKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCoqIGZvcm0pCitIUkVTVUxUIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbjo6Y3VycmVudEZvcm0oX0NPTV9PdXRwdHJfb3B0XyBJRE9NRWxlbWVudCoq
IGZvcm0pCiB7CisgICAgaWYgKCFmb3JtKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICpmb3JtID0gbnVsbHB0cjsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICByZXR1cm4gbV9mcmFtZS0+Y3VycmVudEZvcm0oZm9ybSk7CiB9CiAgICAgCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y29udHJvbHNJ
bkZvcm0oCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqIGZvcm0sCi0gICAgICAgIC8q
IFtvdXRdW2luXSAqLyBJRE9NRWxlbWVudCoqIGNvbnRyb2xzLAotICAgICAgICAvKiBbb3V0XVtp
bl0gKi8gaW50KiBjQ29udHJvbHMpCitIUkVTVUxUIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y29u
dHJvbHNJbkZvcm0oX0luX29wdF8gSURPTUVsZW1lbnQqIGZvcm0sIF9fZGVyZWZfaW5vdXRfb3B0
IElET01FbGVtZW50KiogY29udHJvbHMsIF9PdXRfIGludCogY0NvbnRyb2xzKQogewogICAgIHJl
dHVybiBtX2ZyYW1lLT5jb250cm9sc0luRm9ybShmb3JtLCBjb250cm9scywgY0NvbnRyb2xzKTsK
IH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9u
OjpkZXByZWNhdGVkU2VhcmNoRm9yTGFiZWxzKAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICov
IEJTVFIqIGxhYmVscywKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0xhYmVscywKLSAgICAgICAg
LyogW2luXSAqLyBJRE9NRWxlbWVudCogYmVmb3JlRWxlbWVudCwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
ZGVwcmVjYXRlZFNlYXJjaEZvckxhYmVscyhfX2lub3V0X2Vjb3VudF9mdWxsKGNMYWJlbHMpIEJT
VFIqIGxhYmVscywgaW50IGNMYWJlbHMsCisgICAgX0luX29wdF8gSURPTUVsZW1lbnQqIGJlZm9y
ZUVsZW1lbnQsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIG1f
ZnJhbWUtPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjTGFiZWxzLCBiZWZv
cmVFbGVtZW50LCAwLCAwLCByZXN1bHQpOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246Om1hdGNoTGFiZWxzKAotICAgICAgICAvKiBbc2l6
ZV9pc11baW5dICovIEJTVFIqIGxhYmVscywKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0xhYmVs
cywKLSAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCogYWdhaW5zdEVsZW1lbnQsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJIVE1MUmVw
cmVzZW50YXRpb246Om1hdGNoTGFiZWxzKF9faW5vdXRfZWNvdW50X2Z1bGwoY0xhYmVscykgQlNU
UiogbGFiZWxzLCBpbnQgY0xhYmVscywgX0luX29wdF8gSURPTUVsZW1lbnQqIGFnYWluc3RFbGVt
ZW50LAorICAgIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIG1f
ZnJhbWUtPm1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQobGFiZWxzLCBjTGFiZWxzLCBhZ2FpbnN0
RWxlbWVudCwgcmVzdWx0KTsKIH0KIAotSFJFU1VMVCBXZWJIVE1MUmVwcmVzZW50YXRpb246OnNl
YXJjaEZvckxhYmVscyhCU1RSKiBsYWJlbHMsIHVuc2lnbmVkIGNMYWJlbHMsIElET01FbGVtZW50
KiBiZWZvcmVFbGVtZW50LCB1bnNpZ25lZCogcmVzdWx0RGlzdGFuY2UsIEJPT0wqIHJlc3VsdElz
SW5DZWxsQWJvdmUsIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0aW9u
OjpzZWFyY2hGb3JMYWJlbHMoX19pbm91dF9lY291bnRfZnVsbChjTGFiZWxzKSBCU1RSKiBsYWJl
bHMsIHVuc2lnbmVkIGNMYWJlbHMsIF9Jbl9vcHRfIElET01FbGVtZW50KiBiZWZvcmVFbGVtZW50
LAorICAgIF9PdXRfIHVuc2lnbmVkKiByZXN1bHREaXN0YW5jZSwgX091dF8gQk9PTCogcmVzdWx0
SXNJbkNlbGxBYm92ZSwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICByZXR1
cm4gbV9mcmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChsYWJlbHMsIGNMYWJlbHMs
IGJlZm9yZUVsZW1lbnQsIHJlc3VsdERpc3RhbmNlLCByZXN1bHRJc0luQ2VsbEFib3ZlLCByZXN1
bHQpOwogfQogCiAvLyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzZXREYXRhU291cmNl
KAotICAgICAgICAvKiBbaW5dICovIElXZWJEYXRhU291cmNlKiAvKmRhdGFTb3VyY2UqLykKK0hS
RVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzZXREYXRhU291cmNlKF9Jbl9vcHRfIElXZWJE
YXRhU291cmNlKiAvKmRhdGFTb3VyY2UqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJIVE1MUmVwcmVzZW50YXRpb246OnJlY2VpdmVkRGF0YSgKLSAgICAgICAgLyogW2luXSAq
LyBJU3RyZWFtKiAvKmRhdGEqLywKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRGF0YVNvdXJjZSog
LypkYXRhU291cmNlKi8pCitIUkVTVUxUIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6cmVjZWl2ZWRE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qIC8qZGF0YSovLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSog
LypkYXRhU291cmNlKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJl
cHJlc2VudGF0aW9uOjpyZWNlaXZlZEVycm9yKAotICAgICAgICAvKiBbaW5dICovIElXZWJFcnJv
ciogLyplcnJvciovLAotICAgICAgICAvKiBbaW5dICovIElXZWJEYXRhU291cmNlKiAvKmRhdGFT
b3VyY2UqLykKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpyZWNlaXZlZEVycm9yKF9J
bl9vcHRfIElXZWJFcnJvciogLyplcnJvciovLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSogLypk
YXRhU291cmNlKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjpmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZSgKLSAgICAgICAgLyogW2lu
XSAqLyBJV2ViRGF0YVNvdXJjZSogLypkYXRhU291cmNlKi8pCitIUkVTVUxUIFdlYkhUTUxSZXBy
ZXNlbnRhdGlvbjo6ZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2UoX0luX29wdF8gSVdlYkRh
dGFTb3VyY2UqIC8qZGF0YVNvdXJjZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y2FuUHJvdmlkZURvY3VtZW50U291cmNlKAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjpjYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UoX091dF8gQk9PTCogcmVzdWx0KQog
ewogICAgIGJvb2wgY2FuUHJvdmlkZVNvdXJjZTsKICAgICBIUkVTVUxUIGhyID0gdGhpcy0+bV9m
cmFtZS0+Y2FuUHJvdmlkZURvY3VtZW50U291cmNlKCZjYW5Qcm92aWRlU291cmNlKTsKQEAgLTI1
OSwxMyArMjQwLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UK
ICAgICByZXR1cm4gaHI7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhU
TUxSZXByZXNlbnRhdGlvbjo6ZG9jdW1lbnRTb3VyY2UoCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogc291cmNlKQorSFJFU1VMVCBXZWJIVE1MUmVwcmVzZW50YXRpb246OmRvY3Vt
ZW50U291cmNlKF9fZGVyZWZfb3B0X291dCBCU1RSKiBzb3VyY2UpCiB7CiAgICAgaWYgKCFzb3Vy
Y2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqc291cmNlID0gMDsKKyAgICAqc291
cmNlID0gbnVsbHB0cjsKIAogICAgIEhSRVNVTFQgaHIgPSBTX09LOwogCkBAIC0zMTAsOCArMjkw
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZQogICAgIHJldHVy
biBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVz
ZW50YXRpb246OnRpdGxlKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qZG9j
VGl0bGUqLykKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp0aXRsZShfX2RlcmVmX29w
dF9vdXQgQlNUUiogLypkb2NUaXRsZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIVE1MUmVw
cmVzZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIVE1MUmVw
cmVzZW50YXRpb24uaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw5NyAr
NDAsNDEgQEAgcHJvdGVjdGVkOgogcHVibGljOgogCiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQs
IHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBw
dk9iamVjdCk7CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsK
ICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8v
IElXZWJIVE1MUmVwcmVzZW50YXRpb24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc3VwcG9ydGVkTUlNRVR5cGVzKAotICAgICAgICAvKiBbb3V0XVtpbl0gKi8gQlNUUiog
dHlwZXMsCi0gICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNUeXBlcyk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGVzKAotICAgICAgICAvKiBbb3V0XVtpbl0gKi8gQlNUUiogdHlwZXMsCi0gICAgICAgIC8qIFtv
dXRdW2luXSAqLyBpbnQqIGNUeXBlcyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKAotICAgICAgICAvKiBbb3V0XVtp
bl0gKi8gQlNUUiogdHlwZXMsCi0gICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNUeXBlcyk7
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZWRT
dHJpbmdGcm9tRE9NTm9kZXMoCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIHN0YXJ0Tm9k
ZSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgc3RhcnRPZmZzZXQsCi0gICAgICAgIC8qIFtpbl0g
Ki8gSURPTU5vZGUqIGVuZE5vZGUsCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGVuZE9mZnNldCwK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRGF0YU9iamVjdCoqIGF0dHJpYnV0ZWRTdHJp
bmcpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbGVtZW50
V2l0aE5hbWUoCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAgICAvKiBbaW5d
ICovIElET01FbGVtZW50KiBmb3JtLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01F
bGVtZW50KiogZWxlbWVudCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlKAotICAgICAgICAvKiBbaW5dICovIElET01F
bGVtZW50KiBlbGVtZW50LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVsZW1lbnRJ
c1Bhc3N3b3JkKAotICAgICAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBlbGVtZW50LAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvcm1Gb3JFbGVtZW50KAotICAgICAgICAvKiBb
aW5dICovIElET01FbGVtZW50KiBlbGVtZW50LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01FbGVtZW50KiogZm9ybSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGN1cnJlbnRGb3JtKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01F
bGVtZW50KiogZm9ybSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNvbnRyb2xzSW5Gb3JtKAotICAgICAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBmb3Jt
LAotICAgICAgICAvKiBbb3V0XVtpbl0gKi8gSURPTUVsZW1lbnQqKiBjb250cm9scywKLSAgICAg
ICAgLyogW291dF1baW5dICovIGludCogY0NvbnRyb2xzKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc3VwcG9ydGVkTUlNRVR5cGVzKF9fZGVyZWZfb3B0X2lub3V0IEJT
VFIqIHR5cGVzLCBfSW5vdXRfIGludCogY1R5cGVzKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoX19kZXJlZl9vcHRfaW5v
dXQgQlNUUiogdHlwZXMsIF9Jbm91dF8gaW50KiBjVHlwZXMpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyhfX2RlcmVmX29wdF9p
bm91dCBCU1RSKiB0eXBlcywgX0lub3V0XyBpbnQqIGNUeXBlcyk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZWRTdHJpbmdGcm9tRE9NTm9kZXMoX0luX29w
dF8gSURPTU5vZGUqIHN0YXJ0Tm9kZSwgaW50IHN0YXJ0T2Zmc2V0LAorICAgICAgICBfSW5fb3B0
XyBJRE9NTm9kZSogZW5kTm9kZSwgaW50IGVuZE9mZnNldCwgX0NPTV9PdXRwdHJfb3B0XyBJRGF0
YU9iamVjdCoqIGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBlbGVtZW50V2l0aE5hbWUoX0luXyBCU1RSIG5hbWUsIF9Jbl9vcHRfIElET01F
bGVtZW50KiBmb3JtLCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZShfSW5f
b3B0XyBJRE9NRWxlbWVudCosIF9PdXRfIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGVsZW1lbnRJc1Bhc3N3b3JkKF9Jbl9vcHRfIElET01FbGVt
ZW50KiwgX091dF8gQk9PTCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZm9ybUZvckVsZW1lbnQoX0luX29wdF8gSURPTUVsZW1lbnQqLCBfQ09NX091dHB0
cl9vcHRfIElET01FbGVtZW50KiogZm9ybSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGN1cnJlbnRGb3JtKF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQqKiBmb3Jt
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udHJvbHNJbkZvcm0o
X0luX29wdF8gSURPTUVsZW1lbnQqIGZvcm0sIF9fZGVyZWZfaW5vdXRfb3B0IElET01FbGVtZW50
KiogY29udHJvbHMsIF9PdXRfIGludCogY0NvbnRyb2xzKTsKICAgICAKICAgICAvKiBEZXByZWNh
dGVkLiBVc2UgdGhlIHZhcmlhbnQgdGhhdCBpbmNsdWRlcyByZXN1bHREaXN0YW5jZSBhbmQgcmVz
dWx0SXNJbkNlbGxBYm92ZSBpbnN0ZWFkLiAqLwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkZXByZWNhdGVkU2VhcmNoRm9yTGFiZWxzKAotICAgICAgICAvKiBbc2l6ZV9p
c11baW5dICovIEJTVFIgKmxhYmVscywKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0xhYmVscywK
LSAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCAqYmVmb3JlRWxlbWVudCwKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtYXRjaExhYmVscygKLSAgICAgICAgLyogW3NpemVfaXNd
W2luXSAqLyBCU1RSICpsYWJlbHMsCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNMYWJlbHMsCi0g
ICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQgKmFnYWluc3RFbGVtZW50LAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2VhcmNoRm9yTGFiZWxzKEJTVFIqIGxhYmVscywgdW5zaWduZWQg
Y0xhYmVscywgSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIHVuc2lnbmVkKiByZXN1bHREaXN0
YW5jZSwgQk9PTCogcmVzdWx0SXNJbkNlbGxBYm92ZSwgQlNUUiogcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVwcmVjYXRlZFNlYXJjaEZvckxhYmVscyhf
X2lub3V0X2Vjb3VudF9mdWxsKGNMYWJlbHMpIEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIF9J
bl9vcHRfIElET01FbGVtZW50KiBiZWZvcmVFbGVtZW50LCBfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWF0Y2hMYWJl
bHMoX19pbm91dF9lY291bnRfZnVsbChjTGFiZWxzKSBCU1RSKiBsYWJlbHMsIGludCBjTGFiZWxz
LCBfSW5fb3B0XyBJRE9NRWxlbWVudCogYWdhaW5zdEVsZW1lbnQsIF9fZGVyZWZfb3B0X291dCBC
U1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZWFy
Y2hGb3JMYWJlbHMoX19pbm91dF9lY291bnRfZnVsbChjTGFiZWxzKSBCU1RSKiBsYWJlbHMsIHVu
c2lnbmVkIGNMYWJlbHMsIF9Jbl9vcHRfIElET01FbGVtZW50KiBiZWZvcmVFbGVtZW50LAorICAg
ICAgICBfT3V0XyB1bnNpZ25lZCogcmVzdWx0RGlzdGFuY2UsIF9PdXRfIEJPT0wqIHJlc3VsdElz
SW5DZWxsQWJvdmUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOwogICAgIAogICAgIC8v
IElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldERhdGFTb3VyY2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkRhdGFTb3Vy
Y2UqIGRhdGFTb3VyY2UpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZWNlaXZlZERhdGEoCi0gICAgICAgIC8qIFtpbl0gKi8gSVN0cmVhbSogZGF0YSwKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViRGF0YVNvdXJjZSogZGF0YVNvdXJjZSk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlY2VpdmVkRXJyb3IoCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYkVycm9yKiBlcnJvciwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRGF0
YVNvdXJjZSogZGF0YVNvdXJjZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlKAotICAgICAgICAvKiBbaW5d
ICovIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuUHJvdmlkZURvY3VtZW50U291cmNlKAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRvY3VtZW50U291cmNlKAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHNvdXJjZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRpdGxlKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGRv
Y1RpdGxlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGF0YVNv
dXJjZShfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZWNlaXZlZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luX29w
dF8gSVdlYkRhdGFTb3VyY2UqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcmVjZWl2ZWRFcnJvcihfSW5fb3B0XyBJV2ViRXJyb3IqLCBfSW5fb3B0XyBJV2ViRGF0YVNv
dXJjZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaW5pc2hlZExv
YWRpbmdXaXRoRGF0YVNvdXJjZShfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UoX091
dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb2N1bWVu
dFNvdXJjZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB0aXRsZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKLSAgICBXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBVTE9O
RyBtX3JlZkNvdW50IHsgMCB9OworICAgIFdlYkZyYW1lKiBtX2ZyYW1lIHsgbnVsbHB0ciB9Owog
fTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAkocmV2aXNpb24gMTg4
NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDE0IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAw
NywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1NCw4ICsxNTQsNiBAQCBzdGF0aWMgaW5saW5lIFdl
Ykhpc3Rvcnk6OkRhdGVLZXkgZGF0ZUtlCiAvLyBXZWJIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYkhp
c3Rvcnk6OldlYkhpc3RvcnkoKQotOiBtX3JlZkNvdW50KDApCi0sIG1fcHJlZmVyZW5jZXMoMCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlz
dG9yeSIpOwpAQCAtMjAyLDkgKzIwMCwxMSBAQCBCU1RSIFdlYkhpc3Rvcnk6OmdldE5vdGlmaWNh
dGlvblN0cmluZyhOCiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJIaXN0b3J5OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoq
IHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViSGlzdG9yeTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVj
dCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7Cisg
ICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIENMU0lE
X1dlYkhpc3RvcnkpKQogICAgICAgICAqcHB2T2JqZWN0ID0gdGhpczsKICAgICBlbHNlIGlmIChJ
c0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQpAQCAtMjIwLDEyICsyMjAsMTIgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5OjpRdQogICAgIHJldHVybiBTX09LOwog
fQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5OjpBZGRSZWYodm9pZCkKK1VM
T05HIFdlYkhpc3Rvcnk6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0K
IAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6UmVsZWFzZSh2b2lkKQorVUxP
TkcgV2ViSGlzdG9yeTo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNv
dW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgV2ViSGlzdG9yeSog
V2ViSGlzdG9yeTo6c2hhcmVkSGlzdG9yeSgpCiAgICAgcmV0dXJuIHNoYXJlZEhpc3RvcnlTdG9y
YWdlKCkuZ2V0KCk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6
b3B0aW9uYWxTaGFyZWRIaXN0b3J5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJIaXN0
b3J5KiogaGlzdG9yeSkKK0hSRVNVTFQgV2ViSGlzdG9yeTo6b3B0aW9uYWxTaGFyZWRIaXN0b3J5
KF9DT01fT3V0cHRyX29wdF8gSVdlYkhpc3RvcnkqKiBoaXN0b3J5KQogeworICAgIGlmICghaGlz
dG9yeSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqaGlzdG9yeSA9IHNoYXJlZEhp
c3RvcnkoKTsKICAgICBpZiAoKmhpc3RvcnkpCiAgICAgICAgICgqaGlzdG9yeSktPkFkZFJlZigp
OwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhp
c3Rvcnk6OnNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeSggCi0gICAgLyogW2luXSAqLyBJV2ViSGlz
dG9yeSogaGlzdG9yeSkKK0hSRVNVTFQgV2ViSGlzdG9yeTo6c2V0T3B0aW9uYWxTaGFyZWRIaXN0
b3J5KF9Jbl9vcHRfIElXZWJIaXN0b3J5KiBoaXN0b3J5KQogewogICAgIGlmIChzaGFyZWRIaXN0
b3J5U3RvcmFnZSgpID09IGhpc3RvcnkpCiAgICAgICAgIHJldHVybiBTX09LOwpAQCAtMjY3LDIx
ICsyNjcsMTkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5OjpzZQogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6
OnVudXNlZDEoKQorSFJFU1VMVCBXZWJIaXN0b3J5Ojp1bnVzZWQxKCkKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkhpc3Rvcnk6OnVudXNlZDIoKQorSFJFU1VMVCBXZWJIaXN0b3J5Ojp1bnVz
ZWQyKCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9GQUlMOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OmFkZEl0ZW1zKCAKLSAg
ICAvKiBbaW5dICovIGludCBpdGVtQ291bnQsCi0gICAgLyogW2luXSAqLyBJV2ViSGlzdG9yeUl0
ZW0qKiBpdGVtcykKK0hSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbXMoaW50IGl0ZW1Db3VudCwg
X19kZXJlZl9pbl9lY291bnRfb3B0KGl0ZW1Db3VudCkgSVdlYkhpc3RvcnlJdGVtKiogaXRlbXMp
CiB7CiAgICAgLy8gVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGluY29taW5nIGVudHJp
ZXMgYXJlIGluIGFueSBwYXJ0aWN1bGFyCiAgICAgLy8gb3JkZXIsIGJ1dCBpZiB0aGlzIGlzIGNh
bGxlZCB3aXRoIGEgc2V0IG9mIGVudHJpZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkKQEAgLTI5OSw5
ICsyOTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OmFkCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6
cmVtb3ZlSXRlbXMoIAotICAgIC8qIFtpbl0gKi8gaW50IGl0ZW1Db3VudCwKLSAgICAvKiBbaW5d
ICovIElXZWJIaXN0b3J5SXRlbSoqIGl0ZW1zKQorSFJFU1VMVCBXZWJIaXN0b3J5OjpyZW1vdmVJ
dGVtcyhpbnQgaXRlbUNvdW50LCBfX2RlcmVmX2luX2Vjb3VudF9vcHQoaXRlbUNvdW50KSBJV2Vi
SGlzdG9yeUl0ZW0qKiBpdGVtcykKIHsKICAgICBIUkVTVUxUIGhyOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgaXRlbUNvdW50OyArK2kpIHsKQEAgLTMxMyw3ICszMDksNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OnJlCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeTo6cmVtb3ZlQWxsSXRlbXMoIHZvaWQp
CitIUkVTVUxUIFdlYkhpc3Rvcnk6OnJlbW92ZUFsbEl0ZW1zKCkKIHsKICAgICBWZWN0b3I8SVdl
Ykhpc3RvcnlJdGVtKj4gaXRlbXNWZWN0b3I7CiAgICAgaXRlbXNWZWN0b3IucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX2VudHJpZXNCeVVSTC5zaXplKCkpOwpAQCAtMzI5LDI1ICszMjUsMTggQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5OjpyZQogfQogCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9yeSBpbnRl
cmZhY2UuCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6Om9yZGVyZWRMYXN0
VmlzaXRlZERheXMoIAotICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNvdW50LAotICAgIC8qIFtp
bl0gKi8gREFURSogY2FsZW5kYXJEYXRlcykKK0hSRVNVTFQgV2ViSGlzdG9yeTo6b3JkZXJlZExh
c3RWaXNpdGVkRGF5cyhfSW5vdXRfIGludCogY291bnQsIF9Jbl8gREFURSogY2FsZW5kYXJEYXRl
cykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlv
biBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9yeSBpbnRlcmZhY2UuCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6Om9yZGVyZWRJdGVtc0xhc3RWaXNpdGVk
T25EYXkoIAotICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNvdW50LAotICAgIC8qIFtpbl0gKi8g
SVdlYkhpc3RvcnlJdGVtKiogaXRlbXMsCi0gICAgLyogW2luXSAqLyBEQVRFIGNhbGVuZGFyRGF0
ZSkKK0hSRVNVTFQgV2ViSGlzdG9yeTo6b3JkZXJlZEl0ZW1zTGFzdFZpc2l0ZWRPbkRheShfSW5v
dXRfIGludCogY291bnQsIF9fZGVyZWZfaW5fb3B0IElXZWJIaXN0b3J5SXRlbSoqIGl0ZW1zLCBE
QVRFIGNhbGVuZGFyRGF0ZSkKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OmFsbEl0ZW1zKCAKLSAgICAvKiBbb3V0XVtp
bl0gKi8gaW50KiBjb3VudCwKLSAgICAvKiBbb3V0XVtyZXR2YWxdICovIElXZWJIaXN0b3J5SXRl
bSoqIGl0ZW1zKQorSFJFU1VMVCBXZWJIaXN0b3J5OjphbGxJdGVtcyhfSW5vdXRfIGludCogY291
bnQsIF9fZGVyZWZfb3B0X291dCBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVtcykKIHsKICAgICBpbnQg
ZW50cmllc0J5VVJMQ291bnQgPSBtX2VudHJpZXNCeVVSTC5zaXplKCk7CiAKQEAgLTM1OCw3ICsz
NDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OmFsCiAKICAgICBp
ZiAoKmNvdW50IDwgZW50cmllc0J5VVJMQ291bnQpIHsKICAgICAgICAgKmNvdW50ID0gZW50cmll
c0J5VVJMQ291bnQ7Ci0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX05P
VF9TVUZGSUNJRU5UX0JVRkZFUjsKICAgICB9CiAKICAgICAqY291bnQgPSBlbnRyaWVzQnlVUkxD
b3VudDsKQEAgLTM4MywzMyArMzcyLDM1IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6cmVtb3ZlQWxs
VmlzaXRlZExpbmsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJIaXN0b3J5OjpzZXRIaXN0b3J5SXRlbUxpbWl0KCAKLSAgICAvKiBbaW5dICovIGlu
dCBsaW1pdCkKK0hSRVNVTFQgV2ViSGlzdG9yeTo6c2V0SGlzdG9yeUl0ZW1MaW1pdChpbnQgbGlt
aXQpCiB7CiAgICAgaWYgKCFtX3ByZWZlcmVuY2VzKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
ICAgIHJldHVybiBtX3ByZWZlcmVuY2VzLT5zZXRIaXN0b3J5SXRlbUxpbWl0KGxpbWl0KTsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5OjpoaXN0b3J5SXRlbUxpbWl0
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogbGltaXQpCitIUkVTVUxUIFdlYkhpc3Rv
cnk6Omhpc3RvcnlJdGVtTGltaXQoX091dF8gaW50KiBsaW1pdCkKIHsKKyAgICBpZiAoIWxpbWl0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpsaW1pdCA9IDA7CiAgICAgaWYgKCFt
X3ByZWZlcmVuY2VzKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIHJldHVybiBtX3ByZWZl
cmVuY2VzLT5oaXN0b3J5SXRlbUxpbWl0KGxpbWl0KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJIaXN0b3J5OjpzZXRIaXN0b3J5QWdlSW5EYXlzTGltaXQoIAotICAgIC8qIFtp
bl0gKi8gaW50IGxpbWl0KQorSFJFU1VMVCBXZWJIaXN0b3J5OjpzZXRIaXN0b3J5QWdlSW5EYXlz
TGltaXQoaW50IGxpbWl0KQogewogICAgIGlmICghbV9wcmVmZXJlbmNlcykKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKICAgICByZXR1cm4gbV9wcmVmZXJlbmNlcy0+c2V0SGlzdG9yeUFnZUluRGF5
c0xpbWl0KGxpbWl0KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5
OjpoaXN0b3J5QWdlSW5EYXlzTGltaXQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBs
aW1pdCkKK0hSRVNVTFQgV2ViSGlzdG9yeTo6aGlzdG9yeUFnZUluRGF5c0xpbWl0KF9PdXRfIGlu
dCogbGltaXQpCiB7CisgICAgaWYgKCFsaW1pdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KyAgICAqbGltaXQgPSAwOwogICAgIGlmICghbV9wcmVmZXJlbmNlcykKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKICAgICByZXR1cm4gbV9wcmVmZXJlbmNlcy0+aGlzdG9yeUFnZUluRGF5c0xpbWl0
KGxpbWl0KTsKQEAgLTUzOCwxMSArNTI5LDExIEBAIHZvaWQgV2ViSGlzdG9yeTo6dmlzaXRlZFVS
TChjb25zdCBVUkwmIHUKICAgICBwb3N0Tm90aWZpY2F0aW9uKGtXZWJIaXN0b3J5SXRlbXNBZGRl
ZE5vdGlmaWNhdGlvbiwgdXNlckluZm8uZ2V0KCkpOwogfQogCi1IUkVTVUxUIFdlYkhpc3Rvcnk6
Oml0ZW1Gb3JVUkwoQlNUUiB1cmxCU3RyLCBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVtKQorSFJFU1VM
VCBXZWJIaXN0b3J5OjppdGVtRm9yVVJMKF9Jbl8gQlNUUiB1cmxCU3RyLCBfQ09NX091dHB0cl9v
cHRfIElXZWJIaXN0b3J5SXRlbSoqIGl0ZW0pCiB7CiAgICAgaWYgKCFpdGVtKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOwotICAgICppdGVtID0gMDsKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KyAgICAqaXRlbSA9IG51bGxwdHI7CiAKICAgICBTdHJpbmcgdXJsU3RyaW5nKHVybEJTdHIsIFN5
c1N0cmluZ0xlbih1cmxCU3RyKSk7CiAgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeS5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsNjIg
KzUxLDI5IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwg
dm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBB
ZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNl
KHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7Cisg
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJIaXN0b3J5
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9wdGlvbmFsU2hhcmVkSGlz
dG9yeSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkhpc3RvcnkqKiBoaXN0b3J5
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0T3B0aW9u
YWxTaGFyZWRIaXN0b3J5KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViSGlzdG9yeSogaGlzdG9y
eSk7Ci0gICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9wdGlvbmFs
U2hhcmVkSGlzdG9yeShfQ09NX091dHB0cl9vcHRfIElXZWJIaXN0b3J5KiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRPcHRpb25hbFNoYXJlZEhpc3RvcnkoX0lu
X29wdF8gSVdlYkhpc3RvcnkqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdW51c2VkMSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB1bnVzZWQyKCkgb3ZlcnJpZGU7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGFkZEl0ZW1zKCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQgaXRlbUNvdW50
LAotICAgICAgICAvKiBbaW5dICovIElXZWJIaXN0b3J5SXRlbSoqIGl0ZW1zKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlSXRlbXMoIAotICAgICAg
ICAvKiBbaW5dICovIGludCBpdGVtQ291bnQsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkhpc3Rv
cnlJdGVtKiogaXRlbXMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVBbGxJdGVtcyggdm9pZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG9yZGVyZWRMYXN0VmlzaXRlZERheXMoIAotICAgICAgICAvKiBbb3V0
XVtpbl0gKi8gaW50KiBjb3VudCwKLSAgICAgICAgLyogW2luXSAqLyBEQVRFKiBjYWxlbmRhckRh
dGVzKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3JkZXJl
ZEl0ZW1zTGFzdFZpc2l0ZWRPbkRheSggCi0gICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNv
dW50LAotICAgICAgICAvKiBbaW5dICovIElXZWJIaXN0b3J5SXRlbSoqIGl0ZW1zLAotICAgICAg
ICAvKiBbaW5dICovIERBVEUgY2FsZW5kYXJEYXRlKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpdGVtRm9yVVJMKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVy
bCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVtKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SGlzdG9yeUl0
ZW1MaW1pdCggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGxpbWl0KTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGlzdG9yeUl0ZW1MaW1pdCggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBsaW1pdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEhpc3RvcnlBZ2VJbkRheXNMaW1pdCggCi0gICAgICAg
IC8qIFtpbl0gKi8gaW50IGxpbWl0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaGlzdG9yeUFnZUluRGF5c0xpbWl0KCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBpbnQqIGxpbWl0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgYWRkSXRlbXMoaW50IGl0ZW1Db3VudCwgX19kZXJlZl9pbl9lY291bnRfb3B0KGl0ZW1Db3Vu
dCkgSVdlYkhpc3RvcnlJdGVtKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVJdGVtcyhpbnQgaXRlbUNvdW50LCBfX2RlcmVmX2luX2Vjb3VudF9vcHQoaXRl
bUNvdW50KSBJV2ViSGlzdG9yeUl0ZW0qKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZUFsbEl0ZW1zKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG9yZGVyZWRMYXN0VmlzaXRlZERheXMoX0lub3V0XyBpbnQqIGNvdW50LCBfSW5f
IERBVEUqIGNhbGVuZGFyRGF0ZXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBvcmRlcmVkSXRlbXNMYXN0VmlzaXRlZE9uRGF5KF9Jbm91dF8gaW50KiBjb3VudCwgX19k
ZXJlZl9pbl9vcHQgSVdlYkhpc3RvcnlJdGVtKiogaXRlbXMsIERBVEUgY2FsZW5kYXJEYXRlKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXRlbUZvclVSTChfSW5fIEJT
VFIgdXJsLCBfQ09NX091dHB0cl9vcHRfIElXZWJIaXN0b3J5SXRlbSoqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SGlzdG9yeUl0ZW1MaW1pdChpbnQpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoaXN0b3J5SXRlbUxpbWl0KF9PdXRf
IGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIaXN0b3J5
QWdlSW5EYXlzTGltaXQoaW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaGlzdG9yeUFnZUluRGF5c0xpbWl0KF9PdXRfIGludCopOwogCiAgICAgLy8gSVdlYkhpc3Rv
cnlQcml2YXRlCi0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsSXRl
bXMoIAotICAgICAgICAvKiBbb3V0XVtpbl0gKi8gaW50KiBjb3VudCwKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVtcyk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VmlzaXRlZExpbmtUcmFja2luZ0VuYWJsZWQoQk9P
TCB2aXNpdGVkTGlua1RyYWNraW5nRW5hYmxlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYWxsSXRlbXMoX0lub3V0XyBpbnQqIGNvdW50LCBfX2RlcmVmX29wdF9vdXQg
SVdlYkhpc3RvcnlJdGVtKiogaXRlbXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRWaXNpdGVkTGlua1RyYWNraW5nRW5hYmxlZChCT09MKTsKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CiAKICAg
ICAvLyBXZWJIaXN0b3J5CkBAIC0xMzgsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICBIUkVTVUxU
IHJlbW92ZUl0ZW1Gb3JVUkxTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHVybFN0cmluZyk7CiAg
ICAgQlNUUiBnZXROb3RpZmljYXRpb25TdHJpbmcoTm90aWZpY2F0aW9uVHlwZSBub3RpZnlUeXBl
KTsKIAotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsK
ICAgICBVUkxUb0VudHJpZXNNYXAgbV9lbnRyaWVzQnlVUkw7CiAgICAgQ09NUHRyPFdlYlByZWZl
cmVuY2VzPiBtX3ByZWZlcmVuY2VzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkhp
c3RvcnlJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw4ICs0Nyw3IEBA
IHN0YXRpYyBIYXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUkKIH0KIAogV2ViSGlzdG9y
eUl0ZW06OldlYkhpc3RvcnlJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVt
KQotOiBtX3JlZkNvdW50KDApCi0sIG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCisgICAgOiBt
X2hpc3RvcnlJdGVtKGhpc3RvcnlJdGVtKQogewogICAgIEFTU0VSVCghaGlzdG9yeUl0ZW1XcmFw
cGVycygpLmNvbnRhaW5zKG1faGlzdG9yeUl0ZW0uZ2V0KCkpKTsKICAgICBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwpAQCAtOTMsNyArOTIsNyBA
QCBzdGF0aWMgQ0ZTdHJpbmdSZWYgdGl0bGVLZXkgPSBDRlNUUigidGl0CiBzdGF0aWMgQ0ZTdHJp
bmdSZWYgbGFzdFZpc2l0V2FzRmFpbHVyZUtleSA9IENGU1RSKCJsYXN0VmlzaXRXYXNGYWlsdXJl
Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgcmVkaXJlY3RVUkxzS2V5ID0gQ0ZTVFIoInJlZGlyZWN0
VVJMcyIpOwogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjppbml0
RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiBkaWN0aW9uYXJ5KQorSFJFU1VMVCBX
ZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oX0luX29wdF8g
dm9pZCogZGljdGlvbmFyeSkKIHsKICAgICBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZiA9
IChDRkRpY3Rpb25hcnlSZWYpIGRpY3Rpb25hcnk7CiAKQEAgLTEzMSwyNyArMTMwLDMwIEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1cm4gU19PSzsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFy
eVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW9uYXJ5KQorSFJFU1VMVCBXZWJIaXN0b3J5SXRl
bTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKF9fZGVyZWZfb3V0X29wdCB2b2lkKiogZGljdGlv
bmFyeSkKIHsKICAgICBDRkRpY3Rpb25hcnlSZWYqIGRpY3Rpb25hcnlSZWYgPSAoQ0ZEaWN0aW9u
YXJ5UmVmKikgZGljdGlvbmFyeTsKIAotICAgIGludCBrZXlDb3VudCA9IDA7CisgICAgc2l6ZV90
IGtleUNvdW50ID0gMDsKICAgICBDRlR5cGVSZWYga2V5c1s5XTsKICAgICBDRlR5cGVSZWYgdmFs
dWVzWzldOwogCiAgICAgaWYgKCFtX2hpc3RvcnlJdGVtLT51cmxTdHJpbmcoKS5pc0VtcHR5KCkp
IHsKICAgICAgICAga2V5c1trZXlDb3VudF0gPSB1cmxLZXk7Ci0gICAgICAgIHZhbHVlc1trZXlD
b3VudCsrXSA9IG1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkubGVh
a1JlZigpOworICAgICAgICB2YWx1ZXNba2V5Q291bnRdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CisgICAgICAgICsra2V5Q291bnQ7CiAg
ICAgfQogCiAgICAgaWYgKCFtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmlzRW1wdHkoKSkgewogICAg
ICAgICBrZXlzW2tleUNvdW50XSA9IHRpdGxlS2V5OwotICAgICAgICB2YWx1ZXNba2V5Q291bnQr
K10gPSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwor
ICAgICAgICB2YWx1ZXNba2V5Q291bnRdID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKTsKKyAgICAgICAgKytrZXlDb3VudDsKICAgICB9CiAKICAgICBp
ZiAobV9oaXN0b3J5SXRlbS0+bGFzdFZpc2l0V2FzRmFpbHVyZSgpKSB7CiAgICAgICAgIGtleXNb
a2V5Q291bnRdID0gbGFzdFZpc2l0V2FzRmFpbHVyZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNv
dW50KytdID0gQ0ZSZXRhaW4oa0NGQm9vbGVhblRydWUpOworICAgICAgICB2YWx1ZXNba2V5Q291
bnRdID0gQ0ZSZXRhaW4oa0NGQm9vbGVhblRydWUpOworICAgICAgICArK2tleUNvdW50OwogICAg
IH0KIAogICAgIGlmIChWZWN0b3I8U3RyaW5nPiogcmVkaXJlY3RVUkxzID0gbV9oaXN0b3J5SXRl
bS0+cmVkaXJlY3RVUkxzKCkpIHsKQEAgLTE2Niw3ICsxNjgsOCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkhpc3RvcnlJdGVtCiAgICAgICAgIGRlbGV0ZVtdIGl0ZW1zOwogCiAgICAg
ICAgIGtleXNba2V5Q291bnRdID0gcmVkaXJlY3RVUkxzS2V5OwotICAgICAgICB2YWx1ZXNba2V5
Q291bnQrK10gPSByZXN1bHQ7CisgICAgICAgIHZhbHVlc1trZXlDb3VudF0gPSByZXN1bHQ7Cisg
ICAgICAgICsra2V5Q291bnQ7CiAgICAgfQogCiAgICAgKmRpY3Rpb25hcnlSZWYgPSBDRkRpY3Rp
b25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCBrZXlDb3VudCwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CkBAIC0xNzcs
NzMgKzE4MCw4NCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9y
eUl0ZW06Omhhc1VSTFN0cmluZyhCT09MICpoYXNVUkwpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVt
OjpoYXNVUkxTdHJpbmcoX091dF8gQk9PTCogaGFzVVJMKQogeworICAgIGlmICghaGFzVVJMKQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpoYXNVUkwgPSBtX2hpc3RvcnlJdGVtLT51
cmxTdHJpbmcoKS5pc0VtcHR5KCkgPyBGQUxTRSA6IFRSVUU7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIElX
ZWJIaXN0b3J5SXRlbSBpbnRlcmZhY2UuCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhp
c3RvcnlJdGVtOjp2aXNpdENvdW50KGludCAqY291bnQpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVt
Ojp2aXNpdENvdW50KF9PdXRfIGludCogY291bnQpCiB7CisgICAgaWYgKCFjb3VudCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBGSVhN
RTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9yeUl0
ZW0gaW50ZXJmYWNlLgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6
c2V0VmlzaXRDb3VudChpbnQgY291bnQpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRWaXNp
dENvdW50KGludCBjb3VudCkKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogCiB9CiAKIC8vIEZJ
WE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIElXZWJIaXN0b3J5
SXRlbSBpbnRlcmZhY2UuCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVt
OjptZXJnZUF1dG9Db21wbGV0ZUhpbnRzKElXZWJIaXN0b3J5SXRlbSogb3RoZXJJdGVtKQorSFJF
U1VMVCBXZWJIaXN0b3J5SXRlbTo6bWVyZ2VBdXRvQ29tcGxldGVIaW50cyhfSW5fb3B0XyBJV2Vi
SGlzdG9yeUl0ZW0qKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIElXZWJIaXN0b3J5SXRlbSBp
bnRlcmZhY2UuCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpzZXRM
YXN0VmlzaXRlZFRpbWVJbnRlcnZhbChEQVRFIHRpbWUpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVt
OjpzZXRMYXN0VmlzaXRlZFRpbWVJbnRlcnZhbChEQVRFIHRpbWUpCiB7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6
c2V0VGl0bGUoQlNUUiB0aXRsZSkKK0hSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OnNldFRpdGxlKF9J
bl8gQlNUUiB0aXRsZSkKIHsKICAgICBtX2hpc3RvcnlJdGVtLT5zZXRUaXRsZShTdHJpbmcodGl0
bGUsIFN5c1N0cmluZ0xlbih0aXRsZSkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpSU1NGZWVkUmVmZXJyZXIoQlNU
UiogdXJsKQorSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6UlNTRmVlZFJlZmVycmVyKF9fZGVyZWZf
b3V0X29wdCBCU1RSKiB1cmwpCiB7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisKICAgICBCU3RyaW5nIHN0cihtX2hpc3RvcnlJdGVtLT5yZWZlcnJlcigpKTsKICAg
ICAqdXJsID0gc3RyLnJlbGVhc2UoKTsKIAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpzZXRSU1NGZWVkUmVmZXJyZXIoQlNU
UiB1cmwpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRSU1NGZWVkUmVmZXJyZXIoX0luXyBC
U1RSIHVybCkKIHsKICAgICBtX2hpc3RvcnlJdGVtLT5zZXRSZWZlcnJlcihTdHJpbmcodXJsLCBT
eXNTdHJpbmdMZW4odXJsKSkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06Omhhc1BhZ2VDYWNoZShCT09MKiAvKmhhc0Nh
Y2hlKi8pCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpoYXNQYWdlQ2FjaGUoX091dF8gQk9PTCog
aGFzQ2FjaGUpCiB7CiAgICAgLy8gRklYTUUgLSBUT0RPCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgaWYgKCFoYXNDYWNoZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
aGFzQ2FjaGUgPSBGQUxTRTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpzZXRIYXNQYWdlQ2FjaGUoQk9PTCAvKmhh
c0NhY2hlKi8pCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRIYXNQYWdlQ2FjaGUoQk9PTCAv
Kmhhc0NhY2hlKi8pCiB7CiAgICAgLy8gRklYTUUgLSBUT0RPCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJIaXN0b3J5SXRlbTo6dGFyZ2V0KEJTVFIqIHRhcmdldCkKK0hSRVNVTFQgV2ViSGlz
dG9yeUl0ZW06OnRhcmdldChfX2RlcmVmX291dF9vcHQgQlNUUiogdGFyZ2V0KQogewogICAgIGlm
ICghdGFyZ2V0KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjU0LDcgKzI2
OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6
aXNUYXJnZXRJdGVtKEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmlzVGFy
Z2V0SXRlbShfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNjUsNyArMjc5LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpjaGlsZHJlbih1bnNpZ25lZCog
b3V0Q2hpbGRDb3VudCwgU0FGRUFSUkFZKiogb3V0Q2hpbGRyZW4pCitIUkVTVUxUIFdlYkhpc3Rv
cnlJdGVtOjpjaGlsZHJlbih1bnNpZ25lZCogb3V0Q2hpbGRDb3VudCwgU0FGRUFSUkFZKiogb3V0
Q2hpbGRyZW4pCiB7CiAgICAgaWYgKCFvdXRDaGlsZENvdW50IHx8ICFvdXRDaGlsZHJlbikgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMwNSw3ICszMTksNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtCiAKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6bGFzdFZpc2l0V2FzRmFpbHVyZShCT09MKiB3YXNG
YWlsdXJlKQorSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6bGFzdFZpc2l0V2FzRmFpbHVyZShfT3V0
XyBCT09MKiB3YXNGYWlsdXJlKQogewogICAgIGlmICghd2FzRmFpbHVyZSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMxNiwyNSArMzMwLDI4IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6c2V0TGFzdFZpc2l0V2FzRmFpbHVy
ZShCT09MIHdhc0ZhaWx1cmUpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRMYXN0VmlzaXRX
YXNGYWlsdXJlKEJPT0wgd2FzRmFpbHVyZSkKIHsKICAgICBtX2hpc3RvcnlJdGVtLT5zZXRMYXN0
VmlzaXRXYXNGYWlsdXJlKHdhc0ZhaWx1cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCiAvLyBG
SVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9y
eUl0ZW0gaW50ZXJmYWNlLgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRl
bTo6bGFzdFZpc2l0V2FzSFRUUE5vbkdldChCT09MKiBIVFRQTm9uR2V0KQorSFJFU1VMVCBXZWJI
aXN0b3J5SXRlbTo6bGFzdFZpc2l0V2FzSFRUUE5vbkdldChfT3V0XyBCT09MKiBIVFRQTm9uR2V0
KQogeworICAgIGlmICghSFRUUE5vbkdldCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqSFRUUE5vbkdldCA9IEZBTFNFOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIC8vIEZJ
WE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIElXZWJIaXN0b3J5
SXRlbSBpbnRlcmZhY2UuCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVt
OjpzZXRMYXN0VmlzaXRXYXNIVFRQTm9uR2V0KEJPT0wgSFRUUE5vbkdldCkKK0hSRVNVTFQgV2Vi
SGlzdG9yeUl0ZW06OnNldExhc3RWaXNpdFdhc0hUVFBOb25HZXQoQk9PTCkKIHsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJ
dGVtOjpyZWRpcmVjdFVSTHMoSUVudW1WQVJJQU5UKiogdXJscykKK0hSRVNVTFQgV2ViSGlzdG9y
eUl0ZW06OnJlZGlyZWN0VVJMcyhfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFOVCoqIHVybHMp
CiB7CiAgICAgaWYgKCF1cmxzKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MzU0LDI1ICszNzEsMjkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRl
bQogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRo
ZSBJV2ViSGlzdG9yeUl0ZW0gaW50ZXJmYWNlLgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJIaXN0b3J5SXRlbTo6dmlzaXRlZFdpdGhUaXRsZShCU1RSIHRpdGxlLCBCT09MIGluY3JlYXNl
VmlzaXRDb3VudCkKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OnZp
c2l0ZWRXaXRoVGl0bGUoX0luXyBCU1RSIHRpdGxlLCBCT09MIGluY3JlYXNlVmlzaXRDb3VudCkK
IHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBz
aG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9yeUl0ZW0gaW50ZXJmYWNlLgotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6Z2V0RGFpbHlWaXNpdENvdW50
cyhpbnQqIG51bWJlciwgaW50KiogY291bnRzKQorSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6Z2V0
RGFpbHlWaXNpdENvdW50cyhfT3V0XyBpbnQqIG51bWJlciwgX19kZXJlZl9vdXRfb3B0IGludCoq
IGNvdW50cykKIHsKKyAgICBpZiAoIW51bWJlciB8fCAhY291bnRzKQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIElXZWJIaXN0b3J5SXRlbSBpbnRlcmZh
Y2UuCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpnZXRXZWVrbHlW
aXNpdENvdW50cyhpbnQqIG51bWJlciwgaW50KiogY291bnRzKQorSFJFU1VMVCBXZWJIaXN0b3J5
SXRlbTo6Z2V0V2Vla2x5VmlzaXRDb3VudHMoX091dF8gaW50KiBudW1iZXIsIF9fZGVyZWZfb3V0
X29wdCBpbnQqKiBjb3VudHMpCiB7CisgICAgaWYgKCFudW1iZXIgfHwgIWNvdW50cykKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBGSVhN
RTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9yeUl0
ZW0gaW50ZXJmYWNlLgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6
cmVjb3JkSW5pdGlhbFZpc2l0KCkKK0hSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OnJlY29yZEluaXRp
YWxWaXNpdCgpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92
ZWQgZnJvbSB0aGUgSVdlYkhpc3RvcnlJdGVtIGludGVyZmFjZS4KICAgICByZXR1cm4gRV9OT1RJ
TVBMOwpAQCAtMzgwLDkgKzQwMSwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhp
c3RvcnlJdGVtCiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQq
KiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2
T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwg
X191dWlkb2YoV2ViSGlzdG9yeUl0ZW0pKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHRoaXM7CiAg
ICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKQEAgLTM5OCwxMiAr
NDIxLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06
OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViSGlzdG9yeUl0ZW06OkFkZFJlZigpCiB7CiAgICAgcmV0
dXJuICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9y
eUl0ZW06OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYkhpc3RvcnlJdGVtOjpSZWxlYXNlKCkKIHsK
ICAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC00
MTQsMTAgKzQzNyw3IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjoK
IAogLy8gSVdlYkhpc3RvcnlJdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJIaXN0b3J5SXRlbTo6aW5pdFdpdGhVUkxTdHJpbmcoCi0gICAgLyogW2luXSAqLyBCU1RSIHVy
bFN0cmluZywKLSAgICAvKiBbaW5dICovIEJTVFIgdGl0bGUsCi0gICAgLyogW2luXSAqLyBEQVRF
IGxhc3RWaXNpdGVkKQorSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aW5pdFdpdGhVUkxTdHJpbmco
X0luXyBCU1RSIHVybFN0cmluZywgX0luXyBCU1RSIHRpdGxlLCBEQVRFIGxhc3RWaXNpdGVkKQog
ewogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7
CiAgICAgbV9oaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoU3RyaW5nKHVybFN0cmlu
ZywgU3lzU3RyaW5nTGVuKHVybFN0cmluZykpLCBTdHJpbmcodGl0bGUsIFN5c1N0cmluZ0xlbih0
aXRsZSkpKTsKQEAgLTQyNiw4ICs0NDYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
Ykhpc3RvcnlJdGVtCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViSGlzdG9yeUl0ZW06Om9yaWdpbmFsVVJMU3RyaW5nKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHVybCkKK0hSRVNVTFQgV2ViSGlzdG9yeUl0ZW06Om9yaWdpbmFsVVJM
U3RyaW5nKF9fZGVyZWZfb3B0X291dCBCU1RSKiB1cmwpCiB7CiAgICAgaWYgKCF1cmwpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC00MzcsOCArNDU2LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpVUkxTdHJpbmcoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogdXJsKQorSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6VVJMU3Ry
aW5nKF9fZGVyZWZfb3B0X291dCBCU1RSKiB1cmwpCiB7CiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CkBAIC00NDgsOCArNDY2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjp0aXRsZSggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiBwYWdlVGl0bGUpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjp0aXRsZShf
X2RlcmVmX29wdF9vdXQgQlNUUiogcGFnZVRpdGxlKQogewogICAgIGlmICghcGFnZVRpdGxlKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNDYwLDIxICs0NzcsMjAgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5j
dGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBJV2ViSGlzdG9yeUl0ZW0gaW50ZXJmYWNl
LgotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWRU
aW1lSW50ZXJ2YWwoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gREFURSogbGFzdFZpc2l0ZWQp
CitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpsYXN0VmlzaXRlZFRpbWVJbnRlcnZhbChfT3V0XyBE
QVRFKiBsYXN0VmlzaXRlZCkKIHsKKyAgICBpZiAoIWxhc3RWaXNpdGVkKQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OnNldEFsdGVybmF0ZVRpdGxlKCAKLSAgICAvKiBb
aW5dICovIEJTVFIgdGl0bGUpCitIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRBbHRlcm5hdGVU
aXRsZShfSW5fIEJTVFIgdGl0bGUpCiB7CiAgICAgbV9hbHRlcm5hdGVUaXRsZSA9IFN0cmluZyh0
aXRsZSwgU3lzU3RyaW5nTGVuKHRpdGxlKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OmFsdGVybmF0ZVRpdGxlKCAKLSAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHRpdGxlKQorSFJFU1VMVCBXZWJIaXN0b3J5SXRl
bTo6YWx0ZXJuYXRlVGl0bGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHRpdGxlKQogewogICAgIGlm
ICghdGl0bGUpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00ODUsOSArNTAx
LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW0KICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6
aWNvbigvKiBbb3V0LCByZXR2YWxdICovIEhCSVRNQVAqIC8qaEJpdG1hcCovKQorSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6aWNvbihfX2RlcmVmX29wdF9vdXQgSEJJ
VE1BUCogaEJpdG1hcCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIWhC
aXRtYXApCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCShyZXZpc2lvbiAxODg2Mzgp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUwLDY2ICs1MCw1MSBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAg
ICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uo
KTsKIAogICAgIC8vIElXZWJIaXN0b3J5SXRlbQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpbml0V2l0aFVSTFN0cmluZyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1
cmxTdHJpbmcsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwKLSAgICAgICAgLyogW2lu
XSAqLyBEQVRFIGxhc3RWaXNpdGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgb3JpZ2luYWxVUkxTdHJpbmcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKnVybCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFVSTFN0cmluZyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqdXJsKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGl0bGUoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnBhZ2VUaXRsZSk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RWaXNpdGVkVGltZUludGVydmFsKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBEQVRFICpsYXN0VmlzaXRlZCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsdGVybmF0ZVRpdGxlKCAK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgYWx0ZXJuYXRlVGl0bGUoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHRpdGxlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaWNvbigvKiBbb3V0LCByZXR2YWxdICovIEhCSVRNQVAqIGhCaXRtYXApOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFVSTFN0cmluZyhf
SW5fIEJTVFIgdXJsU3RyaW5nLCBfSW5fIEJTVFIgdGl0bGUsIERBVEUgbGFzdFZpc2l0ZWQpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvcmlnaW5hbFVSTFN0cmluZyhf
X2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBVUkxTdHJpbmcoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdGl0bGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWwo
X091dF8gREFURSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRB
bHRlcm5hdGVUaXRsZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhbHRlcm5hdGVUaXRsZShfX2RlcmVmX29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uKF9fZGVyZWZfb3B0X291dCBIQklUTUFQ
Kik7CiAKICAgICAvLyBJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQq
IGRpY3Rpb25hcnkpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3Rpb25hcnkpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNpdENvdW50KGludCAqY291bnQpOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRWaXNpdENvdW50KGludCBjb3VudCk7Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc1VSTFN0cmluZyhCT09MKiBo
YXNVUkwpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZXJnZUF1dG9D
b21wbGV0ZUhpbnRzKElXZWJIaXN0b3J5SXRlbSogb3RoZXJJdGVtKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24o
X0luX29wdF8gdm9pZCogZGljdGlvbmFyeSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfX2RlcmVmX291dF9vcHQgdm9pZCoq
IGRpY3Rpb25hcnkpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNp
dENvdW50KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRWaXNpdENvdW50KGludCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhhc1VSTFN0cmluZyhfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIG1lcmdlQXV0b0NvbXBsZXRlSGludHMoX0luX29wdF8gSVdlYkhpc3RvcnlJ
dGVtKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExhc3RWaXNp
dGVkVGltZUludGVydmFsKERBVEUgdGltZSk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFRpdGxlKEJTVFIgdGl0bGUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBSU1NGZWVkUmVmZXJyZXIoQlNUUiogdXJsKTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UlNTRmVlZFJlZmVycmVyKEJTVFIgdXJsKTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzUGFnZUNhY2hlKEJPT0wgKmhh
c0NhY2hlKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SGFzUGFn
ZUNhY2hlKEJPT0wgaGFzQ2FjaGUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB0YXJnZXQoQlNUUiogdGFyZ2V0KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNUYXJnZXRJdGVtKEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFRpdGxlKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFJTU0ZlZWRSZWZlcnJlcihfX2RlcmVmX291dF9vcHQgQlNU
UiogdXJsKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UlNTRmVl
ZFJlZmVycmVyKF9Jbl8gQlNUUiB1cmwpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBoYXNQYWdlQ2FjaGUoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRIYXNQYWdlQ2FjaGUoQk9PTCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHRhcmdldChfX2RlcmVmX291dF9vcHQgQlNUUiopOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1RhcmdldEl0ZW0oX091dF8gQk9P
TCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZHJlbih1bnNp
Z25lZCogY2hpbGRDb3VudCwgU0FGRUFSUkFZKiogY2hpbGRyZW4pOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0VmlzaXRXYXNGYWlsdXJlKEJPT0wqIHdhc0ZhaWx1
cmUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRMYXN0VmlzaXRX
YXNGYWlsdXJlKEJPT0wgd2FzRmFpbHVyZSk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGxhc3RWaXNpdFdhc0hUVFBOb25HZXQoQk9PTCogSFRUUE5vbkdldCk7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExhc3RWaXNpdFdhc0hUVFBOb25H
ZXQoQk9PTCBIVFRQTm9uR2V0KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcmVkaXJlY3RVUkxzKElFbnVtVkFSSUFOVCoqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgdmlzaXRlZFdpdGhUaXRsZShCU1RSIHRpdGxlLCBCT09MIGluY3JlYXNl
VmlzaXRDb3VudCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldERh
aWx5VmlzaXRDb3VudHMoaW50KiBudW1iZXIsIGludCoqIGNvdW50cyk7Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldFdlZWtseVZpc2l0Q291bnRzKGludCogbnVtYmVy
LCBpbnQqKiBjb3VudHMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBs
YXN0VmlzaXRXYXNGYWlsdXJlKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0TGFzdFZpc2l0V2FzRmFpbHVyZShCT09MKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFzdFZpc2l0V2FzSFRUUE5vbkdldChfT3V0XyBC
T09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExhc3RWaXNp
dFdhc0hUVFBOb25HZXQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJlZGlyZWN0VVJMcyhfQ09NX091dHB0cl9vcHRfIElFbnVtVkFSSUFOVCoqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlzaXRlZFdpdGhUaXRsZShfSW5fIEJT
VFIgdGl0bGUsIEJPT0wgaW5jcmVhc2VWaXNpdENvdW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0RGFpbHlWaXNpdENvdW50cyhfT3V0XyBpbnQqIG51bWJlciwg
X19kZXJlZl9vdXRfb3B0IGludCoqIGNvdW50cyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGdldFdlZWtseVZpc2l0Q291bnRzKF9PdXRfIGludCogbnVtYmVyLCBfX2Rl
cmVmX291dF9vcHQgaW50KiogY291bnRzKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVjb3JkSW5pdGlhbFZpc2l0KCk7CisKICAgICAvLyBXZWJIaXN0b3J5SXRlbQog
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSgpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9Owog
CiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX2hpc3RvcnlJdGVtOwogICAgIFdU
Rjo6U3RyaW5nIG1fYWx0ZXJuYXRlVGl0bGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJJ
Y29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkljb25E
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYklj
b25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDksIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ5LDggKzQ5LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIFdlYkljb25E
YXRhYmFzZSogV2ViSWNvbkRhdGFiYXNlOjptX3NoYXJlZFdlYkljb25EYXRhYmFzZSA9IDA7CiAK
IFdlYkljb25EYXRhYmFzZTo6V2ViSWNvbkRhdGFiYXNlKCkKLSAgICA6IG1fcmVmQ291bnQoMCkK
LSAgICAsIG1fZGVsaXZlcnlSZXF1ZXN0ZWQoZmFsc2UpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
ICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkljb25EYXRhYmFzZSIpOwpAQCAtMTIzLDkg
KzEyMSwxMSBAQCBXZWJJY29uRGF0YWJhc2UqIFdlYkljb25EYXRhYmFzZTo6c2hhcmVkCiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJY29u
RGF0YWJhc2U6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQor
SFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQs
IF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOwor
ICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZP
YmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24p
KQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkljb25EYXRhYmFzZSo+KHRo
aXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViSWNvbkRhdGFiYXNl
KSkKQEAgLTEzNywxMiArMTM3LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSWNv
bkRhdGFiYXMKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViSWNvbkRhdGFiYXNlOjpBZGRSZWYodm9pZCkKK1VMT05HIFdlYkljb25EYXRhYmFzZTo6QWRk
UmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBXZWJJY29uRGF0YWJhc2U6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYkljb25EYXRh
YmFzZTo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAg
IGlmICghbmV3UmVmKQpAQCAtMTUzLDIxICsxNTMsMjIgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSWNvbkRhdGFiYXNlOgogCiAvLyBJV2ViSWNvbkRhdGFiYXNlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSWNvbkRhdGFiYXNlOjpzaGFyZWRJY29uRGF0
YWJhc2UoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkljb25EYXRhYmFzZSoqIHJl
c3VsdCkKK0hSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpzaGFyZWRJY29uRGF0YWJhc2UoX0NPTV9P
dXRwdHJfb3B0XyBJV2ViSWNvbkRhdGFiYXNlKiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSBzaGFyZWRXZWJJY29u
RGF0YWJhc2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJJY29uRGF0YWJh
c2U6Omljb25Gb3JVUkwoQlNUUiB1cmwsIExQU0laRSBzaXplLCBCT09MIC8qY2FjaGUqLywgSEJJ
VE1BUCogYml0bWFwKQorSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omljb25Gb3JVUkwoX0luXyBC
U1RSIHVybCwgX0luXyBMUFNJWkUgc2l6ZSwgQk9PTCAvKmNhY2hlKi8sIF9fZGVyZWZfb3B0X291
dCBIQklUTUFQKiBiaXRtYXApCiB7Ci0gICAgaWYgKCFzaXplKQorICAgIGlmICghc2l6ZSB8fCAh
Yml0bWFwKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgSW50U2l6ZSBpbnRTaXpl
KCpzaXplKTsKIAotICAgIEltYWdlKiBpY29uID0gMDsKKyAgICBJbWFnZSogaWNvbiA9IG51bGxw
dHI7CiAgICAgaWYgKHVybCkKICAgICAgICAgaWNvbiA9IGljb25EYXRhYmFzZSgpLnN5bmNocm9u
b3VzSWNvbkZvclBhZ2VVUkwoU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpLCBpbnRTaXpl
KTsKIApAQCAtMTg1LDkgKzE4Niw5IEBAIEhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjppY29uRm9y
VVJMKEJTVFIKICAgICByZXR1cm4gZGVmYXVsdEljb25XaXRoU2l6ZShzaXplLCBiaXRtYXApOwog
fQogCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6ZGVmYXVsdEljb25XaXRoU2l6ZShMUFNJWkUg
c2l6ZSwgSEJJVE1BUCogcmVzdWx0KQorSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OmRlZmF1bHRJ
Y29uV2l0aFNpemUoX0luXyBMUFNJWkUgc2l6ZSwgX19kZXJlZl9vcHRfb3V0IEhCSVRNQVAqIHJl
c3VsdCkKIHsKLSAgICBpZiAoIXNpemUpCisgICAgaWYgKCFzaXplIHx8ICFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBJbnRTaXplIGludFNpemUoKnNpemUpOwpAQCAt
MTk2LDQxICsxOTcsMzcgQEAgSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OmRlZmF1bHRJY29uV2l0
aAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYklj
b25EYXRhYmFzZTo6cmV0YWluSWNvbkZvclVSTCgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVy
bCkKK0hSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpyZXRhaW5JY29uRm9yVVJMKF9Jbl8gQlNUUiB1
cmwpCiB7CiAgICAgaWNvbkRhdGFiYXNlKCkucmV0YWluSWNvbkZvclBhZ2VVUkwoU3RyaW5nKHVy
bCwgU3lzU3RyaW5nTGVuKHVybCkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yVVJMKAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgdXJsKQorSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OnJlbGVh
c2VJY29uRm9yVVJMKF9Jbl8gQlNUUiB1cmwpCiB7CiAgICAgaWNvbkRhdGFiYXNlKCkucmVsZWFz
ZUljb25Gb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSWNvbkRhdGFiYXNl
OjpyZW1vdmVBbGxJY29ucyh2b2lkKQorSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OnJlbW92ZUFs
bEljb25zKCkKIHsKICAgICBpY29uRGF0YWJhc2UoKS5yZW1vdmVBbGxJY29ucygpOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFz
ZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAodm9pZCkKK0hSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpk
ZWxheURhdGFiYXNlQ2xlYW51cCgpCiB7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNl
Q2xlYW51cCgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAodm9pZCkKK0hSRVNVTFQg
V2ViSWNvbkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpCiB7CiAgICAgSWNvbkRhdGFi
YXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzZTo6aWNvblVSTEZvclVSTCggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogaWNvblVSTCkKK0hSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjppY29uVVJMRm9yVVJMKF9J
bl8gQlNUUiB1cmwsIF9fZGVyZWZfb3B0X291dCBCU1RSKiBpY29uVVJMKQogewogICAgIGlmICgh
dXJsIHx8ICFpY29uVVJMKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjM5LDE1ICsy
MzYsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhcwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFz
ZTo6aXNFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQp
CitIUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aXNFbmFibGVkKF9PdXRfIEJPT0wqIHJlc3VsdCkK
IHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVz
dWx0ID0gaWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSWNvbkRhdGFiYXNlOjpzZXRFbmFibGVkKCAK
LSAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCitIUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6
c2V0RW5hYmxlZChCT09MIGZsYWcpCiB7CiAgICAgQk9PTCBjdXJyZW50bHlFbmFibGVkOwogICAg
IGlzRW5hYmxlZCgmY3VycmVudGx5RW5hYmxlZCk7CkBAIC0yNjEsOSArMjU4LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhcwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzZTo6aGFzSWNvbkZvclVS
TCgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCwKLSAgICAgICAgLyogW291dF1bcmV0dmFs
XSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aGFzSWNvbkZvclVS
TChfSW5fIEJTVFIgdXJsLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCF1cmwgfHwg
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkljb25EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
Ykljb25EYXRhYmFzZS5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJJY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMtMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxMy0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTgsNDMgKzU4LDIzIEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAgICAv
LyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBB
ZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsK
IAogICAgIC8vIElXZWJJY29uRGF0YWJhc2UKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hhcmVkSWNvbkRhdGFiYXNlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJV2ViSWNvbkRhdGFiYXNlICoqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaWNvbkZvclVSTChCU1RSIHVybCwgTFBTSVpFLCBCT09MIGNhY2hl
LCBIQklUTUFQKiBpbWFnZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGVmYXVsdEljb25XaXRoU2l6ZSgvKiBbaW5dICovIExQU0laRSBzaXplLCAvKiBbcmV0dmFs
XVtvdXRdICovIEhCSVRNQVAqIHJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJldGFpbkljb25Gb3JVUkwoIAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgdXJsKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVs
ZWFzZUljb25Gb3JVUkwoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsKTsKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBbGxJY29ucyggdm9pZCk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlbGF5RGF0YWJhc2VD
bGVhbnVwKCB2b2lkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgYWxsb3dEYXRhYmFzZUNsZWFudXAoIHZvaWQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGljb25VUkxGb3JVUkwoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
dXJsLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKmljb25VUkwpOwotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRW5hYmxlZCggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRFbmFibGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIC8q
ZmxhZyovKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNJY29u
Rm9yVVJMKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNoYXJlZEljb25EYXRhYmFzZShfQ09NX091dHB0cl9vcHRfIElXZWJJY29uRGF0YWJh
c2UqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb25Gb3JVUkwo
X0luXyBCU1RSIHVybCwgX0luXyBMUFNJWkUsIEJPT0wgY2FjaGUsIF9fZGVyZWZfb3B0X291dCBI
QklUTUFQKiBpbWFnZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRl
ZmF1bHRJY29uV2l0aFNpemUoX0luXyBMUFNJWkUsIF9fZGVyZWZfb3B0X291dCBIQklUTUFQKiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXRhaW5JY29u
Rm9yVVJMKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJlbGVhc2VJY29uRm9yVVJMKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZUFsbEljb25zKCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGFsbG93RGF0YWJhc2VDbGVhbnVwKCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb25VUkxGb3JVUkwoX0luXyBCU1RSIHVybCwgX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIGljb25VUkwpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpc0VuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRFbmFibGVkKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBoYXNJY29uRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9PdXRfIEJPT0wq
IHJlc3VsdCk7CiAKICAgICAvLyBJY29uRGF0YWJhc2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVtb3ZlQWxsSWNvbnMoKTsKQEAgLTEwNyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQlNUUiBpY29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJY29uc05vdGlmaWNhdGlvbigpOwogICAg
IHN0YXRpYyBCU1RSIGljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCk7CiBw
cm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogICAgIHN0YXRpYyBXZWJJY29uRGF0YWJhc2UqIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNl
OwogCiAgICAgLy8gS2VlcCBhIHNldCBvZiBIQklUTUFQcyBhcm91bmQgZm9yIHRoZSBkZWZhdWx0
IGljb24sIGFuZCBhbm90aGVyCkBAIC0xMjAsNyArMTAwLDcgQEAgcHJvdGVjdGVkOgogICAgIExv
Y2sgbV9ub3RpZmljYXRpb25NdXRleDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX25vdGlmaWNhdGlv
blF1ZXVlOwogICAgIHZvaWQgc2NoZWR1bGVOb3RpZmljYXRpb25EZWxpdmVyeSgpOwotICAgIGJv
b2wgbV9kZWxpdmVyeVJlcXVlc3RlZDsKKyAgICBib29sIG1fZGVsaXZlcnlSZXF1ZXN0ZWQgeyBm
YWxzZSB9OwogCiAgICAgc3RhdGljIHZvaWQgZGVsaXZlck5vdGlmaWNhdGlvbnModm9pZCopOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMTg4NjM4KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUs
OCArNDUsNyBAQCBXZWJJbnNwZWN0b3IqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zdGFuCiB9CiAK
IFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIHdlYlZpZXcsIFdlYkluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDogbV9yZWZDb3VudCgwKQotICAgICwgbV93
ZWJWaWV3KHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faW5zcGVj
dG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKIHsKICAgICBBU1NFUlRfQVJHKHdlYlZpZXcsIHdl
YlZpZXcpOwpAQCAtNjMsMTggKzYyLDIwIEBAIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rvcigp
CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6OmZyb250ZW5kQ2xp
ZW50KCkKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JDbGllbnQgPyBtX2luc3BlY3RvckNsaWVu
dC0+ZnJvbnRlbmRDbGllbnQoKSA6IDA7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50ID8g
bV9pbnNwZWN0b3JDbGllbnQtPmZyb250ZW5kQ2xpZW50KCkgOiBudWxscHRyOwogfQogCiB2b2lk
IFdlYkluc3BlY3Rvcjo6d2ViVmlld0Nsb3NlZCgpCiB7Ci0gICAgbV93ZWJWaWV3ID0gMDsKLSAg
ICBtX2luc3BlY3RvckNsaWVudCA9IDA7CisgICAgbV93ZWJWaWV3ID0gbnVsbHB0cjsKKyAgICBt
X2luc3BlY3RvckNsaWVudCA9IG51bGxwdHI7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSW5zcGVjdG9yOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9i
amVjdCkKK0hSRVNVTFQgV2ViSW5zcGVjdG9yOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCBy
aWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0g
MDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
cHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJJ
bnNwZWN0b3IpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkluc3BlY3Rv
cio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViSW5zcGVj
dG9yUHJpdmF0ZSkpCkBAIC04OCwxMiArODksMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJJbnNwZWN0b3I6OgogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBXZWJJbnNwZWN0b3I6OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViSW5zcGVjdG9yOjpB
ZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhP
RENBTExUWVBFIFdlYkluc3BlY3Rvcjo6UmVsZWFzZSh2b2lkKQorVUxPTkcgV2ViSW5zcGVjdG9y
OjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYg
KCFuZXdSZWYpCkBAIC0xMDIsNyArMTAzLDcgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
SW5zcGVjdG9yOjpSZQogICAgIHJldHVybiBuZXdSZWY7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViSW5zcGVjdG9yOjpzaG93KCkKK0hSRVNVTFQgV2ViSW5zcGVjdG9yOjpzaG93
KCkKIHsKICAgICBpZiAobV93ZWJWaWV3KQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2Vi
Vmlldy0+cGFnZSgpKQpAQCAtMTExLDcgKzExMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSW5zcGVjdG9yOjoKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKCkKK0hSRVNVTFQgV2ViSW5zcGVj
dG9yOjpzaG93Q29uc29sZSgpCiB7CiAgICAgaWYgKGZyb250ZW5kQ2xpZW50KCkpCiAgICAgICAg
IGZyb250ZW5kQ2xpZW50KCktPnNob3dDb25zb2xlKCk7CkBAIC0xMTksMTIgKzEyMCwxMiBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjp1bnVzZWQxKCkK
K0hSRVNVTFQgV2ViSW5zcGVjdG9yOjp1bnVzZWQxKCkKIHsKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKK0hSRVNV
TFQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fd2ViVmlldykKICAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKQEAgLTEzMywxNyArMTM0LDE3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjoKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OmF0dGFjaCgp
CitIUkVTVUxUIFdlYkluc3BlY3Rvcjo6YXR0YWNoKCkKIHsKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCitIUkVT
VUxUIFdlYkluc3BlY3Rvcjo6ZGV0YWNoKCkKIHsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OmlzRGVidWdnaW5nSmF2YVNjcmlw
dChCT09MKiBpc0RlYnVnZ2luZykKK0hSRVNVTFQgV2ViSW5zcGVjdG9yOjppc0RlYnVnZ2luZ0ph
dmFTY3JpcHQoX091dF8gQk9PTCogaXNEZWJ1Z2dpbmcpCiB7CiAgICAgaWYgKCFpc0RlYnVnZ2lu
ZykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE1Nyw3ICsxNTgsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjp0b2dnbGVEZWJ1Z2dpbmdK
YXZhU2NyaXB0KCkKK0hSRVNVTFQgV2ViSW5zcGVjdG9yOjp0b2dnbGVEZWJ1Z2dpbmdKYXZhU2Ny
aXB0KCkKIHsKICAgICBzaG93KCk7CiAKQEAgLTE3Miw3ICsxNzMsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjppc1Byb2ZpbGluZ0phdmFTY3JpcHQo
Qk9PTCogaXNQcm9maWxpbmcpCitIUkVTVUxUIFdlYkluc3BlY3Rvcjo6aXNQcm9maWxpbmdKYXZh
U2NyaXB0KF9PdXRfIEJPT0wqIGlzUHJvZmlsaW5nKQogewogICAgIGlmICghaXNQcm9maWxpbmcp
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xODcsNyArMTg4LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OgogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6dG9nZ2xlUHJvZmlsaW5nSmF2
YVNjcmlwdCgpCitIUkVTVUxUIFdlYkluc3BlY3Rvcjo6dG9nZ2xlUHJvZmlsaW5nSmF2YVNjcmlw
dCgpCiB7CiAgICAgc2hvdygpOwogCkBAIC0yMDIsNyArMjAzLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6aXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZChCT09MKiBpc1Byb2ZpbGluZ0VuYWJsZWQpCitIUkVTVUxUIFdlYkluc3BlY3Rvcjo6aXNK
YXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChfT3V0XyBCT09MKiBpc1Byb2ZpbGluZ0VuYWJsZWQp
CiB7CiAgICAgaWYgKCFpc1Byb2ZpbGluZ0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CkBAIC0yMjAsNyArMjIxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNw
ZWN0b3I6OgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoQk9PTCBlbmFibGVk
KQorSFJFU1VMVCBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJP
T0wgZW5hYmxlZCkKIHsKICAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0dXJuIFNfT0s7
CkBAIC0yMzQsNyArMjM1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0
b3I6OgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBX
ZWJJbnNwZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZChCU1RSIGJTY3JpcHQpCitIUkVTVUxUIFdl
Ykluc3BlY3Rvcjo6ZXZhbHVhdGVJbkZyb250ZW5kKF9Jbl8gQlNUUiBiU2NyaXB0KQogewogICAg
IGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1cm4gU19PSzsKQEAgLTI0OCw3ICsyNDksNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBXZWJJbnNwZWN0b3I6CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjppc1RpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChCT09MKiBpc0VuYWJsZWQpCitIUkVTVUxUIFdlYkluc3BlY3Rv
cjo6aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoX091dF8gQk9PTCogaXNFbmFibGVkKQogewog
ICAgIGlmICghaXNFbmFibGVkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjYyLDcg
KzI2Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjoKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6
OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCitIUkVTVUxUIFdlYklu
c3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKICAg
ICBzaG93KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCShyZXZpc2lvbiAxODg2
MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdlYlZpZXdDbG9zZWQoKTsKIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQs
IHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOwogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CiAgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKQEAgLTU0LDE4ICs1
NCwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0
dGFjaCgpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZXRhY2goKTsK
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0RlYnVnZ2luZ0phdmFT
Y3JpcHQoQk9PTCogaXNEZWJ1Z2dpbmcpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0b2dnbGVEZWJ1Z2dpbmdKYXZhU2NyaXB0KCk7CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNQcm9maWxpbmdKYXZhU2Ny
aXB0KEJPT0wqIGlzUHJvZmlsaW5nKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaXNQcm9maWxpbmdKYXZhU2NyaXB0KF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdG9nZ2xlUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwogCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzSmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQoQk9PTCogaXNQcm9maWxpbmdFbmFibGVkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChfT3V0XyBCT09M
Kik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKEJPT0wpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGV2YWx1YXRlSW5Gcm9udGVuZChCU1RSIHNjcmlwdCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlSW5Gcm9udGVuZChfSW5fIEJTVFIgc2NyaXB0
KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1RpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChCT09MKiBpc0VuYWJsZWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChfT3V0XyBCT09MKik7CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZChCT09MKTsKIAogcHJpdmF0ZToKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCgpOwogCi0gICAg
VUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFdlYlZp
ZXcqIG1fd2ViVmlldzsKICAgICBXZWJJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3Iu
Y3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJKYXZhU2NyaXB0
Q29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLy8gV2ViSmF2YVNjcmlwdENvbGxlY3RvciAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxl
Y3RvcigpCi06IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciIpOwpAQCAtNTksOSArNTgs
MTEgQEAgV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbAogCiAvLyBJVW5r
bm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSmF2YVNjcmlw
dENvbGxlY3Rvcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3Qp
CitIUkVTVUxUIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmpl
Y3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
ICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURf
SVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkphdmFTY3Jp
cHRDb2xsZWN0b3IqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURf
SVdlYkphdmFTY3JpcHRDb2xsZWN0b3IpKQpAQCAtNzMsNyArNzQsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkphdmFTY3JpcHRDCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05H
IFNURE1FVEhPRENBTExUWVBFIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OkFkZFJlZih2b2lkKQor
VUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6QWRkUmVmKCkK
IHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQpAQCAtODksMjEgKzkwLDE5IEBAIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFdlYkphdmFTY3JpcHRDb2wKIAogLy8gSVdlYkphdmFTY3JpcHRD
b2xsZWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y29sbGVjdCgpCitIUkVTVUxUIFdlYkphdmFTY3Jp
cHRDb2xsZWN0b3I6OmNvbGxlY3QoKQogewogICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCku
Z2FyYmFnZUNvbGxlY3ROb3coKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpjb2xsZWN0T25BbHRlcm5hdGVU
aHJlYWQoIAotICAgIC8qIFtpbl0gKi8gQk9PTCB3YWl0VW50aWxEb25lKQorSFJFU1VMVCBXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yOjpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoQk9PTCB3YWl0VW50
aWxEb25lKQogewogICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3RP
bkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyghIXdhaXRVbnRpbERvbmUpOwogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkphdmFTY3JpcHRDb2xs
ZWN0b3I6Om9iamVjdENvdW50KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQqIGNvdW50
KQorSFJFU1VMVCBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpvYmplY3RDb3VudChfT3V0XyBVSU5U
KiBjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuaAko
cmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViSmF2YVNjcmlwdENvbGxl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMSArMzgsMTcgQEAgcHJvdGVjdGVkOgogCiBw
dWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViSmF2YVNjcmlwdENvbGxlY3RvcgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb2xsZWN0KCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZCggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQk9PTCB3YWl0VW50aWxEb25lKTsKLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvYmplY3RDb3VudCggCi0gICAgICAgIC8qIFtyZXRhdmFs
XVtvdXRdICovIFVJTlQqIGNvdW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKEJPT0wgd2FpdFVudGlsRG9uZSk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9iamVjdENvdW50KF9PdXRfIFVJTlQq
KTsKIAogcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZD
b3VudCB7IDAgfTsKIH07CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0
Q09NQVBJLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEku
Y3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw5IEBAIHN0YXRpYyBDT01QdHI8SUNsYXNz
RmFjdG9yeT4gY2xhc3NGYWN0b3IKICAgICByZXR1cm4gZmFjdG9yeTsKIH0KIAotSFJFU1VMVCBX
ZWJLaXRDcmVhdGVJbnN0YW5jZShSRUZDTFNJRCByY2xzaWQsIElVbmtub3duKiBwVW5rT3V0ZXIs
IFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJLaXRDcmVhdGVJbnN0
YW5jZShSRUZDTFNJRCByY2xzaWQsIElVbmtub3duKiBwVW5rT3V0ZXIsIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKKyAgICBwcHZPYmplY3QgPSBudWxscHRy
OwogICAgIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiBmYWN0b3J5ID0gY2xhc3NGYWN0b3J5KHJjbHNp
ZCk7CiAgICAgaWYgKCFmYWN0b3J5KQogICAgICAgICByZXR1cm4gUkVHREJfRV9DTEFTU05PVFJF
RzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBleHRlcm4gIkMiIHsKIAogLy8gQ2FsbGVycyBzaG91bGQgdXNlIHRoaXMgQVBJIGlu
c3RlYWQgb2YgQ29DcmVhdGVJbnN0YW5jZSB0byBpbnN0YW50aWF0ZSBXZWJLaXQgQ09NIGNsYXNz
ZXMuCiAvLyBUaGlzIGJ5cGFzc2VzIENvQ3JlYXRlSW5zdGFuY2UgZW50aXJlbHksIHNvIHJlZ2lz
dHJ5IGtleXMgYW5kIGlzb2xhdGVkIENPTSBtYW5pZmVzdHMgYXJlbid0IG5lZWRlZC4KLUhSRVNV
TFQgV0VCS0lUX0FQSSBXZWJLaXRDcmVhdGVJbnN0YW5jZShSRUZDTFNJRCwgSVVua25vd24qIHBV
bmtPdXRlciwgUkVGSUlELCB2b2lkKiogcHB2T2JqZWN0KTsKK0hSRVNVTFQgV0VCS0lUX0FQSSBX
ZWJLaXRDcmVhdGVJbnN0YW5jZShSRUZDTFNJRCwgSVVua25vd24qIHBVbmtPdXRlciwgUkVGSUlE
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CiAKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxNC0yMDE1IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAw
NywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDggKzYyLDcgQEAKIAogLy8gV2ViS2l0Q2xhc3NG
YWN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogV2ViS2l0Q2xhc3NGYWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFy
Z2V0Q2xhc3MpCi06IG1fdGFyZ2V0Q2xhc3ModGFyZ2V0Q2xhc3MpCi0sIG1fcmVmQ291bnQoMCkK
KyAgICA6IG1fdGFyZ2V0Q2xhc3ModGFyZ2V0Q2xhc3MpCiB7CiAgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwpAQCAtNzksOSAr
NzgsMTEgQEAgV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KAogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1IUkVTVUxUIFdlYktpdENsYXNzRmFjdG9yeTo6UXVlcnlJ
bnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYktpdENs
YXNzRmFjdG9yeTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZP
YmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxw
dHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJVW5rbm93bio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElz
RXF1YWxHVUlEKHJpaWQsIElJRF9JQ2xhc3NGYWN0b3J5KSkKQEAgLTkzLDcgKzk0LDcgQEAgSFJF
U1VMVCBXZWJLaXRDbGFzc0ZhY3Rvcnk6OlF1ZXJ5SW50ZXJmYQogICAgIHJldHVybiBTX09LOwog
fQogCi1VTE9ORyBXZWJLaXRDbGFzc0ZhY3Rvcnk6OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViS2l0
Q2xhc3NGYWN0b3J5OjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CkBA
IC0xMjEsMTAgKzEyMiwxMCBAQCBzdGF0aWMgVCogbGVha1JlZkZyb21DcmVhdGVJbnN0YW5jZShD
T01QCiB9CiAKIC8vIElDbGFzc0ZhY3RvcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUhSRVNVTFQgV2ViS2l0Q2xhc3NGYWN0
b3J5OjpDcmVhdGVJbnN0YW5jZShJVW5rbm93biogcFVua091dGVyLCBSRUZJSUQgcmlpZCwgdm9p
ZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViS2l0Q2xhc3NGYWN0b3J5OjpDcmVhdGVJbnN0YW5j
ZShfSW5fb3B0XyBJVW5rbm93biogcFVua091dGVyLCBfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICBJVW5rbm93biogdW5rbm93biA9IDA7Ci0g
ICAgKnBwdk9iamVjdCA9IDA7CisgICAgSVVua25vd24qIHVua25vd24gPSBudWxscHRyOworICAg
ICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIAogICAgIGlmIChwVW5rT3V0ZXIpCiAgICAgICAg
IHJldHVybiBDTEFTU19FX05PQUdHUkVHQVRJT047CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXRDbGFzc0ZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXRDbGFzc0ZhY3RvcnkuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViS2l0Q2xhc3NGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwxNiBAQCBw
dWJsaWM6CiAgICAgfldlYktpdENsYXNzRmFjdG9yeSgpOwogCiAgICAgLy8gSVVua25vd24KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlE
IHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
UmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJQ2xh
c3NGYWN0b3J5Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENyZWF0ZUlu
c3RhbmNlKElVbmtub3duKiBwVW5rT3V0ZXIsIFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0
KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTG9ja1NlcnZlcihCT09M
IGZMb2NrKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ3JlYXRlSW5z
dGFuY2UoX0luX29wdF8gSVVua25vd24qIHBVbmtPdXRlciwgX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBMb2NrU2VydmVyKEJPT0wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9y
ZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENMU0lEIG1fdGFyZ2V0
Q2xhc3M7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAJKHJldmlzaW9uIDE4ODYz
OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk0LDcgKzk0LDggQEAgU1REQVBJXyhCT09MKSBEbGxNYWluKCBITU9EVUxFIGhNb2R1bGUsCiAg
ICAgcmV0dXJuIEZBTFNFOwogfQogCi1TVERBUEkgRGxsR2V0Q2xhc3NPYmplY3QoUkVGQ0xTSUQg
cmNsc2lkLCBSRUZJSUQgcmlpZCwgTFBWT0lEKiBwcHYpCitfQ2hlY2tfcmV0dXJuXworU1REQVBJ
IERsbEdldENsYXNzT2JqZWN0KF9Jbl8gUkVGQ0xTSUQgcmNsc2lkLCBfSW5fIFJFRklJRCByaWlk
LCBfT3V0cHRyXyBMUFZPSUQqIHBwdikKIHsKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGdSZWdDTFNJRHMpOyArK2kp
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAJKHJldmlzaW9u
IDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2VuZGlmCiAKIFdlYktpdE1lc3NhZ2VMb29w
OjpXZWJLaXRNZXNzYWdlTG9vcCgpCi0gICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIik7
CkBAIC01Miw5ICs1MSwxMSBAQCBXZWJLaXRNZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6
OmNyCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1IUkVTVUxUIFdlYktpdE1lc3NhZ2VMb29w
OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQg
V2ViS2l0TWVzc2FnZUxvb3A6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlm
ICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3Qg
PSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQogICAg
ICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYktpdE1lc3NhZ2VMb29wKj4odGhpcyk7
CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgQ0xTSURfV2ViS2l0TWVzc2FnZUxvb3Ap
KQpAQCAtODIsNyArODMsNyBAQCBVTE9ORyBXZWJLaXRNZXNzYWdlTG9vcDo6UmVsZWFzZSgpCiAg
ICAgcmV0dXJuIG5ld1JlZjsKIH0KIAotSFJFU1VMVCBXZWJLaXRNZXNzYWdlTG9vcDo6cnVuKEhB
Q0NFTCBoQWNjZWxUYWJsZSkKK0hSRVNVTFQgV2ViS2l0TWVzc2FnZUxvb3A6OnJ1bihfSW5fIEhB
Q0NFTCBoQWNjZWxUYWJsZSkKIHsKICAgICBNU0cgbXNnID0geyAwIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYktpdE1lc3NhZ2VMb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViS2l0TWVzc2FnZUxvb3AuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViS2l0TWVzc2FnZUxvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTYg
KzM2LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViS2l0TWVzc2FnZUxvb3AqIGNyZWF0ZUlu
c3RhbmNlKCk7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpIG92
ZXJyaWRlOwogCiAgICAgLy8gSVdlYktpdE1lc3NhZ2VMb29wCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJ1bihIQUNDRUwgaEFjY2VsVGFibGUpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW4oX0luXyBIQUNDRUwgaEFjY2Vs
VGFibGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBw
ZXJmb3JtTWVzc2FnZUxvb3BUYXNrcygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFVMT05H
IG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE4ODYz
OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0
LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDQsNiBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiAv
LyBXZWJLaXRTdGF0aXN0aWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJLaXRTdGF0aXN0aWNz
OjpXZWJLaXRTdGF0aXN0aWNzKCkKLSAgICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOwpA
QCAtNjUsOSArNjQsMTEgQEAgV2ViS2l0U3RhdGlzdGljcyogV2ViS2l0U3RhdGlzdGljczo6Y3Jl
YQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViS2l0U3RhdGlzdGljczo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZP
YmplY3QpCitIUkVTVUxUIFdlYktpdFN0YXRpc3RpY3M6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmpl
Y3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
ICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURf
SVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0U3RhdGlz
dGljcyo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViS2l0
U3RhdGlzdGljcykpCkBAIC03OSwxMiArODAsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJLaXRTdGF0aXN0aQogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBXZWJLaXRTdGF0aXN0aWNzOjpBZGRSZWYodm9pZCkKK1VMT05HIFdlYktpdFN0YXRp
c3RpY3M6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViS2l0U3RhdGlzdGljczo6UmVsZWFzZSh2b2lkKQorVUxPTkcg
V2ViS2l0U3RhdGlzdGljczo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3Jl
ZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtOTUsNTAgKzk2LDU5IEBAIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYktpdFN0YXRpc3RpY3MKIAogLy8gSVdlYktpdFN0YXRpc3RpY3MgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViS2l0U3Rh
dGlzdGljczo6d2ViVmlld0NvdW50KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqY291
bnQpCitIUkVTVUxUIFdlYktpdFN0YXRpc3RpY3M6OndlYlZpZXdDb3VudChfT3V0XyBpbnQqIGNv
dW50KQogeworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAg
KmNvdW50ID0gV2ViVmlld0NvdW50OwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYktpdFN0YXRpc3RpY3M6OmZyYW1lQ291bnQoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gaW50ICpjb3VudCkKK0hSRVNVTFQgV2ViS2l0U3RhdGlzdGljczo6ZnJh
bWVDb3VudChfT3V0XyBpbnQqIGNvdW50KQogeworICAgIGlmICghY291bnQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAgICAgKmNvdW50ID0gV2ViRnJhbWVDb3VudDsKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJLaXRTdGF0aXN0aWNzOjpk
YXRhU291cmNlQ291bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50ICpjb3VudCkKK0hS
RVNVTFQgV2ViS2l0U3RhdGlzdGljczo6ZGF0YVNvdXJjZUNvdW50KF9PdXRfIGludCogY291bnQp
CiB7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqY291
bnQgPSBXZWJEYXRhU291cmNlQ291bnQ7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViS2l0U3RhdGlzdGljczo6dmlld0NvdW50KCAKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIGludCAqY291bnQpCitIUkVTVUxUIFdlYktpdFN0YXRpc3RpY3M6OnZp
ZXdDb3VudChfT3V0XyBpbnQqIGNvdW50KQogeworICAgIGlmICghY291bnQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAgICAgKmNvdW50ID0gV2ViRnJhbWVWaWV3Q291bnQ7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViS2l0U3RhdGlzdGlj
czo6SFRNTFJlcHJlc2VudGF0aW9uQ291bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50
ICpjb3VudCkKK0hSRVNVTFQgV2ViS2l0U3RhdGlzdGljczo6SFRNTFJlcHJlc2VudGF0aW9uQ291
bnQoX091dF8gaW50KiBjb3VudCkKIHsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogICAgICpjb3VudCA9IFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50OwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYktpdFN0YXRp
c3RpY3M6OmNvbUNsYXNzQ291bnQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50ICpjbGFz
c0NvdW50KQorSFJFU1VMVCBXZWJLaXRTdGF0aXN0aWNzOjpjb21DbGFzc0NvdW50KF9PdXRfIGlu
dCAqY2xhc3NDb3VudCkKIHsKKyAgICBpZiAoIWNsYXNzQ291bnQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAgICAgKmNsYXNzQ291bnQgPSBnQ2xhc3NDb3VudDsKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBXZWJLaXRTdGF0aXN0aWNzOjpjb21DbGFzc05hbWVDb3VudHMoQlNU
Uiogb3V0cHV0KQorSFJFU1VMVCBXZWJLaXRTdGF0aXN0aWNzOjpjb21DbGFzc05hbWVDb3VudHMo
X19kZXJlZl9vdXRfb3B0IEJTVFIqIG91dHB1dCkKIHsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBm
b3IgKGF1dG8mIHNsb3QgOiBnQ2xhc3NOYW1lQ291bnQoKSkgewogICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihzbG90LnZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdFN0
YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRTdGF0aXN0
aWNzLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdFN0YXRp
c3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMTUgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDM0ICs0MCwyMSBAQCBwcm90ZWN0ZWQ6CiAK
IHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0g
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmly
dHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJLaXRTdGF0aXN0aWNzCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdDb3VudCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gaW50ICpjb3VudCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGZyYW1lQ291bnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGlu
dCAqY291bnQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
YXRhU291cmNlQ291bnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqY291bnQp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aWV3Q291bnQo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCAqY291bnQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBIVE1MUmVwcmVzZW50YXRpb25Db3VudCgg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50ICpjb3VudCk7Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29tQ2xhc3NDb3VudCggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gaW50ICpjbGFzc0NvdW50KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjb21DbGFzc05hbWVDb3VudHMoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIgKm91dHB1dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdDb3VudChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZnJhbWVDb3VudChfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0YVNvdXJjZUNvdW50KF9PdXRfIGludCopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aWV3Q291bnQoX091dF8gaW50Kik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEhUTUxSZXByZXNlbnRhdGlvbkNv
dW50KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
b21DbGFzc0NvdW50KF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjb21DbGFzc05hbWVDb3VudHMoX19kZXJlZl9vdXRfb3B0IEJTVFIqKTsKIAogcHJv
dGVjdGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAg
fTsKIH07CiAKICNlbmRpZiAvLyBXZWJLaXRTdGF0aXN0aWNzX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ5LDggKzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyBJ
V2ViVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpXZWJNdXRhYmxl
VVJMUmVxdWVzdChib29sIGlzTXV0YWJsZSkKLSAgICA6IG1fcmVmQ291bnQoMCkKLSAgICAsIG1f
aXNNdXRhYmxlKGlzTXV0YWJsZSkKKyAgICA6IG1faXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVS
TFJlcXVlc3QiKTsKQEAgLTEwMiw5ICsxMDEsMTEgQEAgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5X
ZWJNdXRhYmxlVVJMUmVxdQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJ
RCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYg
KElzRXF1YWxHVUlEKHJpaWQsIENMU0lEX1dlYk11dGFibGVVUkxSZXF1ZXN0KSkKICAgICAgICAg
KnBwdk9iamVjdCA9IHRoaXM7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lV
bmtub3duKSkKQEAgLTEyMiwxMiArMTIzLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViTXV0YWJsZVVSTFIKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0KIAot
VUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OlJlbGVhc2Uodm9p
ZCkKK1VMT05HIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBu
ZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC0xMzgsNjQgKzEzOSw2
NyBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxCiAKIC8vIElXZWJV
UkxSZXF1ZXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0
YWJsZVVSTFJlcXVlc3Q6OnJlcXVlc3RXaXRoVVJMKCAKLSAgICAvKiBbaW5dICovIEJTVFIgLyp0
aGVVUkwqLywKLSAgICAvKiBbb3B0aW9uYWxdW2luXSAqLyBXZWJVUkxSZXF1ZXN0Q2FjaGVQb2xp
Y3kgLypjYWNoZVBvbGljeSovLAotICAgIC8qIFtvcHRpb25hbF1baW5dICovIGRvdWJsZSAvKnRp
bWVvdXRJbnRlcnZhbCovKQorSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6cmVxdWVzdFdp
dGhVUkwoX0luXyBCU1RSIC8qdGhlVVJMKi8sIFdlYlVSTFJlcXVlc3RDYWNoZVBvbGljeSAvKmNh
Y2hlUG9saWN5Ki8sIGRvdWJsZSAvKnRpbWVvdXRJbnRlcnZhbCovKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmFsbEhUVFBIZWFkZXJGaWVsZHMoIAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVByb3BlcnR5QmFnKiogLypyZXN1bHQqLykKK0hSRVNV
TFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmFsbEhUVFBIZWFkZXJGaWVsZHMoX0NPTV9PdXRwdHJf
b3B0XyBJUHJvcGVydHlCYWcqKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3Vs
dCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y2FjaGVQb2xpY3koIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gV2ViVVJMUmVxdWVzdENhY2hlUG9saWN5KiByZXN1bHQpCitIUkVTVUxU
IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjYWNoZVBvbGljeShfT3V0XyBXZWJVUkxSZXF1ZXN0Q2Fj
aGVQb2xpY3kqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKICAgICAqcmVzdWx0ID0ga2l0KG1fcmVxdWVzdC5jYWNoZVBvbGljeSgpKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6SFRUUEJvZHkoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVN0cmVhbSoq
IC8qcmVzdWx0Ki8pCitIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpIVFRQQm9keShfQ09N
X091dHB0cl9vcHRfIElTdHJlYW0qKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJl
c3VsdCA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6SFRUUEJvZHlTdHJlYW0oIAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSVN0cmVhbSoqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIFdlYk11
dGFibGVVUkxSZXF1ZXN0OjpIVFRQQm9keVN0cmVhbShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0q
KiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAg
cmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6SFRUUE1ldGhvZCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
KiByZXN1bHQpCitIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpIVFRQTWV0aG9kKF9fZGVy
ZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAgICAgQlN0cmluZyBodHRwTWV0aG9kID0gQlN0cmluZyhtX3JlcXVl
c3QuaHR0cE1ldGhvZCgpKTsKICAgICAqcmVzdWx0ID0gaHR0cE1ldGhvZC5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OkhUVFBTaG91bGRIYW5kbGVDb29raWVzKCAKLSAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OkhUVFBT
aG91bGRIYW5kbGVDb29raWVzKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBib29sIHNob3VsZEhhbmRsZUNvb2tp
ZXMgPSBtX3JlcXVlc3QuYWxsb3dDb29raWVzKCk7CiAKICAgICAqcmVzdWx0ID0gc2hvdWxkSGFu
ZGxlQ29va2llcyA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6aW5pdFdpdGhVUkwoIAot
ICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwsCi0gICAgLyogW29wdGlvbmFsXVtpbl0gKi8gV2ViVVJM
UmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5LAotICAgIC8qIFtvcHRpb25hbF1baW5dICov
IGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCitIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpp
bml0V2l0aFVSTChfSW5fIEJTVFIgdXJsLCBXZWJVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQ
b2xpY3ksIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiB7CiAgICAgbV9yZXF1ZXN0LnNldFVSTChN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSk7CiAgICAgbV9yZXF1ZXN0LnNldENh
Y2hlUG9saWN5KGNvcmUoY2FjaGVQb2xpY3kpKTsKQEAgLTIwNCwzMCArMjA4LDMxIEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFIKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bWFpbkRv
Y3VtZW50VVJMKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNV
TFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTChfX2RlcmVmX29wdF9vdXQg
QlNUUiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwogICAgICpyZXN1bHQgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlVSTFRvQlNUUihtX3JlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnRpbWVvdXRJbnRlcnZh
bCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBkb3VibGUqIHJlc3VsdCkKK0hSRVNVTFQgV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6OnRpbWVvdXRJbnRlcnZhbChfT3V0XyBkb3VibGUqIHJlc3VsdCkK
IHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVz
dWx0ID0gbV9yZXF1ZXN0LnRpbWVvdXRJbnRlcnZhbCgpOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpVUkwoIAot
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6VVJMKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IE1hcnNo
YWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKG1fcmVxdWVzdC51cmwoKSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OnZhbHVlRm9ySFRUUEhlYWRlckZpZWxkKCAKLSAgICAvKiBbaW5dICovIEJTVFIgZmllbGQsCi0g
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIFdlYk11dGFibGVV
UkxSZXF1ZXN0Ojp2YWx1ZUZvckhUVFBIZWFkZXJGaWVsZChfSW5fIEJTVFIgZmllbGQsIF9fZGVy
ZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMzgsMTcgKzI0MywxOSBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmlzRW1wdHkoCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYk11dGFibGVVUkxS
ZXF1ZXN0Ojppc0VtcHR5KF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gbV9yZXF1ZXN0LmlzRW1w
dHkoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6aXNFcXVhbCgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
UmVxdWVzdCogb3RoZXIsCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0
KQorSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6aXNFcXVhbChfSW5fb3B0XyBJV2ViVVJM
UmVxdWVzdCogb3RoZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVx
dWVzdD4gcmVxdWVzdEltcGwoUXVlcnksIG90aGVyKTsKIAogICAgIGlmICghcmVxdWVzdEltcGwp
IHsKQEAgLTI2MywyOSArMjcwLDI1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0
YWJsZVVSTFIKIAogLy8gSVdlYk11dGFibGVVUkxSZXF1ZXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmFkZFZhbHVlKCAKLSAgICAvKiBbaW5dICov
IEJTVFIgdmFsdWUsCi0gICAgLyogW2luXSAqLyBCU1RSIGZpZWxkKQorSFJFU1VMVCBXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6YWRkVmFsdWUoX0luXyBCU1RSIHZhbHVlLCBfSW5fIEJTVFIgZmllbGQp
CiB7CiAgICAgbV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChXVEY6OkF0b21pY1N0cmluZyh2
YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSksIFN0cmluZyhmaWVsZCwgU3lzU3RyaW5nTGVuKGZp
ZWxkKSkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRBbGxIVFRQSGVhZGVyRmllbGRzKCAKLSAgICAvKiBb
aW5dICovIElQcm9wZXJ0eUJhZyogLypoZWFkZXJGaWVsZHMqLykKK0hSRVNVTFQgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OnNldEFsbEhUVFBIZWFkZXJGaWVsZHMoX0luX29wdF8gSVByb3BlcnR5QmFn
KiAvKmhlYWRlckZpZWxkcyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OnNldENhY2hlUG9saWN5KCAKLSAgICAvKiBbaW5dICovIFdlYlVSTFJlcXVl
c3RDYWNoZVBvbGljeSBwb2xpY3kpCitIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRD
YWNoZVBvbGljeShXZWJVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQogewogICAgIG1fcmVx
dWVzdC5zZXRDYWNoZVBvbGljeShjb3JlKHBvbGljeSkpOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRIVFRQQm9keShJU3RyZWFtKiBkYXRh
KQorSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUEJvZHkoX0luX29wdF8gSVN0
cmVhbSogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CkBAIC0zMDgsNDkgKzMxMSw0MiBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRI
VFRQQm9kCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OnNldEhUVFBCb2R5U3RyZWFtKElTdHJlYW0qIGRhdGEpCitIUkVTVUxUIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpzZXRIVFRQQm9keVN0cmVhbShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhKQogewog
ICAgIHJldHVybiBzZXRIVFRQQm9keShkYXRhKTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUE1ldGhvZCggCi0gICAgLyogW2luXSAq
LyBCU1RSIG1ldGhvZCkKK0hSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhUVFBNZXRo
b2QoX0luXyBCU1RSIG1ldGhvZCkKIHsKICAgICBtX3JlcXVlc3Quc2V0SFRUUE1ldGhvZChTdHJp
bmcobWV0aG9kKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhUVFBTaG91bGRIYW5kbGVDb29raWVzKCAK
LSAgICAvKiBbaW5dICovIEJPT0wgaGFuZGxlQ29va2llcykKK0hSRVNVTFQgV2ViTXV0YWJsZVVS
TFJlcXVlc3Q6OnNldEhUVFBTaG91bGRIYW5kbGVDb29raWVzKEJPT0wgaGFuZGxlQ29va2llcykK
IHsKICAgICBtX3JlcXVlc3Quc2V0QWxsb3dDb29raWVzKGhhbmRsZUNvb2tpZXMpOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjpzZXRNYWluRG9jdW1lbnRVUkwoIAotICAgIC8qIFtpbl0gKi8gQlNUUiB0aGVVUkwp
CitIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRNYWluRG9jdW1lbnRVUkwoX0luXyBC
U1RSIHRoZVVSTCkKIHsKICAgICBtX3JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoTWFy
c2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHRoZVVSTCkpOwogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRU
aW1lb3V0SW50ZXJ2YWwoIAotICAgIC8qIFtpbl0gKi8gZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkK
K0hSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldFRpbWVvdXRJbnRlcnZhbChkb3VibGUg
dGltZW91dEludGVydmFsKQogewogICAgIG1fcmVxdWVzdC5zZXRUaW1lb3V0SW50ZXJ2YWwodGlt
ZW91dEludGVydmFsKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0VVJMKCAKLSAgICAvKiBbaW5dICovIEJT
VFIgdXJsKQorSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0VVJMKF9Jbl8gQlNUUiB1
cmwpCiB7CiAgICAgbV9yZXF1ZXN0LnNldFVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tV
UkwodXJsKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldFZhbHVlKCAKLSAgICAvKiBbaW5dICovIEJTVFIg
dmFsdWUsCi0gICAgLyogW2luXSAqLyBCU1RSIGZpZWxkKQorSFJFU1VMVCBXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6c2V0VmFsdWUoX0luXyBCU1RSIHZhbHVlLCBfSW5fIEJTVFIgZmllbGQpCiB7CiAg
ICAgU3RyaW5nIHZhbHVlU3RyaW5nKHZhbHVlLCBTeXNTdHJpbmdMZW4odmFsdWUpKTsKICAgICBT
dHJpbmcgZmllbGRTdHJpbmcoZmllbGQsIFN5c1N0cmluZ0xlbihmaWVsZCkpOwpAQCAtMzU4LDE0
ICszNTQsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpzZXRBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKHZvaWQpCitIUkVTVUxUIFdl
Yk11dGFibGVVUkxSZXF1ZXN0OjpzZXRBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKCkKIHsKICAg
ICBSZXNvdXJjZUhhbmRsZTo6c2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUobV9yZXF1
ZXN0LnVybCgpLmhvc3QoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0Q2xpZW50Q2VydGlmaWNhdGUo
LyogW2luXSAqLyBVTE9OR19QVFIgY2VydCkKK0hSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OnNldENsaWVudENlcnRpZmljYXRlKFVMT05HX1BUUiBjZXJ0KQogewogICAgIGlmICghY2VydCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTM3NiwxMyArMzcyLDEyIEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFIKICAgICByZXR1cm4gU19PSzsKIH0KIAot
Q0ZVUkxSZXF1ZXN0UmVmIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpj
ZlJlcXVlc3QoKQorQ0ZVUkxSZXF1ZXN0UmVmIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjZlJlcXVl
c3QoKQogewogICAgIHJldHVybiBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5
KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6
bXV0YWJsZUNvcHkoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSVdlYk11dGFibGVVUkxS
ZXF1ZXN0KiogcmVzdWx0KQorSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNv
cHkoX0NPTV9PdXRwdHJfb3B0XyBJV2ViTXV0YWJsZVVSTFJlcXVlc3QqKiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01OSwxMDQgKzU5LDQzIEBAIHByb3RlY3RlZDoKIAogcHVibGljOgogICAgIC8v
IElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2
b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFk
ZFJlZigpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwog
CiAgICAgLy8gSVdlYlVSTFJlcXVlc3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcmVxdWVzdFdpdGhVUkwoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdGhlVVJMLAot
ICAgICAgICAvKiBbb3B0aW9uYWxdW2luXSAqLyBXZWJVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kgY2Fj
aGVQb2xpY3ksCi0gICAgICAgIC8qIFtvcHRpb25hbF1baW5dICovIGRvdWJsZSB0aW1lb3V0SW50
ZXJ2YWwpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxI
VFRQSGVhZGVyRmllbGRzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJUHJvcGVydHlC
YWcgKipyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjYWNoZVBvbGljeSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gV2ViVVJMUmVxdWVz
dENhY2hlUG9saWN5ICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBIVFRQQm9keSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVN0cmVh
bSAqKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IEhUVFBCb2R5U3RyZWFtKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJU3RyZWFtICoq
cmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgSFRU
UE1ldGhvZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgSFRUUFNob3VsZEhhbmRs
ZUNvb2tpZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVVJMKCAK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCwKLSAgICAgICAgLyogW29wdGlvbmFsXVtpbl0g
Ki8gV2ViVVJMUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5LAotICAgICAgICAvKiBbb3B0
aW9uYWxdW2luXSAqLyBkb3VibGUgdGltZW91dEludGVydmFsKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFpbkRvY3VtZW50VVJMKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aW1lb3V0SW50ZXJ2YWwoIAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIGRvdWJsZSAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgVVJMKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpy
ZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2YWx1
ZUZvckhUVFBIZWFkZXJGaWVsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBmaWVsZCwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRW1wdHkoCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiByZXN1bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG11dGFibGVDb3B5KAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIElXZWJNdXRhYmxlVVJM
UmVxdWVzdCoqIHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNFcXVhbCgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMUmVxdWVzdCogb3RoZXIsCi0g
ICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVxdWVzdFdpdGhVUkwoX0luXyBCU1RSIHRoZVVSTCwg
V2ViVVJMUmVxdWVzdENhY2hlUG9saWN5LCBkb3VibGUgdGltZW91dEludGVydmFsKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsSFRUUEhlYWRlckZpZWxkcyhfQ09N
X091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNhY2hlUG9saWN5KF9PdXRfIFdlYlVSTFJlcXVlc3RDYWNoZVBv
bGljeSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBIVFRQQm9keShf
Q09NX091dHB0cl9vcHRfIElTdHJlYW0qKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBIVFRQQm9keVN0cmVhbShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0q
KiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBIVFRQTWV0
aG9kKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIEhUVFBTaG91bGRIYW5kbGVDb29raWVzKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhVUkwoX0luXyBCU1RSIHVybCwg
V2ViVVJMUmVxdWVzdENhY2hlUG9saWN5LCBkb3VibGUgdGltZW91dEludGVydmFsKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFpbkRvY3VtZW50VVJMKF9fZGVyZWZf
b3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRp
bWVvdXRJbnRlcnZhbChfT3V0XyBkb3VibGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgVVJMKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHZhbHVlRm9ySFRUUEhlYWRlckZpZWxkKF9Jbl8gQlNUUiBm
aWVsZCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzRW1wdHkoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtdXRhYmxlQ29weShfQ09NX091dHB0cl9vcHRfIElXZWJN
dXRhYmxlVVJMUmVxdWVzdCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNFcXVhbChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogb3RoZXIsIF9PdXRfIEJPT0wqIHJl
c3VsdCk7CiAKICAgICAvLyBJV2ViTXV0YWJsZVVSTFJlcXVlc3QKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkVmFsdWUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
dmFsdWUsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBmaWVsZCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbEhUVFBIZWFkZXJGaWVsZHMoIAotICAg
ICAgICAvKiBbaW5dICovIElQcm9wZXJ0eUJhZyAqaGVhZGVyRmllbGRzKTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2FjaGVQb2xpY3koIAotICAgICAg
ICAvKiBbaW5dICovIFdlYlVSTFJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIVFRQQm9keSggCi0gICAgICAg
IC8qIFtpbl0gKi8gSVN0cmVhbSAqZGF0YSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEhUVFBCb2R5U3RyZWFtKCAKLSAgICAgICAgLyogW2luXSAqLyBJ
U3RyZWFtICpkYXRhKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0SFRUUE1ldGhvZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBtZXRob2QpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIVFRQU2hvdWxkSGFu
ZGxlQ29va2llcyggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBoYW5kbGVDb29raWVzKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWFpbkRvY3VtZW50
VVJMKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRoZVVSTCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRpbWVvdXRJbnRlcnZhbCggCi0gICAgICAg
IC8qIFtpbl0gKi8gZG91YmxlIHRpbWVvdXRJbnRlcnZhbCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFVSTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0aGVVUkwpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRWYWx1ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSwKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGZpZWxkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBhZGRWYWx1ZShfSW5fIEJTVFIgdmFsdWUsIF9Jbl8gQlNUUiBm
aWVsZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbEhUVFBI
ZWFkZXJGaWVsZHMoX0luX29wdF8gSVByb3BlcnR5QmFnKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldENhY2hlUG9saWN5KFdlYlVSTFJlcXVlc3RDYWNoZVBvbGlj
eSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEhUVFBCb2R5KF9J
bl9vcHRfIElTdHJlYW0qKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0SFRUUEJvZHlTdHJlYW0oX0luX29wdF8gSVN0cmVhbSopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIVFRQTWV0aG9kKF9Jbl8gQlNUUik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEhUVFBTaG91bGRIYW5kbGVDb29raWVzKEJP
T0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNYWluRG9jdW1l
bnRVUkwoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0VGltZW91dEludGVydmFsKGRvdWJsZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFVSTChfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRWYWx1ZShfSW5fIEJTVFIgdmFsdWUsIF9Jbl8gQlNUUiBmaWVsZCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93c0FueUhUVFBTQ2Vy
dGlmaWNhdGUoKTsKIAogICAgIC8vIElXZWJNdXRhYmxlVVJMUmVxdWVzdFByaXZhdGUKLQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDbGllbnRDZXJ0aWZpY2F0ZShV
TE9OR19QVFIpOwotCiAgICAgdmlydHVhbCAvKiBbbG9jYWxdICovIENGVVJMUmVxdWVzdFJlZiBT
VERNRVRIT0RDQUxMVFlQRSBjZlJlcXVlc3QoKTsKIAogICAgIC8vIFdlYk11dGFibGVVUkxSZXF1
ZXN0CkBAIC0xNjcsNyArMTA2LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsKIHByb3RlY3RlZDoKLSAgICBV
TE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgYm9vbCBt
X2lzTXV0YWJsZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE4
ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCw5ICszMCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8g
SVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk5hdmln
YXRpb25EYXRhOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkK
K0hSRVNVTFQgV2ViTmF2aWdhdGlvbkRhdGE6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAw
OworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpw
cHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25v
d24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYk5hdmlnYXRpb25EYXRh
Kj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJOYXZpZ2F0
aW9uRGF0YSkpCkBAIC00NCwxMiArNDYsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJOYXZpZ2F0aW9uRAogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBXZWJOYXZpZ2F0aW9uRGF0YTo6QWRkUmVmKHZvaWQpCitVTE9ORyBXZWJOYXZpZ2F0aW9u
RGF0YTo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBXZWJOYXZpZ2F0aW9uRGF0YTo6UmVsZWFzZSh2b2lkKQorVUxPTkcg
V2ViTmF2aWdhdGlvbkRhdGE6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9y
ZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTYxLDggKzYzLDcgQEAgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTmF2aWdhdGlvbkRhdAogLy8gV2ViTmF2aWdhdGlvbkRhdGEgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2Vi
VVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJp
bmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQotICAgIDogbV9yZWZDb3VudCgwKQotICAgICwgbV91
cmwodXJsKQorICAgIDogbV91cmwodXJsKQogICAgICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1f
cmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTg5LDcgKzkw
LDcgQEAgV2ViTmF2aWdhdGlvbkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcgogCiAvLyBJV2Vi
TmF2aWdhdGlvbkRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFdlYk5hdmlnYXRpb25EYXRhOjp1
cmwoQlNUUiogdXJsKQorSFJFU1VMVCBXZWJOYXZpZ2F0aW9uRGF0YTo6dXJsKF9fZGVyZWZfb3B0
X291dCBCU1RSKiB1cmwpCiB7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CkBAIC05Nyw3ICs5OCw3IEBAIEhSRVNVTFQgV2ViTmF2aWdhdGlvbkRhdGE6OnVybChCU1RS
KiB1cmwKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJOYXZpZ2F0aW9uRGF0YTo6
dGl0bGUoQlNUUiogdGl0bGUpCitIUkVTVUxUIFdlYk5hdmlnYXRpb25EYXRhOjp0aXRsZShfX2Rl
cmVmX29wdF9vdXQgQlNUUiogdGl0bGUpCiB7CiAgICAgaWYgKCF0aXRsZSkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKQEAgLTEwNSw3ICsxMDYsNyBAQCBIUkVTVUxUIFdlYk5hdmlnYXRpb25E
YXRhOjp0aXRsZShCU1RSKiB0CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViTmF2
aWdhdGlvbkRhdGE6Om9yaWdpbmFsUmVxdWVzdChJV2ViVVJMUmVxdWVzdCoqIHJlcXVlc3QpCitI
UkVTVUxUIFdlYk5hdmlnYXRpb25EYXRhOjpvcmlnaW5hbFJlcXVlc3QoX0NPTV9PdXRwdHJfb3B0
XyBJV2ViVVJMUmVxdWVzdCoqIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTE0LDcgKzExNSw3IEBAIEhSRVNVTFQgV2ViTmF2aWdh
dGlvbkRhdGE6Om9yaWdpbmFsUmVxdWUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBX
ZWJOYXZpZ2F0aW9uRGF0YTo6cmVzcG9uc2UoSVdlYlVSTFJlc3BvbnNlKiogcmVzcG9uc2UpCitI
UkVTVUxUIFdlYk5hdmlnYXRpb25EYXRhOjpyZXNwb25zZShfQ09NX091dHB0cl9vcHRfIElXZWJV
UkxSZXNwb25zZSoqIHJlc3BvbnNlKQogewogICAgIGlmICghcmVzcG9uc2UpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CkBAIC0xMjMsNyArMTI0LDcgQEAgSFJFU1VMVCBXZWJOYXZpZ2F0aW9u
RGF0YTo6cmVzcG9uc2UoSVdlYgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYk5h
dmlnYXRpb25EYXRhOjpoYXNTdWJzdGl0dXRlRGF0YShCT09MKiBoYXNTdWJzdGl0dXRlRGF0YSkK
K0hSRVNVTFQgV2ViTmF2aWdhdGlvbkRhdGE6Omhhc1N1YnN0aXR1dGVEYXRhKF9PdXRfIEJPT0wq
IGhhc1N1YnN0aXR1dGVEYXRhKQogewogICAgIGlmICghaGFzU3Vic3RpdHV0ZURhdGEpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMzEsNyArMTMyLDcgQEAgSFJFU1VMVCBXZWJOYXZp
Z2F0aW9uRGF0YTo6aGFzU3Vic3RpdHV0ZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFdlYk5hdmlnYXRpb25EYXRhOjpjbGllbnRSZWRpcmVjdFNvdXJjZShCU1RSKiBjbGllbnRSZWRp
cmVjdFNvdXJjZSkKK0hSRVNVTFQgV2ViTmF2aWdhdGlvbkRhdGE6OmNsaWVudFJlZGlyZWN0U291
cmNlKF9fZGVyZWZfb3B0X291dCBCU1RSKiBjbGllbnRSZWRpcmVjdFNvdXJjZSkKIHsKICAgICBp
ZiAoIWNsaWVudFJlZGlyZWN0U291cmNlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViTmF2aWdhdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5oCShyZXZpc2lvbiAxODg2MzgpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE1IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQwLDMxICs0MCwyMCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlE
IHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
UmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2Vi
TmF2aWdhdGlvbkRhdGEKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXJs
KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqKTsKLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aXRsZSgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3JpZ2lu
YWxSZXF1ZXN0KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJVUkxSZXF1ZXN0Kiop
OwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlc3BvbnNlKAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJVUkxSZXNwb25zZSoqKTsKLQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNTdWJzdGl0dXRlRGF0YSgKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2xpZW50UmVkaXJlY3RTb3VyY2UoCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1cmwo
X19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGl0bGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgb3JpZ2luYWxSZXF1ZXN0KF9DT01fT3V0cHRyX29wdF8gSVdlYlVS
TFJlcXVlc3QqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlc3Bv
bnNlKF9DT01fT3V0cHRyX29wdF8gSVdlYlVSTFJlc3BvbnNlKiopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNTdWJzdGl0dXRlRGF0YShfT3V0XyBCT09MKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsaWVudFJlZGlyZWN0U291cmNl
KF9fZGVyZWZfb3B0X291dCBCU1RSKik7CiAKIHByaXZhdGU6Ci0gICAgVUxPTkcgbV9yZWZDb3Vu
dDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFdlYkNvcmU6OkJTdHJpbmcgbV91
cmw7CiAgICAgV2ViQ29yZTo6QlN0cmluZyBtX3RpdGxlOwogICAgIENPTVB0cjxJV2ViVVJMUmVx
dWVzdD4gbV9yZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViTm90aWZpY2F0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb24uY3Bw
CShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTAgKzMyLDggQEAKIC8vIFdlYk5v
dGlmaWNhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oQlNUUiBu
YW1lLCBJVW5rbm93biogYW5PYmplY3QsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCi06IG1fcmVm
Q291bnQoMCkKLSwgbV9uYW1lKDApCi0sIG1fYW5PYmplY3QoYW5PYmplY3QpCi0sIG1fdXNlcklu
Zm8odXNlckluZm8pCisgICAgOiBtX2FuT2JqZWN0KGFuT2JqZWN0KQorICAgICwgbV91c2VySW5m
byh1c2VySW5mbykKIHsKICAgICBpZiAobmFtZSkKICAgICAgICAgbV9uYW1lID0gU3lzQWxsb2NT
dHJpbmcobmFtZSk7CkBAIC03MCw5ICs2OCwxMSBAQCBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlm
aWNhdGlvbjo6Y3JlYXRlCiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJOb3RpZmljYXRpb246OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlk
LCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJOb3RpZmljYXRpb246OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewot
ICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SVdlYk5vdGlmaWNhdGlvbio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQs
IElJRF9JV2ViTm90aWZpY2F0aW9uKSkKQEAgLTg0LDEyICs4NCwxMiBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYk5vdGlmaWNhdGlvCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05H
IFNURE1FVEhPRENBTExUWVBFIFdlYk5vdGlmaWNhdGlvbjo6QWRkUmVmKHZvaWQpCitVTE9ORyBX
ZWJOb3RpZmljYXRpb246OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0K
IAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW9uOjpSZWxlYXNlKHZvaWQp
CitVTE9ORyBXZWJOb3RpZmljYXRpb246OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9
IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTEwMCwxOSArMTAwLDE4IEBAIFVM
T05HIFNURE1FVEhPRENBTExUWVBFIFdlYk5vdGlmaWNhdGlvbjoKIAogLy8gSVdlYk5vdGlmaWNh
dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk5vdGlmaWNhdGlvbjo6bm90
aWZpY2F0aW9uV2l0aE5hbWUoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmFOYW1lKi8sCi0gICAg
LyogW2luXSAqLyBJVW5rbm93biogLyphbk9iamVjdCovLAotICAgIC8qIFtvcHRpb25hbF1baW5d
ICovIElQcm9wZXJ0eUJhZyogLyp1c2VySW5mbyovKQorSFJFU1VMVCBXZWJOb3RpZmljYXRpb246
Om5vdGlmaWNhdGlvbldpdGhOYW1lKF9Jbl8gQlNUUiAvKmFOYW1lKi8sIF9Jbl9vcHRfIElVbmtu
b3duKiAvKmFuT2JqZWN0Ki8sIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogLyp1c2VySW5mbyovKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW9uOjpuYW1lKCAKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViTm90aWZpY2F0aW9u
OjpuYW1lKF9fZGVyZWZfb3V0X29wdCBCU1RSKiByZXN1bHQpCiB7Ci0gICAgKnJlc3VsdCA9IDA7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICAqcmVz
dWx0ID0gbnVsbHB0cjsKICAgICBpZiAobV9uYW1lKSB7CiAgICAgICAgICpyZXN1bHQgPSBTeXNB
bGxvY1N0cmluZyhtX25hbWUpOwogICAgICAgICBpZiAoISpyZXN1bHQpCkBAIC0xMjIsOSArMTIx
LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW8KICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJOb3RpZmljYXRpb246
OmdldE9iamVjdCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJVW5rbm93bioqIHJlc3VsdCkK
K0hSRVNVTFQgV2ViTm90aWZpY2F0aW9uOjpnZXRPYmplY3QoX0NPTV9PdXRwdHJfb3B0XyBJVW5r
bm93bioqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKwogICAgICpyZXN1bHQgPSBtX2FuT2JqZWN0OwogCiAgICAgaWYgKCpyZXN1bHQpCkBA
IC0xMzMsOSArMTM0LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0
aW8KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJO
b3RpZmljYXRpb246OnVzZXJJbmZvKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElQcm9wZXJ0
eUJhZyoqIHJlc3VsdCkKK0hSRVNVTFQgV2ViTm90aWZpY2F0aW9uOjp1c2VySW5mbyhfQ09NX091
dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgICpyZXN1bHQgPSBtX3VzZXJJbmZvOwogCiAg
ICAgaWYgKCpyZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb24uaAkocmV2
aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViTm90aWZpY2F0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwyOCArMzgsMTkgQEAgcHJvdGVjdGVkOgogCiBw
dWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViTm90aWZpY2F0aW9uCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIG5vdGlmaWNhdGlvbldpdGhOYW1lKCAKLSAgICAgICAgLyog
W2luXSAqLyBCU1RSIGFOYW1lLAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICphbk9iamVj
dCwKLSAgICAgICAgLyogW29wdGlvbmFsXVtpbl0gKi8gSVByb3BlcnR5QmFnICp1c2VySW5mbyk7
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWUoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldE9iamVjdCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSVVua25vd24gKipyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB1c2VySW5mbyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVByb3BlcnR5QmFnICoqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbm90aWZpY2F0aW9uV2l0aE5hbWUoX0luXyBCU1RSIGFOYW1lLCBfSW5fb3B0XyBJ
VW5rbm93biogYW5PYmplY3QsIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogdXNlckluZm8pOyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZShfX2RlcmVmX291dF9v
cHQgQlNUUiogcmVzdWx0KTsgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdldE9iamVjdChfQ09NX091dHB0cl9vcHRfIElVbmtub3duKiogcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlckluZm8oX0NPTV9PdXRwdHJfb3B0
XyBJUHJvcGVydHlCYWcgKiogcmVzdWx0KTsKIAogcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVm
Q291bnQ7Ci0gICAgQlNUUiBtX25hbWU7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKKyAg
ICBCU1RSIG1fbmFtZSB7IG51bGxwdHIgfTsKICAgICBJVW5rbm93biogbV9hbk9iamVjdDsKICAg
ICBJUHJvcGVydHlCYWcqIG1fdXNlckluZm87CiB9OwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTMsOCArNTMsNyBAQCBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0
ZSB7CiBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Om1fZGVm
YXVsdENlbnRlciA9IDA7CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9u
Q2VudGVyKCkKLSAgICA6IG1fcmVmQ291bnQoMCkKLSAgICAsIGQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQorICAgIDogZChzdGQ6Om1ha2VfdW5pcXVl
PFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
ICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOwpAQCAt
NzUsOSArNzQsMTEgQEAgV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZQog
CiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBw
dk9iamVjdCkKK0hSRVNVTFQgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAq
cHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlp
ZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJO
b3RpZmljYXRpb25DZW50ZXIqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlk
LCBJSURfSVdlYk5vdGlmaWNhdGlvbkNlbnRlcikpCkBAIC04OSwxMiArOTAsMTIgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJOb3RpZmljYXRpbwogICAgIHJldHVybiBTX09LOwogfQog
Ci1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OkFkZFJlZih2
b2lkKQorVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpBZGRS
ZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENB
TExUWVBFIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6UmVsZWFzZSh2b2lkKQorVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpSZWxlYXNlKCkKIHsKICAgICBVTE9O
RyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC0xMzIsMTggKzEz
MywxNiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6cG9zdE5vdGlmaWNhCiAKIC8vIElX
ZWJOb3RpZmljYXRpb25DZW50ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJOb3RpZmlj
YXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXIoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdl
Yk5vdGlmaWNhdGlvbkNlbnRlcioqIGNlbnRlcikKK0hSRVNVTFQgV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyOjpkZWZhdWx0Q2VudGVyKF9DT01fT3V0cHRyX29wdF8gSVdlYk5vdGlmaWNhdGlvbkNlbnRl
cioqIGNlbnRlcikKIHsKKyAgICBpZiAoIWNlbnRlcikKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKICAgICAqY2VudGVyID0gZGVmYXVsdENlbnRlckludGVybmFsKCk7CiAgICAgKCpjZW50ZXIp
LT5BZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmFkZE9ic2VydmVyKCAKLSAgICAvKiBbaW5dICov
IElXZWJOb3RpZmljYXRpb25PYnNlcnZlciogb2JzZXJ2ZXIsCi0gICAgLyogW2luXSAqLyBCU1RS
IG5vdGlmaWNhdGlvbk5hbWUsCi0gICAgLyogW2luXSAqLyBJVW5rbm93biogYW5PYmplY3QpCitI
UkVTVUxUIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6YWRkT2JzZXJ2ZXIoX0luX29wdF8gSVdlYk5v
dGlmaWNhdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgX0luXyBCU1RSIG5vdGlmaWNhdGlvbk5hbWUs
IF9Jbl9vcHRfIElVbmtub3duKiBhbk9iamVjdCkKIHsKICAgICBTdHJpbmcgbmFtZShub3RpZmlj
YXRpb25OYW1lLCBTeXNTdHJpbmdMZW4obm90aWZpY2F0aW9uTmFtZSkpOwogICAgIE1hcHBlZE9i
c2VydmVyczo6aXRlcmF0b3IgaXQgPSBkLT5tX21hcHBlZE9ic2VydmVycy5maW5kKG5hbWUpOwpA
QCAtMTU4LDggKzE1Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0
aW8KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OnBvc3ROb3RpZmljYXRpb24oIAotICAgIC8qIFtpbl0gKi8gSVdl
Yk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQorSFJFU1VMVCBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OnBvc3ROb3RpZmljYXRpb24oX0luX29wdF8gSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQogewogICAgIEJTdHJpbmcgbmFtZTsKICAgICBIUkVTVUxUIGhyID0gbm90aWZpY2F0aW9u
LT5uYW1lKCZuYW1lKTsKQEAgLTE3NiwyMCArMTc0LDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViTm90aWZpY2F0aW8KICAgICByZXR1cm4gaHI7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpwb3N0Tm90aWZpY2F0aW9uTmFtZSgg
Ci0gICAgLyogW2luXSAqLyBCU1RSIG5vdGlmaWNhdGlvbk5hbWUsCi0gICAgLyogW2luXSAqLyBJ
VW5rbm93biogYW5PYmplY3QsCi0gICAgLyogW29wdGlvbmFsXVtpbl0gKi8gSVByb3BlcnR5QmFn
KiB1c2VySW5mbykKK0hSRVNVTFQgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpwb3N0Tm90aWZpY2F0
aW9uTmFtZShfSW5fIEJTVFIgbm90aWZpY2F0aW9uTmFtZSwgX0luX29wdF8gSVVua25vd24qIGFu
T2JqZWN0LCBfSW5fb3B0XyBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQogewogICAgIENPTVB0cjxX
ZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihBZG9wdENPTSwgV2ViTm90aWZpY2F0aW9uOjpj
cmVhdGVJbnN0YW5jZShub3RpZmljYXRpb25OYW1lLCBhbk9iamVjdCwgdXNlckluZm8pKTsKICAg
ICBwb3N0Tm90aWZpY2F0aW9uSW50ZXJuYWwobm90aWZpY2F0aW9uLmdldCgpLCBub3RpZmljYXRp
b25OYW1lLCBhbk9iamVjdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpyZW1vdmVPYnNlcnZlciggCi0gICAg
LyogW2luXSAqLyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIqIGFuT2JzZXJ2ZXIsCi0gICAgLyog
W2luXSAqLyBCU1RSIG5vdGlmaWNhdGlvbk5hbWUsCi0gICAgLyogW29wdGlvbmFsXVtpbl0gKi8g
SVVua25vd24qIGFuT2JqZWN0KQorSFJFU1VMVCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OnJlbW92
ZU9ic2VydmVyKF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb25PYnNlcnZlciogYW5PYnNlcnZlciwg
X0luXyBCU1RSIG5vdGlmaWNhdGlvbk5hbWUsIF9Jbl9vcHRfIElVbmtub3duKiBhbk9iamVjdCkK
IHsKICAgICBTdHJpbmcgbmFtZShub3RpZmljYXRpb25OYW1lLCBTeXNTdHJpbmdMZW4obm90aWZp
Y2F0aW9uTmFtZSkpOwogICAgIE1hcHBlZE9ic2VydmVyczo6aXRlcmF0b3IgaXQgPSBkLT5tX21h
cHBlZE9ic2VydmVycy5maW5kKG5hbWUpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViTm90
aWZpY2F0aW9uQ2VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViTm90
aWZpY2F0aW9uQ2VudGVyLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYk5vdGlmaWNhdGlvbkNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAs
MzggKzQwLDIzIEBAIHByb3RlY3RlZDoKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJl
bGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8gSVdlYk5v
dGlmaWNhdGlvbkNlbnRlcgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
ZWZhdWx0Q2VudGVyKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViTm90aWZpY2F0
aW9uQ2VudGVyICoqY2VudGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgYWRkT2JzZXJ2ZXIoIAotICAgICAgICAvKiBbaW5dICovIElXZWJOb3RpZmljYXRp
b25PYnNlcnZlciAqb2JzZXJ2ZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBub3RpZmljYXRp
b25OYW1lLAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICphbk9iamVjdCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBvc3ROb3RpZmljYXRpb24oIAot
ICAgICAgICAvKiBbaW5dICovIElXZWJOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBvc3ROb3RpZmljYXRpb25O
YW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG5vdGlmaWNhdGlvbk5hbWUsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24gKmFuT2JqZWN0LAotICAgICAgICAvKiBbb3B0aW9uYWxdW2lu
XSAqLyBJUHJvcGVydHlCYWcgKnVzZXJJbmZvKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlT2JzZXJ2ZXIoIAotICAgICAgICAvKiBbaW5dICovIElX
ZWJOb3RpZmljYXRpb25PYnNlcnZlciAqYW5PYnNlcnZlciwKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIG5vdGlmaWNhdGlvbk5hbWUsCi0gICAgICAgIC8qIFtvcHRpb25hbF1baW5dICovIElVbmtu
b3duICphbk9iamVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRl
ZmF1bHRDZW50ZXIoX0NPTV9PdXRwdHJfb3B0XyBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRPYnNlcnZlcihfSW5fb3B0
XyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIqLCBfSW5fIEJTVFIgbm90aWZpY2F0aW9uTmFtZSwg
X0luX29wdF8gSVVua25vd24qIGFuT2JqZWN0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcG9zdE5vdGlmaWNhdGlvbihfSW5fb3B0XyBJV2ViTm90aWZpY2F0aW9uKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBvc3ROb3RpZmljYXRpb25O
YW1lKF9Jbl8gQlNUUiBub3RpZmljYXRpb25OYW1lLCBfSW5fb3B0XyBJVW5rbm93biogYW5PYmpl
Y3QsIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogdXNlckluZm8pOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVPYnNlcnZlcihfSW5fb3B0XyBJV2ViTm90aWZpY2F0
aW9uT2JzZXJ2ZXIqLCBfSW5fIEJTVFIgbm90aWZpY2F0aW9uTmFtZSwgX0luX29wdF8gSVVua25v
d24qIGFuT2JqZWN0KTsKIAogICAgIC8vIFdlYk5vdGlmaWNhdGlvbkNlbnRlcgogICAgIHN0YXRp
YyBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKICAgICB2
b2lkIHBvc3ROb3RpZmljYXRpb25JbnRlcm5hbChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24sIEJTVFIgbm90aWZpY2F0aW9uTmFtZSwgSVVua25vd24qIGFuT2JqZWN0KTsKIAogcHJvdGVj
dGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4gZDsKICAg
ICBzdGF0aWMgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbV9kZWZhdWx0Q2VudGVyOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDEwICsxMjAsNiBAQCBXZWJQcmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0
CiB9CiAKIFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCi0gICAgOiBtX3JlZkNvdW50
KDApCi0gICAgLCBtX2F1dG9TYXZlcygwKQotICAgICwgbV9hdXRvbWF0aWNhbGx5RGV0ZWN0c0Nh
Y2hlTW9kZWwodHJ1ZSkKLSAgICAsIG1fbnVtV2ViVmlld3MoMCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsKQEAgLTUy
Myw5ICs1MTksMTEgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuYwog
CiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0
KQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7
CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBw
dk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93
bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViUHJlZmVyZW5jZXMqPih0
aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlByZWZlcmVuY2Vz
KSkKQEAgLTU0Myw3ICs1NDEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpBZGRSZWYodm9pZCkKK1VMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlBy
ZWZlcmVuY2VzOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CkBAIC01
NTksOCArNTU3LDcgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6Ogog
CiAvLyBJV2ViUHJlZmVyZW5jZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OnN0YW5kYXJkUHJlZmVyZW5jZXMoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYlByZWZlcmVuY2VzKiogc3RhbmRhcmRQcmVmZXJlbmNlcykKK0hSRVNVTFQgV2ViUHJl
ZmVyZW5jZXM6OnN0YW5kYXJkUHJlZmVyZW5jZXMoX0NPTV9PdXRwdHJfb3B0XyBJV2ViUHJlZmVy
ZW5jZXMqKiBzdGFuZGFyZFByZWZlcmVuY2VzKQogewogICAgIGlmICghc3RhbmRhcmRQcmVmZXJl
bmNlcykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTU2OSw5ICs1NjYsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmluaXRXaXRoSWRl
bnRpZmllciggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBhbklkZW50aWZpZXIsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlByZWZlcmVuY2VzKiogcHJlZmVyZW5jZXMpCitIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjppbml0V2l0aElkZW50aWZpZXIoX0luXyBCU1RSIGFuSWRlbnRp
ZmllciwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViUHJlZmVyZW5jZXMqKiBwcmVmZXJlbmNlcykKIHsK
ICAgICBXZWJQcmVmZXJlbmNlcyAqaW5zdGFuY2UgPSBnZXRJbnN0YW5jZUZvcklkZW50aWZpZXIo
YW5JZGVudGlmaWVyKTsKICAgICBpZiAoaW5zdGFuY2UpIHsKQEAgLTU5NSw1NjIgKzU5MCw1NjEg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlcwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjppZGVu
dGlmaWVyKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGlkZW50KQorSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6aWRlbnRpZmllcihfX2RlcmVmX29wdF9vdXQgQlNUUiogaWRlbnQpCiB7
CiAgICAgaWYgKCFpZGVudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqaWRlbnQg
PSBtX2lkZW50aWZpZXIgPyBTeXNBbGxvY1N0cmluZyhtX2lkZW50aWZpZXIpIDogMDsKKyAgICAq
aWRlbnQgPSBtX2lkZW50aWZpZXIgPyBTeXNBbGxvY1N0cmluZyhtX2lkZW50aWZpZXIpIDogbnVs
bHB0cjsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6c3RhbmRhcmRGb250RmFtaWx5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIGZhbWlseSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnN0YW5kYXJkRm9udEZh
bWlseShfX2RlcmVmX29wdF9vdXQgQlNUUiogZmFtaWx5KQogeworICAgIGlmICghZmFtaWx5KQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktl
eShXZWJLaXRTdGFuZGFyZEZvbnRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpmYW1pbHkp
ID8gU19PSyA6IEVfRkFJTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVm
ZXJlbmNlczo6c2V0U3RhbmRhcmRGb250RmFtaWx5KCAKLSAgICAvKiBbaW5dICovIEJTVFIgZmFt
aWx5KQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U3RhbmRhcmRGb250RmFtaWx5KF9Jbl8g
QlNUUiBmYW1pbHkpCiB7CiAgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0U3RhbmRhcmRGb250UHJl
ZmVyZW5jZUtleSwgZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6Zml4ZWRGb250RmFtaWx5KCAKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmZp
eGVkRm9udEZhbWlseShfX2RlcmVmX29wdF9vdXQgQlNUUiogZmFtaWx5KQogeworICAgIGlmICgh
ZmFtaWx5KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpmYW1pbHkgPSBzdHJpbmdW
YWx1ZUZvcktleShXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpm
YW1pbHkpID8gU19PSyA6IEVfRkFJTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6c2V0Rml4ZWRGb250RmFtaWx5KCAKLSAgICAvKiBbaW5dICovIEJTVFIg
ZmFtaWx5KQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0Rml4ZWRGb250RmFtaWx5KF9Jbl8g
QlNUUiBmYW1pbHkpCiB7CiAgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0Rml4ZWRGb250UHJlZmVy
ZW5jZUtleSwgZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2VyaWZGb250RmFtaWx5KCAKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIGZvbnRGYW1pbHkpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpz
ZXJpZkZvbnRGYW1pbHkoX19kZXJlZl9vcHRfb3V0IEJTVFIqIGZvbnRGYW1pbHkpCiB7CisgICAg
aWYgKCFmb250RmFtaWx5KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpmb250RmFt
aWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0U2VyaWZGb250UHJlZmVyZW5jZUtleSk7CiAg
ICAgcmV0dXJuICgqZm9udEZhbWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRTZXJpZkZvbnRGYW1pbHkoIAotICAg
IC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRTZXJp
ZkZvbnRGYW1pbHkoX0luXyBCU1RSIGZhbWlseSkKIHsKICAgICBzZXRTdHJpbmdWYWx1ZShXZWJL
aXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5LCBmYW1pbHkpOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzYW5zU2VyaWZGb250
RmFtaWx5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSkKK0hSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OnNhbnNTZXJpZkZvbnRGYW1pbHkoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IGZhbWlseSkKIHsKKyAgICBpZiAoIWZhbWlseSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
ICAgICAqZmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZl
cmVuY2VLZXkpOwogICAgIHJldHVybiAoKmZhbWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCAKLSAgICAvKiBbaW5dICovIEJTVFIgZmFtaWx5KQorSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2V0U2Fuc1NlcmlmRm9udEZhbWlseShfSW5fIEJTVFIgZmFtaWx5KQogewogICAgIHNl
dFN0cmluZ1ZhbHVlKFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5LCBmYW1pbHkpOwog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpjdXJzaXZlRm9udEZhbWlseSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
KiBmYW1pbHkpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpjdXJzaXZlRm9udEZhbWlseShfX2Rl
cmVmX29wdF9vdXQgQlNUUiogZmFtaWx5KQogeworICAgIGlmICghZmFtaWx5KQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRD
dXJzaXZlRm9udFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiAoKmZhbWlseSkgPyBTX09LIDog
RV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpz
ZXRDdXJzaXZlRm9udEZhbWlseSggCi0gICAgLyogW2luXSAqLyBCU1RSIGZhbWlseSkKK0hSRVNV
TFQgV2ViUHJlZmVyZW5jZXM6OnNldEN1cnNpdmVGb250RmFtaWx5KF9Jbl8gQlNUUiBmYW1pbHkp
CiB7CiAgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5LCBm
YW1pbHkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjpmYW50YXN5Rm9udEZhbWlseSggCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSKiBmYW1pbHkpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpmYW50YXN5Rm9udEZh
bWlseShfX2RlcmVmX29wdF9vdXQgQlNUUiogZmFtaWx5KQogeworICAgIGlmICghZmFtaWx5KQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktl
eShXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiAoKmZhbWlseSkg
PyBTX09LIDogRV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpzZXRGYW50YXN5Rm9udEZhbWlseSggCi0gICAgLyogW2luXSAqLyBCU1RSIGZhbWls
eSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEZhbnRhc3lGb250RmFtaWx5KF9Jbl8gQlNU
UiBmYW1pbHkpCiB7CiAgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0RmFudGFzeUZvbnRQcmVmZXJl
bmNlS2V5LCBmYW1pbHkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpwaWN0b2dyYXBoRm9udEZhbWlseSggCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmYW1pbHkpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpw
aWN0b2dyYXBoRm9udEZhbWlseShfX2RlcmVmX29wdF9vdXQgQlNUUiogZmFtaWx5KQogeworICAg
IGlmICghZmFtaWx5KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpmYW1pbHkgPSBz
dHJpbmdWYWx1ZUZvcktleShXZWJLaXRQaWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpOwogICAg
IHJldHVybiAoKmZhbWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRQaWN0b2dyYXBoRm9udEZhbWlseSggCi0gICAg
LyogW2luXSAqLyBCU1RSIGZhbWlseSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFBpY3Rv
Z3JhcGhGb250RmFtaWx5KF9Jbl8gQlNUUiBmYW1pbHkpCiB7CiAgICAgc2V0U3RyaW5nVmFsdWUo
V2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5LCBmYW1pbHkpOwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpkZWZh
dWx0Rm9udFNpemUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBmb250U2l6ZSkKK0hS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OmRlZmF1bHRGb250U2l6ZShfT3V0XyAgaW50KiBmb250U2l6
ZSkKIHsKKyAgICBpZiAoIWZvbnRTaXplKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAg
ICpmb250U2l6ZSA9IGludGVnZXJWYWx1ZUZvcktleShXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0RGVmYXVsdEZvbnRTaXplKCAKLSAgICAvKiBbaW5dICov
IGludCBmb250U2l6ZSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldERlZmF1bHRGb250U2l6
ZShpbnQgZm9udFNpemUpCiB7CiAgICAgc2V0SW50ZWdlclZhbHVlKFdlYktpdERlZmF1bHRGb250
U2l6ZVByZWZlcmVuY2VLZXksIGZvbnRTaXplKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZGVmYXVsdEZpeGVkRm9udFNp
emUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBmb250U2l6ZSkKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OmRlZmF1bHRGaXhlZEZvbnRTaXplKF9PdXRfIGludCogZm9udFNpemUpCiB7
CisgICAgaWYgKCFmb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZm9u
dFNpemUgPSBpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0RGVmYXVsdEZpeGVkRm9udFNpemVQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoIAotICAgIC8qIFtp
bl0gKi8gaW50IGZvbnRTaXplKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0RGVmYXVsdEZp
eGVkRm9udFNpemUoaW50IGZvbnRTaXplKQogewogICAgIHNldEludGVnZXJWYWx1ZShXZWJLaXRE
ZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVuY2VLZXksIGZvbnRTaXplKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bWlu
aW11bUZvbnRTaXplKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogZm9udFNpemUpCitI
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjptaW5pbXVtRm9udFNpemUoX091dF8gaW50KiBmb250U2l6
ZSkKIHsKKyAgICBpZiAoIWZvbnRTaXplKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAg
ICpmb250U2l6ZSA9IGludGVnZXJWYWx1ZUZvcktleShXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0TWluaW11bUZvbnRTaXplKCAKLSAgICAvKiBbaW5dICov
IGludCBmb250U2l6ZSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldE1pbmltdW1Gb250U2l6
ZShpbnQgZm9udFNpemUpCiB7CiAgICAgc2V0SW50ZWdlclZhbHVlKFdlYktpdE1pbmltdW1Gb250
U2l6ZVByZWZlcmVuY2VLZXksIGZvbnRTaXplKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bWluaW11bUxvZ2ljYWxGb250
U2l6ZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIGZvbnRTaXplKQorSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6bWluaW11bUxvZ2ljYWxGb250U2l6ZShfT3V0XyBpbnQqIGZvbnRTaXpl
KQogeworICAgIGlmICghZm9udFNpemUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAg
KmZvbnRTaXplID0gaW50ZWdlclZhbHVlRm9yS2V5KFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNp
emVQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSggCi0g
ICAgLyogW2luXSAqLyBpbnQgZm9udFNpemUpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplKGludCBmb250U2l6ZSkKIHsKICAgICBzZXRJbnRlZ2VyVmFs
dWUoV2ViS2l0TWluaW11bUxvZ2ljYWxGb250U2l6ZVByZWZlcmVuY2VLZXksIGZvbnRTaXplKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVm
ZXJlbmNlczo6ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogbmFtZSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmRlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiBuYW1lKQogeworICAgIGlmICghbmFtZSkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqbmFtZSA9IHN0cmluZ1ZhbHVlRm9yS2V5KFdl
YktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuICgq
bmFtZSkgPyBTX09LIDogRV9GQUlMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSggCi0gICAgLyogW2luXSAq
LyBCU1RSIG5hbWUpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0VGV4dEVuY29k
aW5nTmFtZShfSW5fIEJTVFIgbmFtZSkKIHsKICAgICBzZXRTdHJpbmdWYWx1ZShXZWJLaXREZWZh
dWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXksIG5hbWUpOwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjp1c2VyU3R5
bGVTaGVldEVuYWJsZWQoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkK
K0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVzZXJTdHlsZVNoZWV0RW5hYmxlZChfT3V0XyBCT09M
KiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRVc2VyU3R5bGVTaGVldEVu
YWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKCAK
LSAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZChCT09MIGVuYWJsZWQpCiB7CiAgICAgc2V0Qm9vbFZhbHVl
KFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIGxvY2F0aW9uKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6dXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihfX2RlcmVmX29wdF9vdXQgQlNUUiogbG9jYXRpb24pCiB7CisgICAgaWYgKCFsb2NhdGlv
bikKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqbG9jYXRpb24gPSBzdHJpbmdWYWx1
ZUZvcktleShXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5jZUtleSk7CiAgICAg
cmV0dXJuICgqbG9jYXRpb24pID8gU19PSyA6IEVfRkFJTDsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiggCi0g
ICAgLyogW2luXSAqLyBCU1RSIGxvY2F0aW9uKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihfSW5fIEJTVFIgbG9jYXRpb24pCiB7CiAgICAgc2V0U3Ry
aW5nVmFsdWUoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlvblByZWZlcmVuY2VLZXksIGxvY2F0
aW9uKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6aXNKYXZhRW5hYmxlZCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aXNKYXZhRW5hYmxlZChfT3V0
XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRKYXZhRW5hYmxl
ZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRKYXZhRW5hYmxlZCggCi0gICAgLyogW2luXSAq
LyBCT09MIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRKYXZhRW5hYmxlZChC
T09MIGVuYWJsZWQpCiB7CiAgICAgc2V0Qm9vbFZhbHVlKFdlYktpdEphdmFFbmFibGVkUHJlZmVy
ZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmlzSmF2YVNjcmlwdEVuYWJsZWQoIAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OmlzSmF2YVNjcmlwdEVuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVu
YWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFs
dWVGb3JLZXkoV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6
c2V0SmF2YVNjcmlwdEVuYWJsZWQoIAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJF
U1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0SmF2YVNjcmlwdEVuYWJsZWQoQk9PTCBlbmFibGVkKQog
ewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXks
IGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlByZWZlcmVuY2VzOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gdW5zaWduZWQqIGZsYWdzKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6amF2
YVNjcmlwdFJ1bnRpbWVGbGFncyhfT3V0XyB1bnNpZ25lZCogZmxhZ3MpCiB7CisgICAgaWYgKCFm
bGFncykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZmxhZ3MgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW50ZWdlclZhbHVlRm9yS2V5KFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxh
Z3NQcmVmZXJlbmNlS2V5KSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoCi0g
ICAgLyogW2luXSAqLyB1bnNpZ25lZCBmbGFncykKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNl
dEphdmFTY3JpcHRSdW50aW1lRmxhZ3ModW5zaWduZWQgZmxhZ3MpCiB7CiAgICAgc2V0SW50ZWdl
clZhbHVlKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5LCBzdGF0aWNf
Y2FzdDxpbnQ+KGZsYWdzKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmlzV2ViU2VjdXJpdHlFbmFibGVkKAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OmlzV2ViU2VjdXJpdHlFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFl
bmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0gYm9vbFZh
bHVlRm9yS2V5KFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzZXRXZWJTZWN1cml0eUVuYWJsZWQoIAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQor
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0V2ViU2VjdXJpdHlFbmFibGVkKEJPT0wgZW5hYmxl
ZCkKIHsKICAgICBzZXRCb29sVmFsdWUoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5j
ZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCitIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjphbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhfT3V0XyBCT09M
KiBhbGxvd0FjY2VzcykKIHsKKyAgICBpZiAoIWFsbG93QWNjZXNzKQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogICAgICphbGxvd0FjY2VzcyA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRBbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygKLSAgICAvKiBbaW5dICovIEJPT0wgYWxs
b3dBY2Nlc3MpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhCT09MIGFsbG93QWNjZXNzKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJL
aXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXksIGFsbG93QWNj
ZXNzKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjph
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoX091dF8gQk9PTCogYWxsb3dBY2Nlc3MpCiB7Cisg
ICAgaWYgKCFhbGxvd0FjY2VzcykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqYWxs
b3dBY2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
cygKLSAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpCitIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoQk9PTCBhbGxvd0FjY2VzcykKIHsK
ICAgICBzZXRCb29sVmFsdWUoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVy
ZW5jZUtleSwgYWxsb3dBY2Nlc3MpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoX091dF8gQk9PTCogZW5h
YmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAg
ICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkKAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChCT09MIGVuYWJsZWQpCiB7CiAg
ICAgc2V0Qm9vbFZhbHVlKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJl
bmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aXNYU1NBdWRpdG9yRW5hYmxlZCgKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpp
c1hTU0F1ZGl0b3JFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFi
bGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0gYm9vbFZhbHVl
Rm9yS2V5KFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNl
dFhTU0F1ZGl0b3JFbmFibGVkKAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VM
VCBXZWJQcmVmZXJlbmNlczo6c2V0WFNTQXVkaXRvckVuYWJsZWQoQk9PTCBlbmFibGVkKQogewog
ICAgIHNldEJvb2xWYWx1ZShXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXksIGVu
YWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjppc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aXNGcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFi
bGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0gYm9vbFZhbHVl
Rm9yS2V5KFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgKLSAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxl
ZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoQk9P
TCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmphdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHkoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxl
ZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9t
YXRpY2FsbHkoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2Vi
S2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpOwog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCAKLSAgICAv
KiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoQk9PTCBlbmFibGVkKQogewogICAgIHNl
dEJvb2xWYWx1ZShXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJl
ZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFyZVBsdWdJbnNFbmFibGVkKCAKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2Vz
OjphcmVQbHVnSW5zRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRQ
bHVnSW5zRW5hYmxlZCggCi0gICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCitIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjpzZXRQbHVnSW5zRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7CiAgICAgc2V0
Qm9vbFZhbHVlKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OmlzQ1NTUmVnaW9uc0VuYWJsZWQoCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aXNDU1NSZWdpb25zRW5hYmxlZChf
T3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRDU1NSZWdp
b25zRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRDU1NSZWdpb25zRW5hYmxlZCgK
LSAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNl
dENTU1JlZ2lvbnNFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKICAgICBzZXRCb29sVmFsdWUoV2Vi
S2l0Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxs
b3dzQW5pbWF0ZWRJbWFnZXMoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxl
ZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFsbG93c0FuaW1hdGVkSW1hZ2VzKF9PdXRfIEJP
T0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwogICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEFsbG93QW5pbWF0ZWRJ
bWFnZXNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoIAot
ICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0
QWxsb3dzQW5pbWF0ZWRJbWFnZXMoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShX
ZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OmFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmcoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFsbG93QW5pbWF0ZWRJbWFnZUxv
b3BpbmcoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0
QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxv
d0FuaW1hdGVkSW1hZ2VMb29waW5nKCAKLSAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK0hS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmcoQk9PTCBl
bmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29w
aW5nUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldExvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSggCi0gICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZl
cmVuY2VzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoQk9PTCBlbmFibGVkKQogewogICAg
IHNldEJvb2xWYWx1ZShXZWJLaXREaXNwbGF5SW1hZ2VzS2V5LCBlbmFibGVkKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0RGlz
cGxheUltYWdlc0tleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxv
YWRpbmdQcmVmZXJlbmNlKAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZl
cmVuY2UoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRMb2FkU2l0ZUlj
b25zS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1ByZWZlcmVuY2UoCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQor
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6bG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGlu
Z1ByZWZlcmVuY2UoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXko
V2ViS2l0TG9hZFNpdGVJY29uc0tleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQoCi0gICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCitIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpzZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKEJPT0wgZW5hYmxl
ZCkKIHsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6aGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCgKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpo
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7Cisg
ICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVk
ID0gZmFsc2U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViUHJlZmVyZW5jZXM6OnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKAot
ICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0
TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoQk9PTCBlbmFibGVkKQogewogICAgIHNl
dEJvb2xWYWx1ZShXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVu
Y2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjptZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVy
ZSgKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjptZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShfT3V0XyBCT09MKiBl
bmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
ICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWly
ZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRNZWRpYVBsYXliYWNrQWxs
b3dzSW5saW5lKAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVm
ZXJlbmNlczo6c2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZShCT09MIGVuYWJsZWQpCiB7CiAg
ICAgc2V0Qm9vbFZhbHVlKFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNl
S2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bWVkaWFQbGF5YmFja0FsbG93c0lubGluZSgKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2Vz
OjptZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAg
aWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0g
Ym9vbFZhbHVlRm9yS2V5KFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNl
S2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6c2V0QXV0b3NhdmVzKCAKLSAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxl
ZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEF1dG9zYXZlcyhCT09MIGVuYWJsZWQpCiB7
CiAgICAgbV9hdXRvU2F2ZXMgPSAhIWVuYWJsZWQ7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmF1dG9zYXZlcyggCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNl
czo6YXV0b3NhdmVzKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0gbV9hdXRvU2F2ZXMgPyBU
UlVFIDogRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFNob3VsZFByaW50QmFja2dyb3VuZHMoIAotICAgIC8q
IFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxk
UHJpbnRCYWNrZ3JvdW5kcyhCT09MIGVuYWJsZWQpCiB7CiAgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6
c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBl
bmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhf
T3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRTaG91bGRQ
cmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoIAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVm
ZXJlbmNlczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7CiAgICAg
c2V0Qm9vbFZhbHVlKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBl
bmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJQcmVmZXJlbmNlczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCggCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZv
cktleShXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OnNldFRhYnNUb0xpbmtzKCAKLSAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OnNldFRhYnNUb0xpbmtzKEJPT0wgZW5hYmxlZCkKIHsKICAgICBzZXRC
b29sVmFsdWUoV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
Ojp0YWJzVG9MaW5rcyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQor
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6dGFic1RvTGlua3MoX091dF8gQk9PTCogZW5hYmxlZCkK
IHsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRUYWJUb0xpbmtzUHJlZmVy
ZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViUHJlZmVyZW5jZXM6OnNldFVzZXNQYWdlQ2FjaGUoIAotICAgICAgICAvKiBbaW5dICov
IEJPT0wgdXNlc1BhZ2VDYWNoZSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFVzZXNQYWdl
Q2FjaGUoQk9PTCB1c2VzUGFnZUNhY2hlKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSwgdXNlc1BhZ2VDYWNoZSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnVzZXNQYWdl
Q2FjaGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogdXNlc1BhZ2VDYWNoZSkKK0hS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVzZXNQYWdlQ2FjaGUoX091dF8gQk9PTCogdXNlc1BhZ2VD
YWNoZSkKIHsKKyAgICBpZiAoIXVzZXNQYWdlQ2FjaGUpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAgICAgKnVzZXNQYWdlQ2FjaGUgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0VXNlc1BhZ2VD
YWNoZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjp0ZXh0QXJlYXNBcmVSZXNpemFibGUoIAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5j
ZXM6OnRleHRBcmVhc0FyZVJlc2l6YWJsZShfT3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJv
b2xWYWx1ZUZvcktleShXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVm
ZXJlbmNlczo6c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKCAKLSAgICAvKiBbaW5dICovIEJPT0wg
ZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFRleHRBcmVhc0FyZVJlc2l6YWJs
ZShCT09MIGVuYWJsZWQpCiB7CiAgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFRleHRBcmVhc0FyZVJl
c2l6YWJsZVByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjpoaXN0b3J5SXRlbUxpbWl0KGludCogbGltaXQpCitIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpoaXN0b3J5SXRlbUxpbWl0KF9PdXRfIGludCogbGltaXQpCiB7
CisgICAgaWYgKCFsaW1pdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqbGltaXQg
PSBpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC0xMTYxLDggKzExNTUsMTAgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNl
czo6c2V0SGlzdG9yeUl0ZW1MaQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpoaXN0b3J5QWdlSW5EYXlzTGltaXQoaW50KiBsaW1pdCkKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6Omhpc3RvcnlBZ2VJbkRheXNMaW1pdChfT3V0XyBpbnQqIGxpbWl0KQogewor
ICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmxpbWl0ID0g
aW50ZWdlclZhbHVlRm9yS2V5KFdlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdEtleSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CkBAIC0xMTg1LDQxICsxMTgxLDQzIEBAIEhSRVNVTFQgV2ViUHJlZmVy
ZW5jZXM6OnVudXNlZDIoKQogICAgIHJldHVybiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgV2ViUHJl
ZmVyZW5jZXM6Omljb25EYXRhYmFzZUxvY2F0aW9uKAotICAgIC8qIFtvdXRdICovIEJTVFIqIGxv
Y2F0aW9uKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aWNvbkRhdGFiYXNlTG9jYXRpb24oX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIGxvY2F0aW9uKQogeworICAgIGlmICghbG9jYXRpb24pCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmxvY2F0aW9uID0gc3RyaW5nVmFsdWVGb3JLZXko
V2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkpOwogICAgIHJldHVybiAoKmxvY2F0aW9uKSA/
IFNfT0sgOiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEljb25EYXRh
YmFzZUxvY2F0aW9uKAotICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhdGlvbikKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OnNldEljb25EYXRhYmFzZUxvY2F0aW9uKF9Jbl8gQlNUUiBsb2NhdGlvbikK
IHsKICAgICBzZXRTdHJpbmdWYWx1ZShXZWJLaXRJY29uRGF0YWJhc2VMb2NhdGlvbktleSwgbG9j
YXRpb24pOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpp
Y29uRGF0YWJhc2VFbmFibGVkKEJPT0wqIGVuYWJsZWQpLy9sb2NhdGlvbikKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6Omljb25EYXRhYmFzZUVuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsK
KyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJs
ZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0SWNvbkRhdGFiYXNlRW5hYmxlZFByZWZlcmVuY2VL
ZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRJ
Y29uRGF0YWJhc2VFbmFibGVkKEJPT0wgZW5hYmxlZCApLy9sb2NhdGlvbikKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoQk9PTCBlbmFibGVkKQogewogICAg
IHNldEJvb2xWYWx1ZShXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5h
YmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXM6OmZvbnRTbW9vdGhpbmcoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Rm9udFNtb290aGluZ1R5cGUqIHNtb290aGluZ1R5cGUpCitIUkVTVUxUIFdlYlByZWZlcmVuY2Vz
Ojpmb250U21vb3RoaW5nKF9PdXRfIEZvbnRTbW9vdGhpbmdUeXBlKiBzbW9vdGhpbmdUeXBlKQog
eworICAgIGlmICghc21vb3RoaW5nVHlwZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAg
ICAqc21vb3RoaW5nVHlwZSA9IHN0YXRpY19jYXN0PEZvbnRTbW9vdGhpbmdUeXBlPihpbnRlZ2Vy
VmFsdWVGb3JLZXkoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5j
ZXM6OnNldEZvbnRTbW9vdGhpbmcoIAotICAgIC8qIFtpbl0gKi8gRm9udFNtb290aGluZ1R5cGUg
c21vb3RoaW5nVHlwZSkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEZvbnRTbW9vdGhpbmco
Rm9udFNtb290aGluZ1R5cGUgc21vb3RoaW5nVHlwZSkKIHsKICAgICBzZXRJbnRlZ2VyVmFsdWUo
V2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5LCBzbW9vdGhpbmdUeXBlKTsKICAg
ICBpZiAoc21vb3RoaW5nVHlwZSA9PSBGb250U21vb3RoaW5nVHlwZVdpbmRvd3MpCkBAIC0xMjMw
LDE1ICsxMjI4LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXMK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVm
ZXJlbmNlczo6Zm9udFNtb290aGluZ0NvbnRyYXN0KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IGZsb2F0KiBjb250cmFzdCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmZvbnRTbW9vdGhpbmdD
b250cmFzdChfT3V0XyBmbG9hdCogY29udHJhc3QpCiB7CisgICAgaWYgKCFjb250cmFzdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqY29udHJhc3QgPSBmbG9hdFZhbHVlRm9yS2V5
KFdlYktpdEZvbnRTbW9vdGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRG
b250U21vb3RoaW5nQ29udHJhc3QoIAotICAgIC8qIFtpbl0gKi8gZmxvYXQgY29udHJhc3QpCitI
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRGb250U21vb3RoaW5nQ29udHJhc3QoZmxvYXQgY29u
dHJhc3QpCiB7CiAgICAgc2V0RmxvYXRWYWx1ZShXZWJLaXRGb250U21vb3RoaW5nQ29udHJhc3RQ
cmVmZXJlbmNlS2V5LCBjb250cmFzdCk7CiAjaWYgVVNFKENHKQpAQCAtMTI0Nyw5ICsxMjQ1LDEw
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXMKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZWRp
dGFibGVMaW5rQmVoYXZpb3IoCi0gICAgLyogW291dCwgcmV0dmFsXSAqLyBXZWJLaXRFZGl0YWJs
ZUxpbmtCZWhhdmlvciogZWRpdGFibGVMaW5rQmVoYXZpb3IpCitIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjplZGl0YWJsZUxpbmtCZWhhdmlvcihfT3V0XyBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlv
ciogZWRpdGFibGVMaW5rQmVoYXZpb3IpCiB7CisgICAgaWYgKCFlZGl0YWJsZUxpbmtCZWhhdmlv
cikKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBXZWJLaXRFZGl0YWJsZUxpbmtCZWhh
dmlvciB2YWx1ZSA9IHN0YXRpY19jYXN0PFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yPihpbnRl
Z2VyVmFsdWVGb3JLZXkoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5KSk7
CiAgICAgc3dpdGNoICh2YWx1ZSkgewogICAgICAgICBjYXNlIFdlYktpdEVkaXRhYmxlTGlua0Rl
ZmF1bHRCZWhhdmlvcjoKQEAgLTEyNjYsOCArMTI2NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXMKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0RWRpdGFibGVMaW5rQmVoYXZpb3IoCi0g
ICAgLyogW2luXSAqLyBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvciBiZWhhdmlvcikKK0hSRVNV
TFQgV2ViUHJlZmVyZW5jZXM6OnNldEVkaXRhYmxlTGlua0JlaGF2aW9yKFdlYktpdEVkaXRhYmxl
TGlua0JlaGF2aW9yIGJlaGF2aW9yKQogewogICAgIHNldEludGVnZXJWYWx1ZShXZWJLaXRFZGl0
YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXksIGJlaGF2aW9yKTsKICAgICByZXR1cm4gU19P
SzsKQEAgLTEyODUsOCArMTI4MywxMCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjp1bnVzZWQ2
KCkKICAgICByZXR1cm4gRV9GQUlMOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjptb2Nr
U2Nyb2xsYmFyc0VuYWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
Om1vY2tTY3JvbGxiYXJzRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICgh
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xW
YWx1ZUZvcktleShXZWJLaXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAg
ICByZXR1cm4gU19PSzsKIH0KQEAgLTEyOTksOCArMTI5OSwxMSBAQCBIUkVTVUxUIFdlYlByZWZl
cmVuY2VzOjpzZXRNb2NrU2Nyb2xsYmFyCiAKIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBuby1v
cHMsIGFuZCBvbmx5IHJldGFpbmVkIHRvIGtlZXAKIC8vIHRoZSBJbnRlcmZhY2UgY29uc2lzdGVu
dC4gRE8gTk9UIFVTRSBUSEVNLgotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2NyZWVuRm9udFN1
YnN0aXR1dGlvbkVuYWJsZWQoQk9PTCopCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzY3JlZW5G
b250U3Vic3RpdHV0aW9uRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICgh
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICBlbmFibGVkID0gZmFsc2U7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEzMDksMjIgKzEzMTIsMjEgQEAgSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6c2V0U2NyZWVuRm9udFN1YgogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpoeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQoCi0gICAgLyogW2luXSAqLyBCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVm
ZXJlbmNlczo6aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7
CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZFByZWZl
cmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlByZWZlcmVuY2VzOjpzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpz
ZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xW
YWx1ZShXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVk
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6Y29va2llU3RvcmFnZUFjY2VwdFBvbGljeSggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSAqYWNjZXB0UG9saWN5
ICkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmNvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koX091
dF8gV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSogYWNjZXB0UG9saWN5KQogewogICAg
IGlmICghYWNjZXB0UG9saWN5KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTMzMywx
NiArMTMzNSwxNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OnNldENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koIAotICAgICAgICAvKiBbaW5dICov
IFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgYWNjZXB0UG9saWN5KQorSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6c2V0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeShXZWJLaXRDb29raWVT
dG9yYWdlQWNjZXB0UG9saWN5IGFjY2VwdFBvbGljeSkKIHsKICAgICBzZXRJbnRlZ2VyVmFsdWUo
V2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVuY2VLZXksIGFjY2VwdFBvbGlj
eSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIAotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6Y29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoX091dF8gQk9PTCogZW5h
YmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAg
ICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xMzUzLDggKzEz
NTYsMTAgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0Q29udGludW91c1NwZQogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpncmFtbWFyQ2hlY2tpbmdF
bmFibGVkKEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpncmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5
KFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19P
SzsKIH0KQEAgLTEzNjUsOCArMTM3MCwxMCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRH
cmFtbWFyQ2hlY2tpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5j
ZXM6OmFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmcoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OmFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmcoX091dF8gQk9PTCog
ZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQWxsb3dDb250aW51b3VzU3BlbGxDaGVj
a2luZ1ByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTM4OSw4ICsxMzk2
LDEwIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVudXNlZDgoKQogICAgIHJldHVybiBFX0ZB
SUw7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmlzRE9NUGFzdGVBbGxvd2VkKEJPT0wq
IGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjppc0RPTVBhc3RlQWxsb3dlZChfT3V0
XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRET01QYXN0ZUFs
bG93ZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE0MDEsNyArMTQx
MCw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldERPTVBhc3RlQWxsb3cKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6Y2FjaGVNb2RlbChXZWJDYWNo
ZU1vZGVsKiBjYWNoZU1vZGVsKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6Y2FjaGVNb2RlbChf
T3V0XyBXZWJDYWNoZU1vZGVsKiBjYWNoZU1vZGVsKQogewogICAgIGlmICghY2FjaGVNb2RlbCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE0MzAsOCArMTQzOSwxMSBAQCBIUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjp1bnVzZWQ0KCkKIAogLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIG5v
LW9wcywgYW5kIG9ubHkgcmV0YWluZWQgdG8ga2VlcAogLy8gdGhlIEludGVyZmFjZSBjb25zaXN0
ZW50LiBETyBOT1QgVVNFIFRIRU0uCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzaG91bGRQYWlu
dE5hdGl2ZUNvbnRyb2xzKEJPT0wqKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkUGFp
bnROYXRpdmVDb250cm9scyhfT3V0XyBCT09MKiBlbmFibGUpCiB7CisgICAgaWYgKCFlbmFibGUp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmVuYWJsZSA9IEZBTFNFOwogICAgIHJl
dHVybiBTX09LOwogfQogCkBAIC0xNDQ2LDcgKzE0NTgsNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXREZXZlbG9wZXJFeHRyCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNV
TFQgV2ViUHJlZmVyZW5jZXM6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQoX091dF8gQk9PTCogZW5h
YmxlZCkKIHsKICAgICBpZiAoIWVuYWJsZWQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBA
IC0xNDY2LDcgKzE0NzgsNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBdXRvbWF0aWNh
bGx5CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmF1dG9t
YXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2RlbChCT09MKiBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hl
TW9kZWwpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjphdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hl
TW9kZWwoX091dF8gQk9PTCogYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsKQogewogICAg
IGlmICghYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwpAQCAtMTQ3NSwxMyArMTQ4NywxMyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjph
dXRvbWF0aWNhbGx5RGV0CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEJP
T0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKICAgICBzZXRCb29sVmFsdWUoV2ViS2l0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVy
ZW5jZXM6OmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7
CiAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTQ5Miw4
ICsxNTA0LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXMKIAog
Ly8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIG5vLW9wcywgYW5kIG9ubHkgcmV0YWluZWQgdG8ga2Vl
cAogLy8gdGhlIEludGVyZmFjZSBjb25zaXN0ZW50LiBETyBOT1QgVVNFIFRIRU0uCi1IUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjppbkFwcGxpY2F0aW9uQ2hyb21lTW9kZShCT09MKikKK0hSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OmluQXBwbGljYXRpb25DaHJvbWVNb2RlKF9PdXRfIEJPT0wqIGVuYWJs
ZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICplbmFibGVkID0gRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE1MDIsNjIgKzE1
MTcsNzIgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QXBwbGljYXRpb25DaAogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoQk9PTCBlbmFibGVkKQorSFJF
U1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KEJPT0wgZW5hYmxlZCkKIHsKICAgICBzZXRCb29sVmFsdWUoV2ViS2l0T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6Om9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQ
cmVmZXJlbmNlczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKF9PdXRfIEJPT0wq
IGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREYXRhYmFzZXNFbmFi
bGVkKEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldERhdGFiYXNlc0Vu
YWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXREYXRhYmFzZXNF
bmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmRhdGFiYXNlc0VuYWJsZWQo
Qk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmRhdGFiYXNlc0VuYWJsZWQo
X091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0RGF0YWJh
c2VzRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRMb2NhbFN0b3JhZ2VFbmFibGVk
KEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldExvY2FsU3RvcmFnZUVu
YWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRMb2NhbFN0b3Jh
Z2VFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmxvY2FsU3RvcmFnZUVu
YWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmxvY2FsU3RvcmFn
ZUVuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2Vi
S2l0TG9jYWxTdG9yYWdlRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgoQlNUUiogbG9jYXRpb24pCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjps
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoX19kZXJlZl9vcHRfb3V0IEJTVFIqIGxvY2F0aW9uKQog
eworICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmxv
Y2F0aW9uID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
UHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuICgqbG9jYXRpb24pID8gU19PSyA6IEVfRkFJTDsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0TG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKEJTVFIgbG9jYXRpb24pCitIUkVTVUxUIFdlYlByZWZlcmVuY2Vz
OjpzZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoX0luXyBCU1RSIGxvY2F0aW9uKQogewogICAg
IHNldFN0cmluZ1ZhbHVlKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VL
ZXksIGxvY2F0aW9uKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJs
ZWQoQk9PTCBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0RXhwZXJpbWVudGFs
Tm90aWZpY2F0aW9uc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShX
ZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJs
ZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpleHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZChCT09MKiBlbmFi
bGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6ZXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0Vu
YWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0
RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1
cm4gU19PSzsKIH0KQEAgLTE1NjgsMjUgKzE1OTMsMjkgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNl
czo6c2V0Wm9vbXNUZXh0T25seQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjp6b29tc1RleHRPbmx5KEJPT0wqIHpvb21zVGV4dE9ubHkpCitIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjp6b29tc1RleHRPbmx5KF9PdXRfIEJPT0wqIHpvb21zVGV4dE9ubHkpCiB7
CisgICAgaWYgKCF6b29tc1RleHRPbmx5KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAg
ICp6b29tc1RleHRPbmx5ID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFpvb21zVGV4dE9ubHlQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoQk9P
TCB1c2VIaWdoUmVzb2x1dGlvblRpbWVycykKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNo
b3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKEJPT0wgdXNlSGlnaFJlc29sdXRpb25UaW1lcnMp
CiB7CiAgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVy
ZW5jZUtleSwgdXNlSGlnaFJlc29sdXRpb25UaW1lcnMpOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzaG91bGRVc2VIaWdo
UmVzb2x1dGlvblRpbWVycyhCT09MKiB1c2VIaWdoUmVzb2x1dGlvblRpbWVycykKK0hSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OnNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKF9PdXRfIEJPT0wq
IHVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKQogeworICAgIGlmICghdXNlSGlnaFJlc29sdXRpb25U
aW1lcnMpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnVzZUhpZ2hSZXNvbHV0aW9u
VGltZXJzID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJl
ZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5j
ZXM6OnNldFByZWZlcmVuY2VGb3JUZXN0KEJTVFIga2V5LCBCU1RSIHZhbHVlKQorSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6c2V0UHJlZmVyZW5jZUZvclRlc3QoX0luXyBCU1RSIGtleSwgX0luXyBC
U1RSIHZhbHVlKQogewogICAgIGlmICghU3lzU3RyaW5nTGVuKGtleSkgfHwgIVN5c1N0cmluZ0xl
bih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xNjAzLDggKzE2MzIsMTAgQEAg
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QWNjZWxlcmF0ZWRDbwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZChCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6YWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAjaWYgVVNFKENBKQogICAgICplbmFibGVk
ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSAm
JiBib29sVmFsdWVGb3JLZXkoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KTsKICNlbHNlCkBAIC0xNjE0LDggKzE2NDUsMTAgQEAgSFJFU1VMVCBXZWJQcmVm
ZXJlbmNlczo6YWNjZWxlcmF0ZWRDb21wbwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjpzaG93RGVidWdCb3JkZXJzKEJPT0wqIGVuYWJsZWQpCitIUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjpzaG93RGVidWdCb3JkZXJzKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7
CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5
KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE2MjYsOCArMTY1OSwxMCBAQCBIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjpzZXRTaG93RGVidWdCb3JkCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3dSZXBhaW50Q291bnRlcihCT09MKiBlbmFibGVkKQor
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvd1JlcGFpbnRDb3VudGVyKF9PdXRfIEJPT0wqIGVu
YWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFNob3dSZXBhaW50Q291bnRlclBy
ZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTY0NCw4ICsxNjc5LDEwIEBA
IEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEN1c3RvbURyYWdDdXIKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6Y3VzdG9tRHJhZ0N1cnNvcnNFbmFibGVk
KEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpjdXN0b21EcmFnQ3Vyc29y
c0VuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2Vi
S2l0Q3VzdG9tRHJhZ0N1cnNvcnNFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CkBAIC0xNjU2LDEzICsxNjkzLDE1IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNl
dEROU1ByZWZldGNoaW4KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6aXNETlNQcmVmZXRjaGluZ0VuYWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OmlzRE5TUHJlZmV0Y2hpbmdFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQp
CiB7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpl
bmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEROU1ByZWZldGNoaW5nRW5hYmxlZFByZWZl
cmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2Vz
Ojppc0Z1bGxTY3JlZW5FbmFibGVkKEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjppc0Z1bGxTY3JlZW5FbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmICghZW5hYmxlZCkKQEAgLTE2ODUsNyArMTcyNCw3
IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEZ1bGxTY3JlZW5FbmEKICNlbmRpZgogfQog
Ci1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjphdkZvdW5kYXRpb25FbmFibGVkKEJPT0wqIGVuYWJs
ZWQpCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjphdkZvdW5kYXRpb25FbmFibGVkKF9PdXRfIEJP
T0wqIGVuYWJsZWQpCiB7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICBpZiAoIWVuYWJsZWQp
CkBAIC0xNzA4LDcgKzE3NDcsNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBVkZvdW5k
YXRpb25FCiAjZW5kaWYKIH0KIAotSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvd3NUb29sVGlw
T3ZlclRydW5jYXRlZFRleHQoQk9PTCogc2hvd3NUb29sVGlwKQorSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHQoX091dF8gQk9PTCogc2hvd3NUb29s
VGlwKQogewogICAgIGlmICghc2hvd3NUb29sVGlwKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwpAQCAtMTcyMyw3ICsxNzYyLDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvd3NU
b29sVGlwTwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpz
aG91bGRJbnZlcnRDb2xvcnMoQk9PTCogc2hvdWxkSW52ZXJ0Q29sb3JzKQorSFJFU1VMVCBXZWJQ
cmVmZXJlbmNlczo6c2hvdWxkSW52ZXJ0Q29sb3JzKF9PdXRfIEJPT0wqIHNob3VsZEludmVydENv
bG9ycykKIHsKICAgICBpZiAoIXNob3VsZEludmVydENvbG9ycykKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTE3NTIsNyArMTc5MSw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmRpZFJl
bW92ZUZyb21XZWJWaWUKICAgICB9CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3Vs
ZERpc3BsYXlTdWJ0aXRsZXMoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgaWYgKCFlbmFibGVkKQpAQCAtMTc3NSw3ICsxODE0LDcgQEAg
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxkRGlzcGxheQogI2VuZGlmCiB9CiAKLUhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3VsZERpc3BsYXlDYXB0aW9ucyhCT09MKiBlbmFibGVk
KQorSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkRGlzcGxheUNhcHRpb25zKF9PdXRfIEJP
T0wqIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmICghZW5hYmxl
ZCkKQEAgLTE3OTgsNyArMTgzNyw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNob3Vs
ZERpc3BsYXkKICNlbmRpZgogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzaG91bGREaXNw
bGF5VGV4dERlc2NyaXB0aW9ucyhCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJQcmVmZXJlbmNl
czo6c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoX091dF8gQk9PTCogZW5hYmxlZCkKIHsK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKCFlbmFibGVkKQpAQCAtMTgyNywxNCAr
MTg2NiwxOCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRSZXF1ZXN0QW5pbWF0CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnJlcXVlc3RBbmltYXRp
b25GcmFtZUVuYWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnJl
cXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBp
ZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKmVuYWJsZWQgPSBi
b29sVmFsdWVGb3JLZXkoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpp
c0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQg
V2ViUHJlZmVyZW5jZXM6OmlzSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RW5hYmxlZChfT3V0XyBC
T09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKICAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAg
LTE4NDUsOCArMTg4OCwxMCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRFbmFibGVJbmhl
cml0CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFsbG93
RGlzcGxheUFuZFJ1bm5pbmdPZkluc2VjdXJlQ29udGVudChCT09MKiBlbmFibGVkKQorSFJFU1VM
VCBXZWJQcmVmZXJlbmNlczo6YWxsb3dEaXNwbGF5QW5kUnVubmluZ09mSW5zZWN1cmVDb250ZW50
KF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEFsbG93
RGlzcGxheUFuZFJ1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXkpOwogICAgIHJl
dHVybiBTX09LOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCShyZXZpc2lv
biAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMDksIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNDU3ICs0MCwxOTQgQEAg
cHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBw
cHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZv
aWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViUHJlZmVyZW5jZXMKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RhbmRhcmRQcmVmZXJlbmNlcygg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlByZWZlcmVuY2VzKiogc3RhbmRhcmRQ
cmVmZXJlbmNlcyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGluaXRXaXRoSWRlbnRpZmllciggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBhbklkZW50aWZp
ZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYlByZWZlcmVuY2VzKiogcHJlZmVy
ZW5jZXMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpZGVu
dGlmaWVyKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBpZGVudCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0YW5kYXJkRm9udEZhbWls
eSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogZmFtaWx5KTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhbmRhcmRGb250RmFtaWx5
KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGZhbWlseSk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpeGVkRm9udEZhbWlseSggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogZmFtaWx5KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Rml4ZWRGb250RmFtaWx5KCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIGZhbWlseSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNlcmlmRm9udEZhbWlseSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
Zm9udEZhbWlseSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFNlcmlmRm9udEZhbWlseSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzYW5zU2VyaWZGb250
RmFtaWx5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmYW1pbHkpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGZhbWlseSk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGN1cnNpdmVGb250RmFtaWx5KCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmYW1pbHkpOwotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDdXJzaXZlRm9udEZhbWlseSggCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBmYW50YXN5Rm9udEZhbWlseSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogZmFtaWx5KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0RmFudGFzeUZvbnRGYW1pbHkoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
ZmFtaWx5KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGlj
dG9ncmFwaEZvbnRGYW1pbHkoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZh
bWlseSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFBp
Y3RvZ3JhcGhGb250RmFtaWx5KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGZhbWlseSk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRGb250U2l6
ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBmb250U2l6ZSk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERlZmF1bHRGb250U2l6ZSgg
Ci0gICAgICAgIC8qIFtpbl0gKi8gaW50IGZvbnRTaXplKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdEZpeGVkRm9udFNpemUoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIGludCogZm9udFNpemUpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZhdWx0Rml4ZWRGb250U2l6ZSggCi0gICAgICAg
IC8qIFtpbl0gKi8gaW50IGZvbnRTaXplKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbWluaW11bUZvbnRTaXplKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBpbnQqIGZvbnRTaXplKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0TWluaW11bUZvbnRTaXplKCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQgZm9u
dFNpemUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtaW5p
bXVtTG9naWNhbEZvbnRTaXplKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIGZv
bnRTaXplKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
TWluaW11bUxvZ2ljYWxGb250U2l6ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGZvbnRTaXpl
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIG5hbWUp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZhdWx0
VGV4dEVuY29kaW5nTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlclN0eWxlU2hlZXRFbmFi
bGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VXNlclN0eWxlU2hlZXRF
bmFibGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1c2VyU3R5bGVTaGVldExvY2F0aW9uKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBsb2NhdGlvbik7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYXRpb24pOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0phdmFFbmFibGVkKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SmF2YUVuYWJsZWQoIAotICAgICAgICAvKiBbaW5dICov
IEJPT0wgZW5hYmxlZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGlzSmF2YVNjcmlwdEVuYWJsZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIGVuYWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRKYXZhU2NyaXB0RW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVk
KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiBlbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSggCi0gICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYXJlUGx1Z0luc0VuYWJsZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIGVuYWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRQbHVnSW5zRW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFi
bGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0NTU1JlZ2lv
bnNFbmFibGVkKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDU1NSZWdpb25z
RW5hYmxlZCgKLSAgICAgICAgLyogW2luXSAqLyBCT09MKTsKLSAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RhbmRhcmRQcmVmZXJlbmNlcyhfQ09NX091dHB0cl9v
cHRfIElXZWJQcmVmZXJlbmNlcyoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaW5pdFdpdGhJZGVudGlmaWVyKF9Jbl8gQlNUUiwgX0NPTV9PdXRwdHJfb3B0XyBJV2Vi
UHJlZmVyZW5jZXMqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlk
ZW50aWZpZXIoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc3RhbmRhcmRGb250RmFtaWx5KF9fZGVyZWZfb3B0X291dCBCU1RSKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFN0YW5kYXJkRm9udEZh
bWlseShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBm
aXhlZEZvbnRGYW1pbHkoX19kZXJlZl9vcHRfb3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Rml4ZWRGb250RmFtaWx5KF9Jbl8gQlNUUik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlcmlmRm9udEZhbWlseShfX2RlcmVm
X29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRTZXJpZkZvbnRGYW1pbHkoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2Fuc1NlcmlmRm9udEZhbWlseShfX2RlcmVmX29wdF9vdXQgQlNUUiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGN1
cnNpdmVGb250RmFtaWx5KF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEN1cnNpdmVGb250RmFtaWx5KF9Jbl8gQlNUUik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZhbnRhc3lGb250RmFtaWx5KF9f
ZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEZhbnRhc3lGb250RmFtaWx5KF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHBpY3RvZ3JhcGhGb250RmFtaWx5KF9fZGVyZWZfb3B0X291dCBC
U1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRlZmF1bHRGb250U2l6ZShfT3V0XyBpbnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0RGVmYXVsdEZvbnRTaXplKGludCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRGaXhlZEZvbnRTaXplKF9PdXRfIGludCop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZWZhdWx0Rml4ZWRG
b250U2l6ZShpbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtaW5p
bXVtRm9udFNpemUoX091dF8gaW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldE1pbmltdW1Gb250U2l6ZShpbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBtaW5pbXVtTG9naWNhbEZvbnRTaXplKF9PdXRfIGludCopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXpl
KGludCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKF9Jbl8gQlNUUik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVzZXJTdHlsZVNoZWV0RW5h
YmxlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgdXNlclN0eWxlU2hlZXRMb2NhdGlvbihfX2RlcmVmX29wdF9vdXQgQlNU
UiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRVc2VyU3R5bGVT
aGVldExvY2F0aW9uKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlzSmF2YUVuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRKYXZhRW5hYmxlZChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNKYXZhU2NyaXB0RW5hYmxlZChfT3V0XyBCT09MKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEphdmFTY3JpcHRFbmFibGVk
KEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseShCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXJl
UGx1Z0luc0VuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRQbHVnSW5zRW5hYmxlZChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaXNDU1NSZWdpb25zRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENTU1JlZ2lvbnNFbmFibGVkKEJP
T0wpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQ3KCk7CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDgoKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dzQW5pbWF0ZWRJbWFnZXMo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd3NBbmltYXRlZEltYWdl
cyggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dBbmltYXRlZEltYWdlTG9vcGluZyggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93QW5pbWF0ZWRJbWFnZUxvb3Bp
bmcoIAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXV0b3NhdmVzKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCT09MIGVuYWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhdXRvc2F2ZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVu
YWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRT
aG91bGRQcmludEJhY2tncm91bmRzKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRQcmlu
dEJhY2tncm91bmRzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVk
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRhYnNUb0xpbmtz
KCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWJzVG9MaW5rcyggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgdGV4dEFyZWFzQXJlUmVzaXphYmxlKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MICplbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKCAKLSAgICAgICAgLyogW2luXSAq
LyBCT09MIGVuYWJsZWQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHVzZXNQYWdlQ2FjaGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnVzZXNQ
YWdlQ2FjaGUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFVz
ZXNQYWdlQ2FjaGUoIAotICAgICAgICAvKiBbaW5dICovIEJPT0wgdXNlc1BhZ2VDYWNoZSk7Ci0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dzQW5pbWF0ZWRJbWFn
ZXMoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRBbGxvd3NBbmltYXRlZEltYWdlcyhCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYWxsb3dBbmltYXRlZEltYWdlTG9vcGluZyhfT3V0XyBCT09MKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93QW5pbWF0ZWRJbWFnZUxv
b3BpbmcoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseShCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KF9PdXRfIEJPT0wqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXV0b3NhdmVzKEJPT0wpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdXRvc2F2ZXMoX091dF8gQk9PTCop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTaG91bGRQcmludEJh
Y2tncm91bmRzKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
aG91bGRQcmludEJhY2tncm91bmRzKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChCT09MKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChf
T3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRh
YnNUb0xpbmtzKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
YWJzVG9MaW5rcyhfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHRleHRBcmVhc0FyZVJlc2l6YWJsZShfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShCT09MKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlc1BhZ2VDYWNoZShfT3V0
XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFVzZXNQ
YWdlQ2FjaGUoQk9PTCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVu
dXNlZDEoKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMigp
OwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb25EYXRhYmFzZUxv
Y2F0aW9uKAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGxvY2F0aW9uKTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJY29uRGF0YWJhc2VMb2Nh
dGlvbigKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2F0aW9uKTsKLQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uRGF0YWJhc2VFbmFibGVkKAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldEljb25EYXRhYmFzZUVuYWJsZWQoCi0gICAgICAgIC8qIFtp
bl0gKi8gQk9PTCBlbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBmb250U21vb3RoaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBGb250U21v
b3RoaW5nVHlwZSogc21vb3RoaW5nVHlwZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEZvbnRTbW9vdGhpbmcoIAotICAgICAgICAvKiBbaW5dICovIEZv
bnRTbW9vdGhpbmdUeXBlIHNtb290aGluZ1R5cGUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGVkaXRhYmxlTGlua0JlaGF2aW9yKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvciogYmVoYXZpb3IpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFZGl0YWJsZUxpbmtCZWhh
dmlvciggCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3IgYmVo
YXZpb3IpOwotCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb25EYXRh
YmFzZUxvY2F0aW9uKF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldEljb25EYXRhYmFzZUxvY2F0aW9uKF9Jbl8gQlNUUik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGljb25EYXRhYmFzZUVuYWJsZWQo
X091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJ
Y29uRGF0YWJhc2VFbmFibGVkKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBmb250U21vb3RoaW5nKF9PdXRfIEZvbnRTbW9vdGhpbmdUeXBlKik7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEZvbnRTbW9vdGhpbmcoRm9udFNtb290
aGluZ1R5cGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlZGl0YWJs
ZUxpbmtCZWhhdmlvcihfT3V0XyBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvciopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFZGl0YWJsZUxpbmtCZWhhdmlvcihX
ZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvcik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHVudXNlZDUoKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgdW51c2VkNigpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFdl
YktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgKmFjY2VwdFBvbGljeSk7Ci0gICAgICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb29raWVTdG9yYWdlQWNj
ZXB0UG9saWN5KCAKLSAgICAgICAgLyogW2luXSAqLyBXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5IGFjY2VwdFBvbGljeSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MICplbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBncmFtbWFyQ2hlY2tpbmdFbmFibGVkKCAKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MICplbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZCggCi0gICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5nKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MICplbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZyggCi0gICAgICAg
IC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpc0RPTVBhc3RlQWxsb3dlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCAqZW5hYmxlZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldERPTVBhc3RlQWxsb3dlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFi
bGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWNoZU1vZGVs
KAotICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFdlYkNhY2hlTW9kZWwqIGNhY2hlTW9kZWwpOwot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENhY2hlTW9kZWwoCi0g
ICAgIC8qIFtpbl0gKi8gV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKTsKLQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KF9PdXRf
IFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeShXZWJLaXRDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q29udGludW91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBn
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChCT09MKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dDb250aW51b3VzU3BlbGxDaGVj
a2luZyhfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmcoQk9PTCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlzRE9NUGFzdGVBbGxvd2VkKF9PdXRfIEJPT0wqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RE9NUGFzdGVBbGxvd2VkKEJP
T0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWNoZU1vZGVsKF9P
dXRfIFdlYkNhY2hlTW9kZWwqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgdW51c2VkMygpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB1bnVzZWQ0KCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0QVZGb3VuZGF0aW9uRW5hYmxlZCgKLSAgICAvKiBbaW5dICovIEJPT0wpOwotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF2Rm91bmRhdGlvbkVuYWJsZWQoCi0g
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0U2hvdWxkRGlzcGxheVN1YnRpdGxlcygKLSAgICAvKiBbaW5dICov
IEJPT0wpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZERp
c3BsYXlTdWJ0aXRsZXMoCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKik7Ci0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2hvdWxkRGlzcGxheUNhcHRpb25z
KAotICAgIC8qIFtpbl0gKi8gQk9PTCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hvdWxkRGlzcGxheUNhcHRpb25zKAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCopOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNob3Vs
ZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKAotICAgIC8qIFtpbl0gKi8gQk9PTCk7Ci0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkRGlzcGxheVRleHREZXNjcmlw
dGlvbnMoCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFWRm91bmRhdGlvbkVuYWJsZWQoQk9PTCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF2Rm91bmRhdGlvbkVuYWJsZWQoX091
dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTaG91
bGREaXNwbGF5U3VidGl0bGVzKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzaG91bGREaXNwbGF5U3VidGl0bGVzKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKEJPT0wp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGREaXNwbGF5Q2Fw
dGlvbnMoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhCT09MKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoX091
dF8gQk9PTCopOwogCiAgICAgLy8gSVdlYlByZWZlcmVuY2VzUHJpdmF0ZQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKAotICAg
ICAgICAvKiBbaW5dICovIEJPT0wpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCopOwotCi0gICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRB
dXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwoCi0gICAgICAgICAvKiBbaW5dICovIEJPT0wg
YXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsKTsKLQotICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1vZGVsKAotICAgICAg
ICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9k
ZWwpOwotCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwo
Qk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF1dG9tYXRpY2Fs
bHlEZXRlY3RzQ2FjaGVNb2RlbChfT3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEJPT0wpOwotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdXRob3JBbmRVc2VyU3R5bGVzRW5h
YmxlZChCT09MKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5B
cHBsaWNhdGlvbkNocm9tZU1vZGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KmVuYWJsZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRBcHBsaWNhdGlvbkNocm9tZU1vZGUoIAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxl
ZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJs
ZWQpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MICplbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXREYXRhYmFzZXNFbmFibGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJs
ZWQpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0
YWJhc2VzRW5hYmxlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqZW5hYmxl
ZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TG9jYWxTdG9y
YWdlRW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLSAgICAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsU3RvcmFnZUVuYWJs
ZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmVuYWJsZWQpOwotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCU1RSKiBsb2NhdGlvbik7Ci0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYXRpb24pOwotCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVk
KAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmVuYWJsZWQpOwotCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlv
bnNFbmFibGVkKAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKF9P
dXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5BcHBs
aWNhdGlvbkNocm9tZU1vZGUoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBcHBsaWNhdGlvbkNocm9tZU1vZGUoQk9PTCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGF0YWJhc2VzRW5hYmxlZChCT09MKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0YWJhc2VzRW5hYmxlZChfT3V0
XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExvY2Fs
U3RvcmFnZUVuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGxvY2FsU3RvcmFnZUVuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoX19kZXJlZl9vcHRf
b3V0IEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKF9PdXRfIEJP
T0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhwZXJpbWVu
dGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoQk9PTCk7CiAKICAgICAvLyBUaGVzZSB0d28gbWV0aG9k
cyBhcmUgbm8tb3BzLCBhbmQgb25seSByZXRhaW5lZCB0byBrZWVwCiAgICAgLy8gdGhlIEludGVy
ZmFjZSBjb25zaXN0ZW50LiBETyBOT1QgVVNFIFRIRU0uCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoQk9PTCk7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZFBhaW50TmF0aXZlQ29udHJv
bHMoQk9PTCopOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFpv
b21zVGV4dE9ubHkoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCB6b29tc1RleHRPbmx5
KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB6b29tc1RleHRPbmx5
KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnpvb21zVGV4dE9ubHkpOwotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvbnRTbW9vdGhpbmdDb250cmFzdCgg
Ci0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBmbG9hdCogY29udHJhc3QpOwotCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEZvbnRTbW9vdGhpbmdDb250cmFzdCggCi0g
ICAgLyogW2luXSAqLyBmbG9hdCBjb250cmFzdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgaXNXZWJTZWN1cml0eUVuYWJsZWQoCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiBlbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRXZWJTZWN1cml0eUVuYWJsZWQoCi0gICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQp
OwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzKAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dB
Y2Nlc3MpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKAotICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0Fj
Y2Vzcyk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzKAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dB
Y2Nlc3MpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygKLSAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3Mp
OwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRDYW5B
Y2Nlc3NDbGlwYm9hcmQoCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsK
LQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRKYXZhU2NyaXB0Q2Fu
QWNjZXNzQ2xpcGJvYXJkKAotICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1hTU0F1ZGl0b3JFbmFibGVkKAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0WFNTQXVkaXRvckVuYWJsZWQoCi0gICAgLyogW2luXSAq
LyBCT09MIGVuYWJsZWQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKAotICAgIC8qIFtpbl0gKi8gQk9PTCB1
c2VIaWdoUmVzb2x1dGlvblRpbWVycyk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiB1c2VIaWdoUmVzb2x1dGlvblRpbWVycyk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgKLSAgICAvKiBbaW5d
ICovIEJPT0wgZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0UHJlZmVyZW5jZUZvclRlc3QoCi0gICAgLyogW2luXSAqLyBCU1RSIGtleSwKLSAgICAv
KiBbaW5dICovIEJTVFIgdmFsdWUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKF9PdXRfIEJPT0wqKTsKIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRab29tc1RleHRPbmx5KEJPT0wpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB6b29tc1RleHRPbmx5KF9PdXRfIEJP
T0wgKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvbnRTbW9vdGhp
bmdDb250cmFzdChfT3V0XyBmbG9hdCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRGb250U21vb3RoaW5nQ29udHJhc3QoZmxvYXQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1dlYlNlY3VyaXR5RW5hYmxlZChfT3V0XyBCT09MKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNlY3VyaXR5RW5h
YmxlZChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
cyhCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKEJPT0wpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChCT09MKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNYU1NBdWRpdG9yRW5hYmxlZChfT3V0XyBCT09MKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFhTU0F1ZGl0b3JFbmFi
bGVkKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTaG91
bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoX091dF8gIEJPT0wq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKF9PdXRfICBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZlcmVuY2VGb3JUZXN0KF9Jbl8gQlNUUiBrZXks
IF9Jbl8gQlNUUiB2YWx1ZSk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKEJPT0wpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChCT09M
Kik7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRDdXN0b21EcmFnQ3Vyc29yc0VuYWJsZWQoQk9PTCk7Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGN1c3RvbURyYWdDdXJzb3JzRW5hYmxlZChC
T09MKik7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3VzdG9tRHJh
Z0N1cnNvcnNFbmFibGVkKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0U2hvd0RlYnVnQm9yZGVycyhCT09MKTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvd0RlYnVnQm9yZGVycyhCT09MKik7Ci0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvd0RlYnVnQm9yZGVycyhfT3V0XyBCT09M
Kik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNob3dSZXBhaW50
Q291bnRlcihCT09MKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hv
d1JlcGFpbnRDb3VudGVyKEJPT0wqKTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzaG93UmVwYWludENvdW50ZXIoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoQk9PTCk7Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRE5TUHJlZmV0Y2hpbmdFbmFi
bGVkKEJPT0wqKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpc0ROU1ByZWZldGNoaW5nRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChf
T3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEh5
cGVybGlua0F1ZGl0aW5nRW5hYmxlZChCT09MKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5j
ZShCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvYWRzU2l0
ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKF9PdXRfIEJPT0wqKTsKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmlu
Z0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UoQk9PTCk7Ci0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RnVsbFNjcmVlbkVuYWJsZWQoQk9PTCk7Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRnVsbFNjcmVlbkVuYWJsZWQoQk9PTCopOwotCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpc0Z1bGxTY3JlZW5FbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChfT3V0XyBC
T09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQoQk9PTCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoQk9PTCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZWRpYVBsYXliYWNrUmVxdWly
ZXNVc2VyR2VzdHVyZShfT3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKEJPT0wpOwotCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1lZGlhUGxheWJhY2tBbGxvd3NJ
bmxpbmUoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZWRp
YVBsYXliYWNrQWxsb3dzSW5saW5lKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZShCT09MKTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG93c1Rvb2xUaXBPdmVyVHJ1
bmNhdGVkVGV4dChCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0KF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRl
eHQoQk9PTCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxk
SW52ZXJ0Q29sb3JzKEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2hvdWxkSW52ZXJ0Q29sb3JzKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKEJPT0wpOwotCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJs
ZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXF1ZXN0
QW5pbWF0aW9uRnJhbWVFbmFibGVkKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZChCT09MKTsK
LQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtb2Nr
U2Nyb2xsYmFyc0VuYWJsZWQoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoQk9PTCk7CiAKICAgICAvLyBU
aGVzZSB0d28gbWV0aG9kcyBhcmUgbm8tb3BzLCBhbmQgb25seSByZXRhaW5lZCB0byBrZWVwCiAg
ICAgLy8gdGhlIEludGVyZmFjZSBjb25zaXN0ZW50LiBETyBOT1QgVVNFIFRIRU0uCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFi
bGVkKEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZChCT09M
KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0luaGVyaXRVUklR
dWVyeUNvbXBvbmVudEVuYWJsZWQoQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpc0luaGVyaXRVUklRdWVyeUNvbXBvbmVudEVuYWJsZWQoX091dF8gQk9PTCop
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnQoQk9PTCk7CiAKICAgICAvLyBJV2ViUHJlZmVyZW5jZXNQcml2YXRl
MgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBqYXZhU2NyaXB0UnVudGlt
ZUZsYWdzKHVuc2lnbmVkKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoX091dF8gdW5zaWduZWQqKTsKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh1bnNpZ25l
ZCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93RGlzcGxheUFu
ZFJ1bm5pbmdPZkluc2VjdXJlQ29udGVudChCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGFsbG93RGlzcGxheUFuZFJ1bm5pbmdPZkluc2VjdXJlQ29udGVudChf
T3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFs
bG93RGlzcGxheUFuZFJ1bm5pbmdPZkluc2VjdXJlQ29udGVudChCT09MKTsKIAogICAgIC8vIFdl
YlByZWZlcmVuY2VzCkBAIC01MDcsMTAgKzI0NCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdl
YlByZWZlcmVuY2VzKiBzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCk7CiAKICAgICAvLyBGcm9t
IFdlYkhpc3RvcnkuaAotICAgIEhSRVNVTFQgaGlzdG9yeUl0ZW1MaW1pdChpbnQqIGxpbWl0KTsK
LSAgICBIUkVTVUxUIHNldEhpc3RvcnlJdGVtTGltaXQoaW50IGxpbWl0KTsKLSAgICBIUkVTVUxU
IGhpc3RvcnlBZ2VJbkRheXNMaW1pdChpbnQqIGxpbWl0KTsKLSAgICBIUkVTVUxUIHNldEhpc3Rv
cnlBZ2VJbkRheXNMaW1pdChpbnQgbGltaXQpOworICAgIEhSRVNVTFQgaGlzdG9yeUl0ZW1MaW1p
dChfT3V0XyBpbnQqKTsKKyAgICBIUkVTVUxUIHNldEhpc3RvcnlJdGVtTGltaXQoaW50KTsKKyAg
ICBIUkVTVUxUIGhpc3RvcnlBZ2VJbkRheXNMaW1pdChfT3V0XyBpbnQqKTsKKyAgICBIUkVTVUxU
IHNldEhpc3RvcnlBZ2VJbkRheXNMaW1pdChpbnQpOwogCiAgICAgIHZvaWQgd2lsbEFkZFRvV2Vi
VmlldygpOwogICAgICB2b2lkIGRpZFJlbW92ZUZyb21XZWJWaWV3KCk7CkBAIC01NDAsMTIgKzI3
NywxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJl
ZmVyZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmKTsKIAogcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVm
Q291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gbV9wcml2YXRlUHJlZnM7CiAgICAgV2ViQ29yZTo6QlN0cmluZyBt
X2lkZW50aWZpZXI7Ci0gICAgYm9vbCBtX2F1dG9TYXZlczsKLSAgICBib29sIG1fYXV0b21hdGlj
YWxseURldGVjdHNDYWNoZU1vZGVsOwotICAgIHVuc2lnbmVkIG1fbnVtV2ViVmlld3M7CisgICAg
Ym9vbCBtX2F1dG9TYXZlcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9tYXRpY2FsbHlEZXRl
Y3RzQ2FjaGVNb2RlbCB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX251bVdlYlZpZXdzIHsgMCB9
OwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuY3BwCShyZXZpc2lv
biAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDggKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyBXZWJS
ZXNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKElTdHJlYW0q
IGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZnJhbWVOYW1lKQotICAgIDogbV9yZWZDb3VudCgwKQotICAgICwgbV9kYXRhKGRhdGEpCisg
ICAgOiBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fbWltZVR5cGUobWlt
ZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSkKQEAgLTYz
LDkgKzYyLDExIEBAIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UKIAog
Ly8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlJl
c291cmNlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hS
RVNVTFQgV2ViUmVzb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlm
ICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3Qg
PSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQogICAg
ICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVVua25vd24qPih0aGlzKTsKICAgICBlbHNl
IGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlJlc291cmNlKSkKQEAgLTc3LDEyICs3OCwx
MiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlJlc291cmNlOjpRCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlJlc291cmNlOjpBZGRSZWYo
dm9pZCkKK1VMT05HIFdlYlJlc291cmNlOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVm
Q291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlJlc291cmNlOjpSZWxlYXNl
KHZvaWQpCitVTE9ORyBXZWJSZXNvdXJjZTo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVm
ID0gLS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtOTMsMTIgKzk0LDcgQEAgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUmVzb3VyY2U6OlJlbAogCiAvLyBXZWJSZXNvdXJjZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJSZXNvdXJjZTo6aW5pdFdp
dGhEYXRhKCAKLSAgICAvKiBbaW5dICovIElTdHJlYW0gKmRhdGEsCi0gICAgLyogW2luXSAqLyBC
U1RSIHVybCwKLSAgICAvKiBbaW5dICovIEJTVFIgbWltZVR5cGUsCi0gICAgLyogW2luXSAqLyBC
U1RSIHRleHRFbmNvZGluZ05hbWUsCi0gICAgLyogW2luXSAqLyBCU1RSIGZyYW1lTmFtZSkKK0hS
RVNVTFQgV2ViUmVzb3VyY2U6OmluaXRXaXRoRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBf
SW5fIEJTVFIgdXJsLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdO
YW1lLCBfSW5fIEJTVFIgZnJhbWVOYW1lKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgbV91
cmwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKTsKQEAgLTEwOSwxNSArMTA1
LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUmVzb3VyY2U6OmkKICAgICByZXR1
cm4gU19PSzsKIH0KIAotICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJSZXNvdXJj
ZTo6ZGF0YSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJU3RyZWFtICoqZGF0YSkKK0hSRVNV
TFQgV2ViUmVzb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogZGF0YSkKIHsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmRhdGEgPSBu
dWxscHRyOwogICAgIHJldHVybiBtX2RhdGEuY29weVJlZlRvKGRhdGEpOwogfQogICAgCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlJlc291cmNlOjpVUkwoIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiAqdXJsKQorSFJFU1VMVCBXZWJSZXNvdXJjZTo6VVJMKF9fZGVyZWZfb3B0
X291dCBCU1RSKiB1cmwpCiB7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0xMjgsOCArMTI0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJSZXNvdXJjZTo6VQogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJSZXNvdXJjZTo6TUlNRVR5cGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqbWltZSkKK0hSRVNVTFQgV2ViUmVzb3VyY2U6Ok1JTUVUeXBlKF9fZGVyZWZfb3B0
X291dCBCU1RSKiBtaW1lKQogewogICAgIGlmICghbWltZSkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTE0MCw4ICsxMzUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlJlc291cmNlOjpNCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAKLUhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUmVzb3VyY2U6OnRleHRFbmNvZGluZ05hbWUoIAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqZW5jb2RpbmdOYW1lKQorSFJFU1VMVCBXZWJSZXNvdXJjZTo6dGV4
dEVuY29kaW5nTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogZW5jb2RpbmdOYW1lKQogewogICAg
IGlmICghZW5jb2RpbmdOYW1lKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTUyLDggKzE0Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUmVzb3VyY2U6OnQK
ICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UmVzb3VyY2U6OmZyYW1lTmFtZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpuYW1l
KQorSFJFU1VMVCBXZWJSZXNvdXJjZTo6ZnJhbWVOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiBu
YW1lKQogewogICAgIGlmICghbmFtZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MywzNSArNDMsMjAg
QEAgcHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQq
KiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVm
KHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lk
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViUmVzb3VyY2UKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhEYXRhKCAKLSAgICAg
ICAgLyogW2luXSAqLyBJU3RyZWFtICpkYXRhLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJs
LAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbWltZVR5cGUsCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZnJhbWVOYW1l
KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRhdGEo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElTdHJlYW0gKipkYXRhKTsKLSAgICAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgVVJMKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICp1cmwpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgTUlNRVR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKm1pbWUpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdGV4dEVuY29kaW5nTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiAqZW5jb2RpbmdOYW1lKTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGZyYW1lTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiAqbmFtZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRo
RGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgdXJsLCBfSW5fIEJTVFIgbWlt
ZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgZnJhbWVOYW1lKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGF0YShfQ09NX091dHB0cl9v
cHRfIElTdHJlYW0qKiBkYXRhKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgVVJMKF9fZGVyZWZfb3B0X291dCBCU1RSKiB1cmwpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBNSU1FVHlwZShfX2RlcmVmX29wdF9vdXQgQlNUUiogbWltZSk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRleHRFbmNvZGluZ05hbWUoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIGVuY29kaW5nTmFtZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGZyYW1lTmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogbmFtZSk7CiAK
IHByaXZhdGU6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7CiAgICAgV2ViQ29yZTo6VVJMIG1fdXJs
OwogICAgIFdURjo6U3RyaW5nIG1fbWltZVR5cGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJTY3JpcHRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNj
cmlwdE9iamVjdC5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlNjcmlwdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw2
IEBACiAvLyBXZWJTY3JpcHRPYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0
T2JqZWN0KCkKLSAgICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CkBAIC00Niw5ICs0NSwx
MSBAQCBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogCiAvLyBJVW5rbm93biAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2NyaXB0T2JqZWN0OjpR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2Vi
U2NyaXB0T2JqZWN0OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBw
dk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVs
bHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAg
KnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJTY3JpcHRPYmplY3QqPih0aGlzKTsKICAgICBl
bHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlNjcmlwdE9iamVjdCkpCkBAIC02MCwx
MiArNjEsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTY3JpcHRPYmplYwogICAg
IHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJTY3JpcHRPYmpl
Y3Q6OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViU2NyaXB0T2JqZWN0OjpBZGRSZWYoKQogewogICAg
IHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlNj
cmlwdE9iamVjdDo6UmVsZWFzZSh2b2lkKQorVUxPTkcgV2ViU2NyaXB0T2JqZWN0OjpSZWxlYXNl
KCkKIHsKICAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYp
CkBAIC03Niw2NCArNzcsNTQgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2NyaXB0T2Jq
ZWN0OgogCiAvLyBXZWJTY3JpcHRPYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViU2NyaXB0T2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbiggCi0gICAgLyogW2luXSAqLyBCU1RS
IC8qZXhjZXB0aW9uTWVzc2FnZSovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogLypy
ZXN1bHQqLykKK0hSRVNVTFQgV2ViU2NyaXB0T2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihfSW5fIEJT
VFIgLypleGNlcHRpb25NZXNzYWdlKi8sIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqcmVzdWx0ID0gRkFMU0U7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTY3JpcHRPYmplY3Q6OmNhbGxXZWJTY3JpcHRN
ZXRob2QoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKm5hbWUqLywKLSAgICAvKiBbc2l6ZV9pc11b
aW5dICovIGNvbnN0IFZBUklBTlQgLyphcmdzKi9bICBdLAotICAgIC8qIFtpbl0gKi8gaW50IC8q
Y0FyZ3MqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIC8qcmVzdWx0Ki8pCitI
UkVTVUxUIFdlYlNjcmlwdE9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChfSW5fIEJTVFIgbmFt
ZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJQU5UIGFyZ3NbXSwgaW50IGNBcmdz
LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTY3JpcHRPYmplY3Q6
OmV2YWx1YXRlV2ViU2NyaXB0KCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypzY3JpcHQqLywKLSAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIFdlYlNj
cmlwdE9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoX0luXyBCU1RSIC8qc2NyaXB0Ki8sIF9PdXRf
IFZBUklBTlQqIC8qcmVzdWx0Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTY3Jp
cHRPYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleSggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qbmFt
ZSovKQorSFJFU1VMVCBXZWJTY3JpcHRPYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJT
VFIgLypuYW1lKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTY3JpcHRPYmplY3Q6
OnN0cmluZ1JlcHJlc2VudGF0aW9uKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8q
c3RyaW5nUmVwcmVzZW50YXRpb24qLykKK0hSRVNVTFQgV2ViU2NyaXB0T2JqZWN0OjpzdHJpbmdS
ZXByZXNlbnRhdGlvbihfX2RlcmVmX29wdF9vdXQgQlNUUiogLypzdHJpbmdSZXByZXNlbnRhdGlv
biovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2NyaXB0T2JqZWN0Ojp3ZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgoIAotICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IC8qaW5kZXgqLywK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIC8qcmVzdWx0Ki8pCitIUkVTVUxUIFdl
YlNjcmlwdE9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIC8qaW5kZXgqLywg
X091dF8gVkFSSUFOVCogLypyZXN1bHQqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlNjcmlwdE9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGludCAvKmluZGV4Ki8sCi0gICAgLyogW2luXSAqLyBWQVJJQU5UIC8qdmFsKi8p
CitIUkVTVUxUIFdlYlNjcmlwdE9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2ln
bmVkIC8qaW5kZXgqLywgVkFSSUFOVCAvKnZhbCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViU2NyaXB0T2JqZWN0OjpzZXRFeGNlcHRpb24oIAotICAgIC8qIFtpbl0gKi8gQlNUUiAv
KmRlc2NyaXB0aW9uKi8pCitIUkVTVUxUIFdlYlNjcmlwdE9iamVjdDo6c2V0RXhjZXB0aW9uKF9J
bl8gQlNUUiAvKmRlc2NyaXB0aW9uKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdE9iamVjdC5o
CShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDQ0ICszNSwyMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V2ViU2NyaXB0T2JqZWN0KCk7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlp
ZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxl
YXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0
dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJTY3Jp
cHRPYmplY3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNl
cHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3Qg
VkFSSUFOVCBhcmdzWyAgXSwKLSAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJlbW92ZVdlYlNjcmlwdEtleSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50
YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
U2NyaXB0VmFsdWVBdEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5k
ZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVB
dEluZGV4KCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCi0gICAgICAg
IC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVz
Y3JpcHRpb24pOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4
Y2VwdGlvbihfSW5fIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhv
ZChfSW5fIEJTVFIgbmFtZSwgX19pbl9lY291bnRfb3B0KGNBcmdzKSBjb25zdCBWQVJJQU5UIGFy
Z3NbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIgc2NyaXB0
LCBfT3V0XyBWQVJJQU5UKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoX0luXyBCU1RSIG5hbWUpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbihfX2RlcmVmX29w
dF9vdXQgQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIF9P
dXRfIFZBUklBTlQqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVkFSSUFOVCB2YWwp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oX0lu
XyBCU1RSIGRlc2NyaXB0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQ7
CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CiAKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw4ICszOSw3IEBA
IHN0YXRpYyBXb3JsZE1hcCYgYWxsV29ybGRzKCkKIH0KIAogaW5saW5lIFdlYlNjcmlwdFdvcmxk
OjpXZWJTY3JpcHRXb3JsZChQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gd29ybGQpCi0gICAg
OiBtX3JlZkNvdW50KDApCi0gICAgLCBtX3dvcmxkKHdvcmxkKQorICAgIDogbV93b3JsZCh3b3Js
ZCkKIHsKICAgICBBU1NFUlRfQVJHKHdvcmxkLCBtX3dvcmxkKTsKIApAQCAtMTAwLDExICs5OSwx
MSBAQCBVTE9ORyBXZWJTY3JpcHRXb3JsZDo6UmVsZWFzZSgpCiAgICAgcmV0dXJuIG5ld1JlZkNv
dW50OwogfQogCi1IUkVTVUxUIFdlYlNjcmlwdFdvcmxkOjpRdWVyeUludGVyZmFjZShSRUZJSUQg
cmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViU2NyaXB0V29ybGQ6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQog
ewogICAgIGlmICghcHB2T2JqZWN0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpw
cHZPYmplY3QgPSAwOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogCiAgICAgaWYgKElzRXF1
YWxJSUQocmlpZCwgX191dWlkb2YoV2ViU2NyaXB0V29ybGQpKSkKICAgICAgICAgKnBwdk9iamVj
dCA9IHRoaXM7CkBAIC0xMTksNyArMTE4LDcgQEAgSFJFU1VMVCBXZWJTY3JpcHRXb3JsZDo6UXVl
cnlJbnRlcmZhY2UoUgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlNjcmlwdFdv
cmxkOjpzdGFuZGFyZFdvcmxkKElXZWJTY3JpcHRXb3JsZCoqIG91dFdvcmxkKQorSFJFU1VMVCBX
ZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRXb3JsZChfQ09NX091dHB0cl9vcHRfIElXZWJTY3JpcHRX
b3JsZCoqIG91dFdvcmxkKQogewogICAgIGlmICghb3V0V29ybGQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgJKHJldmlzaW9uIDE4
ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTUxLDEyICs1MSwxMiBAQCBwcml2YXRlOgogICAgIFdlYlNjcmlwdFdvcmxkKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkPik7CiAgICAgfldlYlNjcmlwdFdvcmxkKCk7CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVG
SUlELCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc3RhbmRhcmRXb3JsZChJV2ViU2NyaXB0V29ybGQqKik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlELCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHN0YW5kYXJkV29ybGQoX0NPTV9PdXRwdHJfb3B0XyBJV2ViU2NyaXB0V29ybGQqKik7
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcmlwdFdvcmxkRm9yR2xv
YmFsQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYsIElXZWJTY3JpcHRXb3JsZCoqKTsKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW5yZWdpc3RlcldvcmxkKCk7CiAKLSAg
ICBVTE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgUmVm
UHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUs
OCArNDUsNyBAQCBXZWJTZWN1cml0eU9yaWdpbiogV2ViU2VjdXJpdHlPcmlnaW46OmNyCiB9CiAK
IFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4pCi0gICAgOiBtX3JlZkNvdW50KDApCi0gICAgLCBtX3NlY3VyaXR5T3JpZ2lu
KHNlY3VyaXR5T3JpZ2luKQorICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iKTsKQEAgLTU5LDkgKzU4LDExIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2Vi
U2VjdXJpdHlPcmlnaW4oKQogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUhSRVNV
TFQgV2ViU2VjdXJpdHlPcmlnaW46OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiog
cHB2T2JqZWN0KQorSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6UXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBw
dk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQs
IElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViU2Vj
dXJpdHlPcmlnaW4yKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlE
X0lXZWJTZWN1cml0eU9yaWdpbikpCkBAIC05Myw3ICs5NCw3IEBAIFVMT05HIFdlYlNlY3VyaXR5
T3JpZ2luOjpSZWxlYXNlKCkKIAogLy8gSVdlYlNlY3VyaXR5T3JpZ2luIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNV
TFQgV2ViU2VjdXJpdHlPcmlnaW46OnByb3RvY29sKC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
cmVzdWx0KQorSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cHJvdG9jb2woX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTEwMyw3ICsxMDQsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpw
cm90b2NvbCgvKiBbCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAotSFJFU1VMVCBXZWJT
ZWN1cml0eU9yaWdpbjo6aG9zdCgvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK0hS
RVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46Omhvc3QoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3Vs
dCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTEx
Myw3ICsxMTQsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpob3N0KC8qIFtyZXR2CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAKLUhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnBv
cnQoLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQorSFJFU1VMVCBX
ZWJTZWN1cml0eU9yaWdpbjo6cG9ydChfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQogewog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTIzLDcgKzEy
NCw3IEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoLyogW3JldHYKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAgICAgCi1IUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZSgv
KiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KQorSFJFU1VMVCBX
ZWJTZWN1cml0eU9yaWdpbjo6dXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQp
CiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMzMs
NyArMTM0LDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6dXNhZ2UoLyogW3JldAogICAg
IHJldHVybiBTX09LOwogfQogICAgICAgICAKLUhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnF1
b3RhKC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCitIUkVT
VUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YShfT3V0XyB1bnNpZ25lZCBsb25nIGxvbmcqIHJl
c3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAg
LTE0Miw3ICsxNDMsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSgvKiBbcmV0
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAotSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdp
bjo6c2V0UXVvdGEoLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIAorSFJFU1VM
VCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSAK
IHsKICAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKG1fc2VjdXJpdHlP
cmlnaW4uZ2V0KCksIHF1b3RhKTsKIApAQCAtMTUxLDcgKzE1Miw3IEBAIEhSRVNVTFQgV2ViU2Vj
dXJpdHlPcmlnaW46OnNldFF1b3RhKC8qIFsKIAogLy8gSVdlYlNlY3VyaXR5T3JpZ2luMiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1IUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjppbml0V2l0aFVSTCgvKiBbaW5dICovIEJT
VFIgdXJsQnN0cikKK0hSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OmluaXRXaXRoVVJMKF9Jbl8g
QlNUUiB1cmxCc3RyKQogewogICAgIG1fc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmxCc3RyKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMTg4
NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNDEgKzQwLDI2IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdl
dCgpOyB9CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZSggCi0gICAgICAgIC8qIFtpbl0gKi8gUkVGSUlEIHJpaWQs
Ci0gICAgICAgIC8qIFtpaWRfaXNdW291dF0gKi8gdm9pZCoqIHBwdk9iamVjdCk7Ci0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwogICAgIHZpcnR1YWwgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7Ci0KICAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJTZWN1cml0eU9yaWdpbgotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcm90b2NvbCggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhvc3QoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCk7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwb3J0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBz
aG9ydCogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1
c2FnZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgbG9uZyBsb25nKiBy
ZXN1bHQpOwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cXVvdGEoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIGxvbmcgbG9uZyog
cmVzdWx0KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFF1b3RhKCAKLSAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcm90b2NvbChfX2RlcmVm
X29wdF9vdXQgQlNUUiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBo
b3N0KF9fZGVyZWZfb3B0X291dCBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHBvcnQoX091dF8gdW5zaWduZWQgc2hvcnQqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHF1b3RhKF9PdXRfIHVuc2lnbmVk
IGxvbmcgbG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRR
dW90YSh1bnNpZ25lZCBsb25nIGxvbmcpOwogCiAgICAgLy8gSVdlYlNlY3VyaXR5T3JpZ2luMgot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFVSTCgvKltpbl0q
LyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhV
UkwoX0luXyBCU1RSKTsKIAogcHJpdmF0ZToKICAgICBXZWJTZWN1cml0eU9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiopOwogICAgIH5XZWJTZWN1cml0eU9yaWdpbigpOwogCi0gICAgVUxP
TkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODYz
OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzAsNyArMzAsNiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYlNl
cmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCi0gICAgOiBtX3JlZkNvdW50
KDApCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlNlcmlhbGl6ZWRKU1ZhbHVlIik7CkBAIC02MCwxMSArNTksMTEgQEAgVUxPTkcgV2ViU2VyaWFs
aXplZEpTVmFsdWU6OlJlbGVhc2UoKQogICAgIHJldHVybiBuZXdSZWZDb3VudDsKIH0KIAotSFJF
U1VMVCBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZv
aWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsK
ICAgICBpZiAoIXBwdk9iamVjdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqcHB2
T2JqZWN0ID0gMDsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKIAogICAgIGlmIChJc0VxdWFs
SUlEKHJpaWQsIF9fdXVpZG9mKFdlYlNlcmlhbGl6ZWRKU1ZhbHVlKSkpCiAgICAgICAgICpwcHZP
YmplY3QgPSB0aGlzOwpAQCAtMTAwLDcgKzk5LDcgQEAgSFJFU1VMVCBXZWJTZXJpYWxpemVkSlNW
YWx1ZTo6ZGVzZXJpYWxpegogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFt
X3ZhbHVlKQotICAgICAgICAqb3V0VmFsdWUgPSAwOworICAgICAgICAqb3V0VmFsdWUgPSBudWxs
cHRyOwogICAgIGVsc2UKICAgICAgICAgKm91dFZhbHVlID0gbV92YWx1ZS0+ZGVzZXJpYWxpemUo
ZGVzdGluYXRpb25Db250ZXh0LCAwKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViU2Vy
aWFsaXplZEpTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZXJp
YWxpemVkSlNWYWx1ZS5oCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJTZXJpYWxpemVkSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw5ICs1Miw5IEBAIHBy
aXZhdGU6CiAgICAgV2ViU2VyaWFsaXplZEpTVmFsdWUoKTsKICAgICB+V2ViU2VyaWFsaXplZEpT
VmFsdWUoKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShSRUZJSUQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpOwogCi0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBt
X3JlZkNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fdmFsdWU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJUZXh0UmVuZGVy
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5j
cHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDYgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZQogfQogCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJl
cigpCi0gICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciIpOwpAQCAtNTAsOSArNDksOSBAQCBX
ZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIik7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShjb25zdCBJSUQgJnJpaWQsIHZvaWQq
KiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBw
dk9iamVjdCA9IDA7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJV2ViVGV4dFJlbmRlcmVyKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlp
ZCwgSUlEX0lXZWJUZXh0UmVuZGVyZXIpKQpAQCAtNjQsMTIgKzYzLDEyIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVGV4dFJlbmRlcmUKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVGV4dFJlbmRlcmVyOjpBZGRSZWYoKQorVUxPTkcgV2Vi
VGV4dFJlbmRlcmVyOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAK
LVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlRleHRSZW5kZXJlcjo6UmVsZWFzZSgpCitVTE9O
RyBXZWJUZXh0UmVuZGVyZXI6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9y
ZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTc4LDEwICs3Nyw5IEBAIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYlRleHRSZW5kZXJlcjoKICAgICByZXR1cm4gbmV3UmVmOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlRleHRSZW5kZXJlcjo6cmVnaXN0ZXJQcml2YXRl
Rm9udCgKLSAgICAvKiBbaW5dICovIExQQ09MRVNUUiBmb250RmlsZVBhdGgpCitIUkVTVUxUIFdl
YlRleHRSZW5kZXJlcjo6cmVnaXN0ZXJQcml2YXRlRm9udChfSW5fIExQQ09MRVNUUiBmb250Rmls
ZVBhdGgpCiB7Ci0gICAgaWYgKCFBZGRGb250UmVzb3VyY2VFeChmb250RmlsZVBhdGgsIEZSX1BS
SVZBVEUsIDApKQorICAgIGlmICghQWRkRm9udFJlc291cmNlRXgoZm9udEZpbGVQYXRoLCBGUl9Q
UklWQVRFLCBudWxscHRyKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVybiBT
X09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmgJKHJldmlzaW9uIDE4ODYz
OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNSwyMiArMzUsMTcgQEAgY2xhc3MgV2ViVGV4dFJlbmRlcmVyIDogcHVibGljIElXZWJUZXh0
UgogcHVibGljOgogICAgIHN0YXRpYyBXZWJUZXh0UmVuZGVyZXIqIGNyZWF0ZUluc3RhbmNlKCk7
CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2Uo
Ci0gICAgICAgIC8qIFtpbl0gKi8gUkVGSUlEIHJpaWQsCi0gICAgICAgIC8qIFtpaWRfaXNdW291
dF0gKi8gdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRy
XyB2b2lkKiogcHB2T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IEFkZFJlZigpOwotICAgIAogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVs
ZWFzZSgpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlZ2lzdGVy
UHJpdmF0ZUZvbnQoCi0gICAgICAgIC8qIFtpbl0gKi8gTFBDT0xFU1RSIGZvbnRGaWxlUGF0aCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlZ2lzdGVyUHJpdmF0ZUZv
bnQoX0luXyBMUENPTEVTVFIgZm9udEZpbGVQYXRoKTsKICAgICAKIHByaXZhdGU6CiAgICAgV2Vi
VGV4dFJlbmRlcmVyKCk7CiAgICAgfldlYlRleHRSZW5kZXJlcigpOwogCi0gICAgVUxPTkcgbV9y
ZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKIAogI2VuZGlmIC8vICFk
ZWZpbmVkKFdlYlRleHRSZW5kZXJlcl9oKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMTg4NjM4KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQxLDEwICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvLyBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBzZW5kZXIpCi0gICAgOiBtX3JlZkNv
dW50KDApCi0gICAgLCBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKQorV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSwgSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBzZW5kZXIp
CisgICAgOiBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQogICAgICwgbV9zZW5kZXIoc2VuZGVyKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC03NCw5
ICs3MiwxMSBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQq
KiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNF
cXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRp
Y19jYXN0PElVbmtub3duKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwg
X191dWlkb2YodGhpcykpKQpAQCAtOTAsMTIgKzkwLDEyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVVJMQXV0aGVudGkKICAgICByZXR1cm4gU19PSzsKIH0KIAotVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkFkZFJlZih2b2lkKQor
VUxPTkcgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkFkZFJlZigpCiB7CiAgICAgcmV0
dXJuICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVm
Q291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC0xMDYsMTMgKzEwNiw5IEBAIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2EKIAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aW5pdFdpdGhQcm90ZWN0aW9uU3BhY2UoCi0gICAgLyog
W2luXSAqLyBJV2ViVVJMUHJvdGVjdGlvblNwYWNlKiBzcGFjZSwgCi0gICAgLyogW2luXSAqLyBJ
V2ViVVJMQ3JlZGVudGlhbCogcHJvcG9zZWRDcmVkZW50aWFsLCAKLSAgICAvKiBbaW5dICovIGlu
dCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgCi0gICAgLyogW2luXSAqLyBJV2ViVVJMUmVzcG9uc2Uq
IGZhaWx1cmVSZXNwb25zZSwgCi0gICAgLyogW2luXSAqLyBJV2ViRXJyb3IqIGVycm9yLCAKLSAg
ICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogc2VuZGVy
KQorSFJFU1VMVCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aW5pdFdpdGhQcm90ZWN0
aW9uU3BhY2UoX0luX29wdF8gSVdlYlVSTFByb3RlY3Rpb25TcGFjZSogc3BhY2UsIAorICAgIF9J
bl9vcHRfIElXZWJVUkxDcmVkZW50aWFsKiBwcm9wb3NlZENyZWRlbnRpYWwsIGludCBwcmV2aW91
c0ZhaWx1cmVDb3VudCwgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNlKiBmYWlsdXJlUmVzcG9uc2Us
IAorICAgIF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogc2VuZGVyKQogewogICAgIExPR19FUlJPUigiQ2FsbGlu
ZyB0aGUgYWxhIGNhcnRlIGluaXQgZm9yIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0g
aXMgdGhpcyByZWFsbHkgd2hhdCB5b3Ugd2FudCB0byBkbz8iKTsKIApAQCAtMTUyLDkgKzE0OCw4
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGkKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKLSAgICAvKiBbaW5d
ICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlLCAKLSAgICAvKiBb
aW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogc2VuZGVyKQorSFJF
U1VMVCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxs
ZW5nZSwgCisgICAgX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
KiBzZW5kZXIpCiB7CiAgICAgaWYgKCFjaGFsbGVuZ2UgfHwgIXNlbmRlcikKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKQEAgLTE3Nyw0NCArMTcyLDUxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVVJMQXV0aGVudGkKICNlbmRpZgogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjplcnJvcigKLSAgICAvKiBbb3V0LCBy
ZXR2YWxdICovIElXZWJFcnJvcioqIHJlc3VsdCkKK0hSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6OmVycm9yKF9DT01fT3V0cHRyX29wdF8gSVdlYkVycm9yKiogcmVzdWx0KQog
eworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1
bHQgPSBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UobV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5l
cnJvcigpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6ZmFpbHVyZVJlc3BvbnNlKAotICAgIC8q
IFtvdXQsIHJldHZhbF0gKi8gSVdlYlVSTFJlc3BvbnNlKiogcmVzdWx0KQorSFJFU1VMVCBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6ZmFpbHVyZVJlc3BvbnNlKF9DT01fT3V0cHRyX29w
dF8gSVdlYlVSTFJlc3BvbnNlKiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSBXZWJVUkxSZXNwb25zZTo6Y3JlYXRl
SW5zdGFuY2UobV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnByZXZpb3VzRmFpbHVyZUNvdW50KAotICAgIC8qIFtvdXQs
IHJldHZhbF0gKi8gVUlOVCogcmVzdWx0KQorSFJFU1VMVCBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6cHJldmlvdXNGYWlsdXJlQ291bnQoX091dF8gVUlOVCogcmVzdWx0KQogeworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSBt
X2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OnByb3Bvc2VkQ3JlZGVudGlhbCgKLSAgICAvKiBbb3V0LCByZXR2YWxd
ICovIElXZWJVUkxDcmVkZW50aWFsKiogcmVzdWx0KQorSFJFU1VMVCBXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6cHJvcG9zZWRDcmVkZW50aWFsKF9DT01fT3V0cHRyX29wdF8gSVdlYlVS
TENyZWRlbnRpYWwqKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3Rh
bmNlKG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpOwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2UoCi0gICAgLyogW291dCwgcmV0dmFs
XSAqLyBJV2ViVVJMUHJvdGVjdGlvblNwYWNlKiogcmVzdWx0KQorSFJFU1VMVCBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlKF9DT01fT3V0cHRyX29wdF8gSVdl
YlVSTFByb3RlY3Rpb25TcGFjZSoqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gV2ViVVJMUHJvdGVjdGlvblNwYWNl
OjpjcmVhdGVJbnN0YW5jZShtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6c2VuZGVyKAotICAgIC8qIFtvdXQsIHJldHZh
bF0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiogc2VuZGVyKQorSFJF
U1VMVCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6c2VuZGVyKF9DT01fT3V0cHRyX29w
dF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiogc2VuZGVyKQogeworICAg
IGlmICghc2VuZGVyKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpzZW5kZXIgPSBu
dWxscHRyOwogICAgIGlmICghbV9zZW5kZXIpIHsKICAgICAgICAgQXV0aGVudGljYXRpb25DbGll
bnQqIGNsaWVudCA9IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGll
bnQoKTsKICAgICAgICAgbV9zZW5kZXIuYWRvcHRSZWYoV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI6OmNyZWF0ZUluc3RhbmNlKGNsaWVudCkpOwpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAx
ODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDQ2ICszOSwyNiBAQCBwcml2YXRlOgogICAgIH5XZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogcHVibGljOgogICAgIC8vIElVbmtub3duCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJ
RCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8gSVdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGluaXRXaXRoUHJvdGVjdGlvblNwYWNlKAotICAgICAgICAvKiBbaW5dICovIElX
ZWJVUkxQcm90ZWN0aW9uU3BhY2UqIHNwYWNlLCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
Q3JlZGVudGlhbCogcHJvcG9zZWRDcmVkZW50aWFsLCAKLSAgICAgICAgLyogW2luXSAqLyBpbnQg
cHJldmlvdXNGYWlsdXJlQ291bnQsIAotICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXNwb25z
ZSogZmFpbHVyZVJlc3BvbnNlLCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRXJyb3IqIGVycm9y
LCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIqIHNlbmRlcik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5p
dFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSwgCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBzZW5kZXIpOwotCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVycm9yKAotICAgICAgICAvKiBbb3V0LCBy
ZXR2YWxdICovIElXZWJFcnJvcioqIHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZmFpbHVyZVJlc3BvbnNlKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxd
ICovIElXZWJVUkxSZXNwb25zZSoqIHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNGYWlsdXJlQ291bnQoCi0gICAgICAgIC8qIFtvdXQsIHJl
dHZhbF0gKi8gVUlOVCogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwcm9wb3NlZENyZWRlbnRpYWwoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8g
SVdlYlVSTENyZWRlbnRpYWwqKiByZXN1bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHByb3RlY3Rpb25TcGFjZSgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAq
LyBJV2ViVVJMUHJvdGVjdGlvblNwYWNlKiogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZW5kZXIoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8g
SVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiogc2VuZGVyKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhQcm90ZWN0aW9uU3BhY2UoX0lu
X29wdF8gSVdlYlVSTFByb3RlY3Rpb25TcGFjZSosIF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50aWFs
KiwgCisgICAgICAgIGludCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgX0luX29wdF8gSVdlYlVSTFJl
c3BvbnNlKiBmYWlsdXJlUmVzcG9uc2UsIF9Jbl9vcHRfIElXZWJFcnJvciosIF9Jbl9vcHRfIElX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9v
cHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSosIF9Jbl9vcHRfIElXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBlcnJvcihfQ09NX091dHB0cl9vcHRfIElXZWJFcnJvcioqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmFpbHVyZVJlc3BvbnNlKF9DT01fT3V0cHRy
X29wdF8gSVdlYlVSTFJlc3BvbnNlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwcmV2aW91c0ZhaWx1cmVDb3VudChfT3V0XyBVSU5UKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByb3Bvc2VkQ3JlZGVudGlhbChfQ09NX091dHB0cl9v
cHRfIElXZWJVUkxDcmVkZW50aWFsKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwcm90ZWN0aW9uU3BhY2UoX0NPTV9PdXRwdHJfb3B0XyBJV2ViVVJMUHJvdGVjdGlv
blNwYWNlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZW5kZXIo
X0NPTV9PdXRwdHJfb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqKik7
CiAKICAgICAvLyBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQogICAgIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3Jl
ZkNvdW50IHsgMCB9OwogCiAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgbV9h
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKICAgICBDT01QdHI8SVdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyPiBtX3NlbmRlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAJKHJldmlz
aW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw4ICszOCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogLy8gV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNsaWVu
dD4gY2xpZW50KQotICAgIDogbV9yZWZDb3VudCgwKQotICAgICwgbV9jbGllbnQoY2xpZW50KQor
ICAgIDogbV9jbGllbnQoY2xpZW50KQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKQEAgLTYxLDkgKzYwLDExIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyKiBXZWIKIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAw
OworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpw
cHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25v
d24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVVua25vd24qPih0aGlzKTsK
ICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBfX3V1aWRvZih0aGlzKSkpCkBAIC03Nywx
MiArNzgsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aQogICAg
IHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6QWRkUmVmKHZvaWQpCitVTE9ORyBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNv
dW50OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6UmVsZWFzZSh2b2lkKQorVUxPTkcgV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXI6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZD
b3VudDsKICAgICBpZiAoIW5ld1JlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuaAkocmV2aXNpb24gMTg4
NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VT
ZW5kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSwyNiArNDUsMTkgQEAgcHJpdmF0ZToKICAgICB+
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKTsKIHB1YmxpYzoKICAgICAvLyBJ
VW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRS
ZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAog
ICAgIC8vIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcgotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgK
LSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxs
ZW5nZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAotICAgICAgICAvKiBb
aW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1c2VDcmVkZW50aWFsKAotICAgICAg
ICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFs
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVzZUNy
ZWRlbnRpYWwoX0luX29wdF8gSVdlYlVSTENyZWRlbnRpYWwqLCBfSW5fb3B0XyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKIAogICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFVMT05H
IG1fcmVmQ291bnQ7Ci0KKyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9jbGllbnQ7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlckNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlckNGTmV0LmNwcAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXJDRk5ldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTUg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzcsOCArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8g
SVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6
Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCitIUkVTVUxUIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShf
SW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKICAg
ICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVy
eSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKQEAgLTQ4LDggKzQ3LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aQogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKiBjaGFsbGVuZ2UpCitIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
X0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CiAg
ICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVl
cnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCkBAIC01OSw5ICs1Nyw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGkKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6dXNlQ3JlZGVudGlhbCgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
Q3JlZGVudGlhbCogY3JlZGVudGlhbCwgCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCitIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyOjp1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50
aWFsKiBjcmVkZW50aWFsLCBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uq
IGNoYWxsZW5nZSkKIHsKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+
IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiAxODg2
MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNCw4ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLy8gV2ViVVJM
Q3JlZGVudGlhbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwo
Y29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLSAgICA6IG1fcmVmQ291bnQoMCkKLSAgICAs
IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQorICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TENyZWRlbnRpYWwiKTsKQEAgLTYzLDkgKzYyLDExIEBAIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVS
TENyZWRlbnRpYWw6OmNyZWEKIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlVSTENyZWRlbnRpYWw6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJVUkxDcmVkZW50aWFsOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
IHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVh
bEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19j
YXN0PElVbmtub3duKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgX191
dWlkb2YoV2ViVVJMQ3JlZGVudGlhbCkpKQpAQCAtNzksNyArODAsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlVSTENyZWRlbnRpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05H
IFNURE1FVEhPRENBTExUWVBFIFdlYlVSTENyZWRlbnRpYWw6OkFkZFJlZih2b2lkKQorVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQ3JlZGVudGlhbDo6QWRkUmVmKCkKIHsKICAgICByZXR1
cm4gKyttX3JlZkNvdW50OwogfQpAQCAtOTQsMTcgKzk1LDE1IEBAIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIFdlYlVSTENyZWRlbnRpYWwKIH0KIAogLy8gSVdlYlVSTENyZWRlbnRpYWwgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxDcmVkZW50aWFsOjpoYXNQYXNz
d29yZCgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxU
IFdlYlVSTENyZWRlbnRpYWw6Omhhc1Bhc3N3b3JkKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0g
bV9jcmVkZW50aWFsLmhhc1Bhc3N3b3JkKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQ3JlZGVudGlhbDo6aW5pdFdpdGhVc2VyKAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgdXNlciwgCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwYXNz
d29yZCwgCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBl
cnNpc3RlbmNlKQorSFJFU1VMVCBXZWJVUkxDcmVkZW50aWFsOjppbml0V2l0aFVzZXIoX0luXyBC
U1RSIHVzZXIsIF9Jbl8gQlNUUiBwYXNzd29yZCwgV2ViVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlKQogewogICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBjb3JlUGVyc2lzdGVu
Y2UgPSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwogICAgIHN3aXRjaCAocGVyc2lzdGVuY2Up
IHsKQEAgLTEyNSwxNyArMTI0LDIwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJM
Q3JlZGVudGkKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJVUkxDcmVkZW50aWFsOjpwYXNzd29yZCgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAq
LyBCU1RSKiBwYXNzd29yZCkKK0hSRVNVTFQgV2ViVVJMQ3JlZGVudGlhbDo6cGFzc3dvcmQoX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIHBhc3N3b3JkKQogeworICAgIGlmICghcGFzc3dvcmQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgQlN0cmluZyBzdHIgPSBtX2NyZWRlbnRpYWwucGFz
c3dvcmQoKTsKICAgICAqcGFzc3dvcmQgPSBzdHIucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTENyZWRlbnRpYWw6OnBlcnNp
c3RlbmNlKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIFdlYlVSTENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSogcmVzdWx0KQorSFJFU1VMVCBXZWJVUkxDcmVkZW50aWFsOjpwZXJzaXN0ZW5jZShf
T3V0XyBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIHN3aXRjaCAobV9jcmVkZW50
aWFsLnBlcnNpc3RlbmNlKCkpIHsKICAgICBjYXNlIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU6
CiAgICAgICAgICpyZXN1bHQgPSBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwpAQCAt
MTUzLDkgKzE1NSwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTENyZWRlbnRp
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJM
Q3JlZGVudGlhbDo6dXNlcigKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCU1RSKiByZXN1
bHQpCitIUkVTVUxUIFdlYlVSTENyZWRlbnRpYWw6OnVzZXIoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KwogICAgIEJTdHJpbmcgc3RyID0gbV9jcmVkZW50aWFsLnVzZXIoKTsKICAgICAqcmVzdWx0ID0g
c3RyLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTE2NSw0ICsxNjksMyBAQCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJiBXZWJVUkxDcmVkZW50CiB7CiAgICAgcmV0dXJuIG1fY3Jl
ZGVudGlhbDsKIH0KLQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVVJMQ3JlZGVudGlhbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTENyZWRlbnRpYWwuaAkocmV2
aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQ3JlZGVudGlhbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5LDM0ICszOSwyMiBAQCBwcml2YXRlOgogICAgIH5XZWJVUkxDcmVk
ZW50aWFsKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZP
YmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQp
OwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBS
RUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwg
VUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViVVJMQ3JlZGVudGlhbAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNQYXNzd29yZCgKLSAgICAgICAg
LyogW291dCwgcmV0dmFsXSAqLyBCT09MKiByZXN1bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVXNlcigKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IHVzZXIsIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcGFzc3dvcmQsIAotICAgICAgICAvKiBb
aW5dICovIFdlYlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSk7Ci0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFzc3dvcmQoCi0gICAgICAgIC8qIFtv
dXQsIHJldHZhbF0gKi8gQlNUUiogcGFzc3dvcmQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBlcnNpc3RlbmNlKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICov
IFdlYlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1c2VyKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICov
IEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhh
c1Bhc3N3b3JkKF9PdXRfIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGluaXRXaXRoVXNlcihfSW5fIEJTVFIgdXNlciwgX0luXyBCU1RSIHBhc3N3
b3JkLCBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBwYXNzd29yZChfX2RlcmVmX29wdF9vdXQgQlNUUiogcGFzc3dvcmQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwZXJzaXN0ZW5jZShfT3V0
XyBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHVzZXIoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCk7
CiAKICAgICAvLyBXZWJVUkxDcmVkZW50aWFsCiAgICAgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYgY3JlZGVudGlhbCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3Vu
dDsKLQorICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6Q3JlZGVudGlh
bCBtX2NyZWRlbnRpYWw7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxQcm90
ZWN0aW9uU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFBy
b3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsOCArMzQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC8vIFdlYlVSTFByb3RlY3Rpb25TcGFjZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQotICAgIDogbV9yZWZDb3VudCgwKQot
ICAgICwgbV9wcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKQorICAgIDogbV9wcm90ZWN0
aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKQEAgLTYzLDkgKzYy
LDExIEBAIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblMKIAogLy8gSVVu
a25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFByb3Rl
Y3Rpb25TcGFjZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3Qp
CitIUkVTVUxUIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVj
dCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7Cisg
ICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9J
VW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJVW5rbm93bio+KHRo
aXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIENMU0lEX1dlYlVSTFByb3RlY3Rp
b25TcGFjZSkpCkBAIC03OSwxMiArODAsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJVUkxQcm90ZWN0aQogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OkFkZFJlZih2b2lkKQorVUxPTkcgV2ViVVJMUHJv
dGVjdGlvblNwYWNlOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAK
LVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6UmVsZWFzZSh2
b2lkKQorVUxPTkcgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpSZWxlYXNlKHZvaWQpCiB7CiAgICAg
VUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKQpAQCAtOTUsOSAr
OTYsMTEgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMUHJvdGVjdGlvbgogCiAvLyBJ
V2ViVVJMUHJvdGVjdGlvblNwYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmF1dGhlbnRpY2F0aW9uTWV0aG9kKAotICAgIC8q
IFtvdXQsIHJldHZhbF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJVUkxQcm90ZWN0aW9u
U3BhY2U6OmF1dGhlbnRpY2F0aW9uTWV0aG9kKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQp
CiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICBz
d2l0Y2ggKG1fcHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpIHsKICAgICBj
YXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVsdDoKICAgICAgICAg
KnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nKFdlYlVSTEF1dGhlbnRpY2F0aW9uTWV0aG9kRGVmYXVs
dCk7CkBAIC0xMTgsOSArMTIxLDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJM
UHJvdGVjdGkKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6Omhvc3QoCi0gICAgLyogW291dCwgcmV0dmFsXSAqLyBC
U1RSKiByZXN1bHQpCitIUkVTVUxUIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6aG9zdChfX2RlcmVm
X29wdF9vdXQgQlNUUiogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworCiAgICAgQlN0cmluZyBzdHIgPSBtX3Byb3RlY3Rpb25TcGFjZS5ob3N0
KCk7CiAgICAgKnJlc3VsdCA9IHN0ci5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0x
NDIsMTIgKzE0Nyw3IEBAIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGUK
ICAgICByZXR1cm4gc2NoZW1lOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVS
TFByb3RlY3Rpb25TcGFjZTo6aW5pdFdpdGhIb3N0KAotICAgIC8qIFtpbl0gKi8gQlNUUiBob3N0
LCAKLSAgICAvKiBbaW5dICovIGludCBwb3J0LCAKLSAgICAvKiBbaW5dICovIEJTVFIgcHJvdG9j
b2wsIAotICAgIC8qIFtpbl0gKi8gQlNUUiByZWFsbSwgCi0gICAgLyogW2luXSAqLyBCU1RSIGF1
dGhlbnRpY2F0aW9uTWV0aG9kKQorSFJFU1VMVCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmluaXRX
aXRoSG9zdChfSW5fIEJTVFIgaG9zdCwgaW50IHBvcnQsIF9Jbl8gQlNUUiBwcm90b2NvbCwgX0lu
XyBCU1RSIHJlYWxtLCBfSW5fIEJTVFIgYXV0aGVudGljYXRpb25NZXRob2QpCiB7CiAgICAgc3Rh
dGljIEJTdHJpbmcmIHdlYlVSTFByb3RlY3Rpb25TcGFjZUhUVFBCU3RyaW5nID0gKm5ldyBCU3Ry
aW5nKFdlYlVSTFByb3RlY3Rpb25TcGFjZUhUVFApOwogICAgIHN0YXRpYyBCU3RyaW5nJiB3ZWJV
UkxQcm90ZWN0aW9uU3BhY2VIVFRQU0JTdHJpbmcgPSAqbmV3IEJTdHJpbmcoV2ViVVJMUHJvdGVj
dGlvblNwYWNlSFRUUFMpOwpAQCAtMTcwLDEyICsxNzAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlVSTFByb3RlY3RpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjppbml0V2l0aFByb3h5SG9zdCgK
LSAgICAvKiBbaW5dICovIEJTVFIgaG9zdCwgCi0gICAgLyogW2luXSAqLyBpbnQgcG9ydCwgCi0g
ICAgLyogW2luXSAqLyBCU1RSIHByb3h5VHlwZSwgCi0gICAgLyogW2luXSAqLyBCU1RSIHJlYWxt
LCAKLSAgICAvKiBbaW5dICovIEJTVFIgYXV0aGVudGljYXRpb25NZXRob2QpCitIUkVTVUxUIFdl
YlVSTFByb3RlY3Rpb25TcGFjZTo6aW5pdFdpdGhQcm94eUhvc3QoX0luXyBCU1RSIGhvc3QsIGlu
dCBwb3J0LCBfSW5fIEJTVFIgcHJveHlUeXBlLCBfSW5fIEJTVFIgcmVhbG0sIF9Jbl8gQlNUUiBh
dXRoZW50aWNhdGlvbk1ldGhvZCkKIHsKICAgICBzdGF0aWMgQlN0cmluZyYgd2ViVVJMUHJvdGVj
dGlvblNwYWNlSFRUUFByb3h5QlN0cmluZyA9ICpuZXcgQlN0cmluZyhXZWJVUkxQcm90ZWN0aW9u
U3BhY2VIVFRQUHJveHkpOwogICAgIHN0YXRpYyBCU3RyaW5nJiB3ZWJVUkxQcm90ZWN0aW9uU3Bh
Y2VIVFRQU1Byb3h5QlN0cmluZyA9ICpuZXcgQlN0cmluZyhXZWJVUkxQcm90ZWN0aW9uU3BhY2VI
VFRQU1Byb3h5KTsKQEAgLTIwMCwyMyArMTk1LDI3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVVJMUHJvdGVjdGkKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmlzUHJveHkoCi0gICAgLyogW291dCwg
cmV0dmFsXSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6
aXNQcm94eShfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IG1fcHJvdGVjdGlvblNwYWNlLmlzUHJv
eHkoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJVUkxQcm90ZWN0aW9uU3BhY2U6OnBvcnQoCi0gICAgLyogW291dCwgcmV0dmFsXSAqLyBpbnQq
IHJlc3VsdCkKK0hSRVNVTFQgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpwb3J0KF9PdXRfIGludCog
cmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
ICAgICpyZXN1bHQgPSBtX3Byb3RlY3Rpb25TcGFjZS5wb3J0KCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpw
cm90b2NvbCgKLSAgICAvKiBbb3V0LCByZXR2YWxdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQg
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpwcm90b2NvbChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVz
dWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAg
ICAgc3dpdGNoIChtX3Byb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpIHsKICAgICBjYXNlIFBy
b3RlY3Rpb25TcGFjZVNlcnZlckhUVFA6CiAgICAgICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmlu
ZyhXZWJVUkxQcm90ZWN0aW9uU3BhY2VIVFRQKTsKQEAgLTIzNyw5ICsyMzYsMTEgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxQcm90ZWN0aQogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6cHJveHlU
eXBlKAotICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJV
UkxQcm90ZWN0aW9uU3BhY2U6OnByb3h5VHlwZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0
KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAg
c3dpdGNoIChtX3Byb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpIHsKICAgICBjYXNlIFByb3Rl
Y3Rpb25TcGFjZVByb3h5SFRUUDoKICAgICAgICAgKnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nKFdl
YlVSTFByb3RlY3Rpb25TcGFjZUhUVFBQcm94eSk7CkBAIC0yNjAsMTcgKzI2MSwxOSBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFByb3RlY3RpCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpyZWFs
bSgKLSAgICAvKiBbb3V0LCByZXR2YWxdICovIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViVVJM
UHJvdGVjdGlvblNwYWNlOjpyZWFsbShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIEJTdHJpbmcg
YnN0cmluZyA9IG1fcHJvdGVjdGlvblNwYWNlLnJlYWxtKCk7CiAgICAgKnJlc3VsdCA9IGJzdHJp
bmcucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHko
Ci0gICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYlVSTFBy
b3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoX091dF8gQk9PTCogcmVz
dWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAg
ICpyZXN1bHQgPSBtX3Byb3RlY3Rpb25TcGFjZS5yZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgp
OwogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVVJMUHJv
dGVjdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMUHJv
dGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlVSTFByb3RlY3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDU1ICszOSwyNyBAQCBw
cml2YXRlOgogICAgIH5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKTsKIHB1YmxpYzoKICAgICAvLyBJ
VW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRS
ZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAog
ICAgIC8vIElXZWJVUkxQcm90ZWN0aW9uU3BhY2UKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYXV0aGVudGljYXRpb25NZXRob2QoCi0gICAgICAgIC8qIFtvdXQsIHJldHZh
bF0gKi8gQlNUUiogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBob3N0KAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIEJTVFIqIHJlc3VsdCk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhIb3N0KAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgaG9zdCwgCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IHBvcnQs
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJvdG9jb2wsIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgcmVhbG0sIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgYXV0aGVudGljYXRpb25NZXRo
b2QpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoUHJv
eHlIb3N0KAotICAgICAgICAvKiBbaW5dICovIEJTVFIgaG9zdCwgCi0gICAgICAgIC8qIFtpbl0g
Ki8gaW50IHBvcnQsIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJveHlUeXBlLCAKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHJlYWxtLCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGF1dGhl
bnRpY2F0aW9uTWV0aG9kKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpc1Byb3h5KAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIEJPT0wqIHJlc3VsdCk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9ydCgKLSAgICAgICAgLyog
W291dCwgcmV0dmFsXSAqLyBpbnQqIHJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcHJvdG9jb2woCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNU
UiogcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcm94
eVR5cGUoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiogcmVzdWx0KTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWFsbSgKLSAgICAgICAgLyogW291
dCwgcmV0dmFsXSAqLyBCU1RSKiByZXN1bHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KAotICAgICAgICAvKiBbb3V0
LCByZXR2YWxdICovIEJPT0wqIHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGF1dGhlbnRpY2F0aW9uTWV0aG9kKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1
bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBob3N0KF9fZGVyZWZf
b3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBpbml0V2l0aEhvc3QoX0luXyBCU1RSIGhvc3QsIGludCBwb3J0LCBfSW5fIEJTVFIgcHJv
dG9jb2wsIF9Jbl8gQlNUUiByZWFsbSwgX0luXyBCU1RSIGF1dGhlbnRpY2F0aW9uTWV0aG9kKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhQcm94eUhvc3Qo
X0luXyBCU1RSIGhvc3QsIGludCBwb3J0LCBfSW5fIEJTVFIgcHJveHlUeXBlLCBfSW5fIEJTVFIg
cmVhbG0sIF9Jbl8gQlNUUiBhdXRoZW50aWNhdGlvbk1ldGhvZCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlzUHJveHkoX091dF8gQk9PTCogcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9ydChfT3V0XyBpbnQqIHJlc3VsdCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByb3RvY29sKF9fZGVyZWZf
b3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBwcm94eVR5cGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlYWxtKF9fZGVyZWZfb3B0X291dCBCU1RSKiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWNlaXZlc0Ny
ZWRlbnRpYWxTZWN1cmVseShfT3V0XyBCT09MKiByZXN1bHQpOwogCiAgICAgLy8gV2ViVVJMUHJv
dGVjdGlvblNwYWNlCiAgICAgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3BhY2UoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQ7Ci0K
KyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSBtX3Byb3RlY3Rpb25TcGFjZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVS
TFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJl
c3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw2IEBAIHN0YXRpYyBTdHJp
bmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkYKIC8vIElXZWJVUkxSZXNwb25zZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCi0gICAgOm1fcmVmQ291bnQoMCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
UmVzcG9uc2UiKTsKQEAgLTI0Nyw5ICsyNDYsMTEgQEAgV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJl
c3BvbnNlOjpjcmVhdGVJbgogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVVJMUmVzcG9uc2U6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlk
LCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0g
ICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlE
KHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJ
V2ViVVJMUmVzcG9uc2UqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBf
X3V1aWRvZih0aGlzKSkpCkBAIC0yNjcsMTIgKzI2OCwxMiBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlVSTFJlc3BvbnNlCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjpBZGRSZWYodm9pZCkKK1VMT05HIFdlYlVSTFJl
c3BvbnNlOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05H
IFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjpSZWxlYXNlKHZvaWQpCitVTE9ORyBX
ZWJVUkxSZXNwb25zZTo6UmVsZWFzZSh2b2lkKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9y
ZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTI4MywyNiArMjg0LDI1IEBAIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjoKIAogLy8gSVdlYlVSTFJlc3BvbnNlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMUmVzcG9uc2U6OmV4
cGVjdGVkQ29udGVudExlbmd0aCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nIGxvbmcq
IHJlc3VsdCkKK0hSRVNVTFQgV2ViVVJMUmVzcG9uc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aChf
T3V0XyBsb25nIGxvbmcqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJVUkxSZXNwb25zZTo6aW5pdFdpdGhVUkwoIAotICAgIC8qIFtpbl0gKi8gQlNUUiB1cmws
Ci0gICAgLyogW2luXSAqLyBCU1RSIG1pbWVUeXBlLAotICAgIC8qIFtpbl0gKi8gaW50IGV4cGVj
dGVkQ29udGVudExlbmd0aCwKLSAgICAvKiBbaW5dICovIEJTVFIgdGV4dEVuY29kaW5nTmFtZSkK
K0hSRVNVTFQgV2ViVVJMUmVzcG9uc2U6OmluaXRXaXRoVVJMKF9Jbl8gQlNUUiB1cmwsIF9Jbl8g
QlNUUiBtaW1lVHlwZSwgaW50IGV4cGVjdGVkQ29udGVudExlbmd0aCwgX0luXyBCU1RSIHRleHRF
bmNvZGluZ05hbWUpCiB7CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoTWFyc2hh
bGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIFN0cmluZyhtaW1lVHlwZSksIGV4cGVjdGVk
Q29udGVudExlbmd0aCwgU3RyaW5nKHRleHRFbmNvZGluZ05hbWUpKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxSZXNwb25zZTo6TUlNRVR5
cGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJV
UkxSZXNwb25zZTo6TUlNRVR5cGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIEJTdHJpbmcg
bWltZVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICAqcmVzdWx0ID0gbWltZVR5cGUu
cmVsZWFzZSgpOwogICAgIGlmICghbV9yZXNwb25zZS5taW1lVHlwZSgpLmlzTnVsbCgpICYmICEq
cmVzdWx0KQpAQCAtMzExLDE1ICszMTEsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJVUkxSZXNwb25zZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlVSTFJlc3BvbnNlOjpzdWdnZXN0ZWRGaWxlbmFtZSggCi0gICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpzdWdnZXN0
ZWRGaWxlbmFtZShfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogewogICAgIGlmICghcmVz
dWx0KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogICAgIH0KIAotICAgICpyZXN1bHQgPSAwOworICAgICpyZXN1bHQgPSBudWxscHRy
OwogCiAgICAgaWYgKG1fcmVzcG9uc2UudXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwpAQCAtMzI4LDggKzMyNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
VVJMUmVzcG9uc2UKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJVUkxSZXNwb25zZTo6dGV4dEVuY29kaW5nTmFtZSggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjp0ZXh0RW5jb2Rp
bmdOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgIHJldHVybiBFX0lOVkFMSURBUkc7CkBAIC0zNDIsOCArMzQwLDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxSZXNwb25zZQogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjpVUkwoIAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6
VVJMKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFX0lOVkFMSURBUkc7CkBAIC0zNTgsMTEgKzM1NSwxMyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlVSTFJlc3BvbnNlCiAKIC8vIElXZWJIVFRQVVJMUmVzcG9u
c2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxSZXNwb25zZTo6YWxsSGVhZGVy
RmllbGRzKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElQcm9wZXJ0eUJhZyoqIGhlYWRlckZp
ZWxkcykKK0hSRVNVTFQgV2ViVVJMUmVzcG9uc2U6OmFsbEhlYWRlckZpZWxkcyhfQ09NX091dHB0
cl9vcHRfIElQcm9wZXJ0eUJhZyoqIGhlYWRlckZpZWxkcykKIHsKICAgICBBU1NFUlQobV9yZXNw
b25zZS5pc0hUVFAoKSk7CiAKKyAgICBpZiAoIWhlYWRlckZpZWxkcykKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFz
aD4gZmllbGRzOwogICAgIGZvciAoY29uc3QgYXV0byYga2V5VmFsdWVQYWlyIDogbV9yZXNwb25z
ZS5odHRwSGVhZGVyRmllbGRzKCkpCiAgICAgICAgIGZpZWxkcy5hZGQoa2V5VmFsdWVQYWlyLmtl
eSwga2V5VmFsdWVQYWlyLnZhbHVlKTsKQEAgLTM3MSwyMyArMzcwLDIxIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVVJMUmVzcG9uc2UKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxSZXNwb25zZTo6bG9jYWxpemVkU3RyaW5nRm9y
U3RhdHVzQ29kZSggCi0gICAgLyogW2luXSAqLyBpbnQgc3RhdHVzQ29kZSwKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIHN0YXR1c1N0cmluZykKK0hSRVNVTFQgV2ViVVJMUmVzcG9uc2U6
OmxvY2FsaXplZFN0cmluZ0ZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUsIF9fZGVyZWZfb3B0
X291dCBCU1RSKiBzdGF0dXNTdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UuaXNIVFRQ
KCkpOwotICAgIGlmIChzdGF0dXNTdHJpbmcpCi0gICAgICAgICpzdGF0dXNTdHJpbmcgPSAwOwor
ICAgIGlmICghc3RhdHVzU3RyaW5nKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAg
KnN0YXR1c1N0cmluZyA9IG51bGxwdHI7CiAgICAgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0ID0g
bG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7CiAgICAg
aWYgKCFzdGF0dXNUZXh0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIGlmIChzdGF0dXNT
dHJpbmcpCi0gICAgICAgICpzdGF0dXNTdHJpbmcgPSBCU3RyaW5nKHN0YXR1c1RleHQpLnJlbGVh
c2UoKTsKKyAgICAqc3RhdHVzU3RyaW5nID0gQlN0cmluZyhzdGF0dXNUZXh0KS5yZWxlYXNlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJM
UmVzcG9uc2U6OnN0YXR1c0NvZGUoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBzdGF0
dXNDb2RlKQorSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3RhdHVzQ29kZShfT3V0XyBpbnQqIHN0
YXR1c0NvZGUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UuaXNIVFRQKCkpOwogICAgIGlmIChz
dGF0dXNDb2RlKQpAQCAtMzk1LDE1ICszOTIsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJVUkxSZXNwb25zZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlVSTFJlc3BvbnNlOjppc0F0dGFjaG1lbnQoIAotICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCAqYXR0YWNobWVudCkKK0hSRVNVTFQgV2ViVVJMUmVzcG9uc2U6OmlzQXR0
YWNobWVudChfT3V0XyBCT09MKiBhdHRhY2htZW50KQogeworICAgIGlmICghYXR0YWNobWVudCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqYXR0YWNobWVudCA9IG1fcmVzcG9uc2Uu
aXNBdHRhY2htZW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLQotSFJFU1VMVCBXZWJVUkxS
ZXNwb25zZTo6c3NsUGVlckNlcnRpZmljYXRlKC8qIFtyZXR2YWxdW291dF0gKi8gVUxPTkdfUFRS
KiByZXN1bHQpCitIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpzc2xQZWVyQ2VydGlmaWNhdGUoX091
dF8gVUxPTkdfUFRSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CkBAIC00MjQsMTIgKzQyMSwxMiBAQCBIUkVTVUxUIFdlYlVSTFJlc3BvbnNl
Ojpzc2xQZWVyQ2VydGlmaWNhCiAKIC8vIFdlYlVSTFJlc3BvbnNlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBX
ZWJVUkxSZXNwb25zZTo6c3VnZ2VzdGVkRmlsZUV4dGVuc2lvbihCU1RSICpyZXN1bHQpCitIUkVT
VUxUIFdlYlVSTFJlc3BvbnNlOjpzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIqIHJlc3VsdCkK
IHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpy
ZXN1bHQgPSAwOworICAgICpyZXN1bHQgPSBudWxscHRyOwogCiAgICAgaWYgKG1fcmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC00ODYsNyAr
NDgzLDcgQEAgQ0ZEaWN0aW9uYXJ5UmVmIFdlYlVSTFJlc3BvbnNlOjpjZXJ0aWZpYwogCiAgICAg
Q0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gbV9yZXNwb25zZS5jZlVSTFJlc3BvbnNlKCk7
CiAgICAgaWYgKCFjZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgbV9TU0xDZXJ0aWZpY2F0ZUluZm8gPSB3a0dldFNTTENlcnRpZmljYXRl
SW5mbyhjZlJlc3BvbnNlKTsKICAgICByZXR1cm4gbV9TU0xDZXJ0aWZpY2F0ZUluZm8uZ2V0KCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDE4ODYzOCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MCw0OCArNDAsMjYgQEAgcHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgLy8g
SVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRk
UmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAK
ICAgICAvLyBJV2ViVVJMUmVzcG9uc2UKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBsb25nIGxvbmcgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGluaXRXaXRoVVJMKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCwKLSAg
ICAgICAgLyogW2luXSAqLyBCU1RSIG1pbWVUeXBlLAotICAgICAgICAvKiBbaW5dICovIGludCBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTUlN
RVR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1Z2dlc3RlZEZpbGVuYW1l
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0RW5jb2RpbmdOYW1lKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVUkwoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGV4cGVjdGVkQ29udGVudExlbmd0aChfT3V0XyBsb25nIGxvbmcqKTsgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVVJMKF9Jbl8gQlNUUiB1cmws
IF9Jbl8gQlNUUiBtaW1lVHlwZSwgaW50IGV4cGVjdGVkQ29udGVudExlbmd0aCwgX0luXyBCU1RS
IHRleHRFbmNvZGluZ05hbWUpOyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgTUlNRVR5cGUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1Z2dlc3RlZEZpbGVuYW1lKF9fZGVyZWZfb3B0
X291dCBCU1RSKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0ZXh0RW5jb2RpbmdOYW1lKF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVUkwoX19kZXJlZl9vcHRfb3V0IEJTVFIq
IHJlc3VsdCk7CiAKICAgICAvLyBJV2ViSFRUUFVSTFJlc3BvbnNlCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGFsbEhlYWRlckZpZWxkcyggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSVByb3BlcnR5QmFnICoqaGVhZGVyRmllbGRzKTsKLSAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxpemVkU3RyaW5nRm9yU3RhdHVzQ29k
ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IHN0YXR1c0NvZGUsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqc3RhdHVzU3RyaW5nKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RhdHVzQ29kZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gaW50ICpzdGF0dXNDb2RlKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpc0F0dGFjaG1lbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KmF0dGFjaG1lbnQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxI
ZWFkZXJGaWVsZHMoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHlCYWcqKiBoZWFkZXJGaWVsZHMp
OyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxpemVkU3Ry
aW5nRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHN0
YXR1c1N0cmluZyk7ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
dGF0dXNDb2RlKF9PdXRfIGludCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBpc0F0dGFjaG1lbnQoX091dF8gQk9PTCopOwogCiAgICAgLy8gSVdlYlVSTFJlc3BvbnNl
UHJpdmF0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzc2xQZWVyQ2Vy
dGlmaWNhdGUoLyogW3JldHZhbF1bb3V0XSAqLyBVTE9OR19QVFIqIHJlc3VsdCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNzbFBlZXJDZXJ0aWZpY2F0ZShfT3V0XyBV
TE9OR19QVFIqIHJlc3VsdCk7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OwogCkBAIC05Myw3ICs3MSw3IEBAIHByb3Rl
Y3RlZDoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKIAogI2lmIFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDcgKzMzLDYgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBpbmxpbmUgV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQotICAgIDog
bV9yZWZDb3VudCgwKQogewogICAgICsrZ0NsYXNzQ291bnQ7CiAgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKQEAgLTYzLDExICs2MiwxMSBAQCBV
TE9ORyBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OlJlbGVhc2UoCiAgICAgcmV0dXJuIG5ld1Jl
ZkNvdW50OwogfQogCi1IUkVTVUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6UXVlcnlJbnRl
cmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7CiAgICAgaWYgKCFwcHZPYmplY3QpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgKnBwdk9iamVjdCA9IG51
bGxwdHI7CiAKICAgICBpZiAoSXNFcXVhbElJRChyaWlkLCBfX3V1aWRvZihXZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4pKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHRoaXM7CkBAIC04MiwxMyArODEs
MTMgQEAgSFJFU1VMVCBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OlF1ZXJ5SQogICAgIHJldHVy
biBTX09LOwogfQogCi1IUkVTVUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoQlNU
UiBwYXR0ZXJuU3RyaW5nKQorSFJFU1VMVCBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OnBhcnNl
KF9Jbl8gQlNUUiBwYXR0ZXJuU3RyaW5nKQogewogICAgIG1fcGF0dGVybiA9IFVzZXJDb250ZW50
VVJMUGF0dGVybihTdHJpbmcocGF0dGVyblN0cmluZywgU3lzU3RyaW5nTGVuKHBhdHRlcm5TdHJp
bmcpKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjppc1ZhbGlkKEJPT0wqIGlzVmFsaWQpCitIUkVTVUxUIFdlYlVzZXJDb250ZW50VVJM
UGF0dGVybjo6aXNWYWxpZChfT3V0XyBCT09MKiBpc1ZhbGlkKQogewogICAgIGlmICghaXNWYWxp
ZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTk2LDcgKzk1LDcgQEAgSFJFU1VMVCBX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmlzVmFsaQogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6c2NoZW1lKEJTVFIqIHNjaGVtZSkKK0hS
RVNVTFQgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpzY2hlbWUoX0RlcmVmX29wdF9vdXRfIEJT
VFIqIHNjaGVtZSkKIHsKICAgICBpZiAoIXNjaGVtZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKQEAgLTEwNCw3ICsxMDMsNyBAQCBIUkVTVUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6
c2NoZW1lCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjpob3N0KEJTVFIqIGhvc3QpCitIUkVTVUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6aG9zdChfRGVyZWZfb3B0X291dF8gQlNUUiogaG9zdCkKIHsKICAgICBpZiAoIWhvc3QpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMTIsNyArMTExLDcgQEAgSFJFU1VMVCBXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm46Omhvc3QoQgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1N1YmRvbWFpbnMoQk9PTCogbWF0
Y2hlcykKK0hSRVNVTFQgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzU3ViZG9tYWlu
cyhfT3V0XyBCT09MKiBtYXRjaGVzKQogewogICAgIGlmICghbWF0Y2hlcykKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKQEAgLTEyMCw3ICsxMTksNyBAQCBIUkVTVUxUIFdlYlVzZXJDb250ZW50
VVJMUGF0dGVybjo6bWF0Y2hlCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzVVJMKEJTVFIgdXJsLCBCT09MKiBtYXRjaGVzKQor
SFJFU1VMVCBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNVUkwoX0luXyBCU1RSIHVy
bCwgX091dF8gQk9PTCogbWF0Y2hlcykKIHsKICAgICBpZiAoIW1hdGNoZXMpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE1ICs0NSwxNSBAQCBw
cml2YXRlOgogICAgIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybigpOwogICAgIH5XZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4oKTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShSRUZJSUQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJzZShCU1RSIHBhdHRlcm5TdHJpbmcpOwotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1ZhbGlkKEJPT0wqKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NoZW1lKEJTVFIqKTsKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaG9zdChCU1RSKik7Ci0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1hdGNoZXNTdWJkb21haW5zKEJPT0wqIG1hdGNoZXMp
OwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtYXRjaGVzVVJMKEJTVFIs
IEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyc2UoX0luXyBCU1RSIHBhdHRlcm5T
dHJpbmcpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1ZhbGlkKF9P
dXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2NoZW1l
KF9EZXJlZl9vcHRfb3V0XyBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGhvc3QoX0RlcmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbWF0Y2hlc1N1YmRvbWFpbnMoX091dF8gQk9PTCogbWF0Y2hlcyk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1hdGNoZXNVUkwoX0luXyBC
U1RSLCBfT3V0XyBCT09MKik7CiAKLSAgICBVTE9ORyBtX3JlZkNvdW50OworICAgIFVMT05HIG1f
cmVmQ291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuIG1fcGF0
dGVybjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxODg2MzgpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDgg
KzI3OCw4IEBAIHByaXZhdGU6CiAgICAgUHJlZmVyZW5jZXNDaGFuZ2VkT3JSZW1vdmVkT2JzZXJ2
ZXIoKSB7fQogICAgIH5QcmVmZXJlbmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZlcigpIHt9CiAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVG
SUlELCB2b2lkKiopIHsgcmV0dXJuIEVfRkFJTDsgfQotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQsIF9PdXRwdHJf
IHZvaWQqKikgeyByZXR1cm4gRV9GQUlMOyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBBZGRSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIDA7IH0KIAogcHVibGljOgpAQCAtNDAw
LDQ2ICs0MDAsNiBAQCBlbnVtIHsKIGJvb2wgV2ViVmlldzo6c19hbGxvd1NpdGVTcGVjaWZpY0hh
Y2tzID0gZmFsc2U7CiAKIFdlYlZpZXc6OldlYlZpZXcoKQotICAgIDogbV9yZWZDb3VudCgwKQot
ICAgICwgbV9zaG91bGRJbnZlcnRDb2xvcnMoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgICwgbV9kZWxldGlvbkhhc0JlZ3VuKGZhbHNlKQotI2VuZGlmCi0gICAgLCBtX2hvc3RXaW5k
b3coMCkKLSAgICAsIG1fdmlld1dpbmRvdygwKQotICAgICwgbV9tYWluRnJhbWUoMCkKLSAgICAs
IG1fcGFnZSgwKQotICAgICwgbV9pbnNwZWN0b3JDbGllbnQoMCkKLSAgICAsIG1faGFzQ3VzdG9t
RHJvcFRhcmdldChmYWxzZSkKLSAgICAsIG1fdXNlQmFja0ZvcndhcmRMaXN0KHRydWUpCi0gICAg
LCBtX3VzZXJBZ2VudE92ZXJyaWRkZW4oZmFsc2UpCi0gICAgLCBtX3pvb21NdWx0aXBsaWVyKDEu
MGYpCi0gICAgLCBtX3pvb21zVGV4dE9ubHkoZmFsc2UpCi0gICAgLCBtX21vdXNlQWN0aXZhdGVk
KGZhbHNlKQotICAgICwgbV9kcmFnRGF0YSgwKQotICAgICwgbV9jdXJyZW50Q2hhcmFjdGVyQ29k
ZSgwKQotICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZhbHNlKQotICAgICwgbV9wYWludENvdW50
KDApCi0gICAgLCBtX2hhc1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnKGZhbHNlKQotICAgICwgbV9k
aWRDbG9zZShmYWxzZSkKLSAgICAsIG1faW5JTUVDb21wb3NpdGlvbigwKQotICAgICwgbV90b29s
VGlwSHduZCgwKQotICAgICwgbV9jbG9zZVdpbmRvd1RpbWVyKDApCi0gICAgLCBtX3RvcExldmVs
UGFyZW50KDApCi0gICAgLCBtX2RlbGV0ZUJhY2tpbmdTdG9yZVRpbWVyQWN0aXZlKGZhbHNlKQot
ICAgICwgbV90cmFuc3BhcmVudChmYWxzZSkKLSAgICAsIG1fbGFzdFBhblgoMCkKLSAgICAsIG1f
bGFzdFBhblkoMCkKLSAgICAsIG1feE92ZXJwYW4oMCkKLSAgICAsIG1feU92ZXJwYW4oMCkKLSAg
ICAsIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGZhbHNlKQotICAgICwgbV9uZXh0RGlzcGxh
eUlzU3luY2hyb25vdXMoZmFsc2UpCi0gICAgLCBtX2xhc3RTZXRDdXJzb3IoMCkKLSAgICAsIG1f
dXNlc0xheWVyZWRXaW5kb3coZmFsc2UpCi0gICAgLCBtX25lZWRzRGlzcGxheShmYWxzZSkKLSNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgLCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0KG51bGxwdHIpCi0jZW5kaWYKIHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBAIC00NTEsNyArNDExLDcgQEAg
V2ViVmlldzo6V2ViVmlldygpCiAgICAgaW5pdGlhbGl6ZVN0YXRpY09ic2VydmVycygpOwogCiAg
ICAgV2ViUHJlZmVyZW5jZXMqIHNoYXJlZFByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKLSAgICBCT09MIGVuYWJsZWQ7CisgICAgQk9PTCBl
bmFibGVkID0gRkFMU0U7CiAgICAgaWYgKFNVQ0NFRURFRChzaGFyZWRQcmVmZXJlbmNlcy0+Y29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCZlbmFibGVkKSkpCiAgICAgICAgIGNvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCA9ICEhZW5hYmxlZDsKICAgICBpZiAoU1VDQ0VFREVEKHNo
YXJlZFByZWZlcmVuY2VzLT5ncmFtbWFyQ2hlY2tpbmdFbmFibGVkKCZlbmFibGVkKSkpCkBAIC00
OTcsNyArNDU3LDcgQEAgV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQogCiB2b2lk
IGluaXRpYWxpemVTdGF0aWNPYnNlcnZlcnMoKQogewotICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgaWYgKGluaXRp
YWxpemVkKQogICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtNzUy
LDcgKzcxMiw3IEBAIFdlYkNhY2hlTW9kZWwgV2ViVmlldzo6bWF4Q2FjaGVNb2RlbEluQW4KICAg
ICByZXR1cm4gY2FjaGVNb2RlbDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpjbG9zZSgpCitIUkVTVUxUIFdlYlZpZXc6OmNsb3NlKCkKIHsKICAgICBpZiAobV9kaWRD
bG9zZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CkBAIC0yNjUyLDkgKzI2MTIsMTEgQEAgY29uc3Qg
U3RyaW5nJiBXZWJWaWV3Ojp1c2VyQWdlbnRGb3JLVVJMKAogCiAvLyBJVW5rbm93biAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6UXVlcnlJbnRlcmZhY2Uo
UkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYlZpZXc6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQog
ewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFs
R1VJRChyaWlkLCBDTFNJRF9XZWJWaWV3KSkKICAgICAgICAgKnBwdk9iamVjdCA9IHRoaXM7CiAg
ICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKQEAgLTI2ODYsMTMg
KzI2NDgsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpRdWVyeQogICAg
IHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpBZGRS
ZWYodm9pZCkKK1VMT05HIFdlYlZpZXc6OkFkZFJlZigpCiB7CiAgICAgQVNTRVJUKCFtX2RlbGV0
aW9uSGFzQmVndW4pOwogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OlJlbGVhc2Uodm9pZCkKK1VMT05HIFdlYlZpZXc6OlJlbGVh
c2Uodm9pZCkKIHsKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAKQEAgLTI3MTcs
NyArMjY3OSw3IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OlJlbGVhc2UKIAog
Ly8gSVdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBXZWJWaWV3OjpjYW5TaG93TUlNRVR5
cGUoLyogW2luXSAqLyBCU1RSIG1pbWVUeXBlLCAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGNh
blNob3cpCitIUkVTVUxUIFdlYlZpZXc6OmNhblNob3dNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5
cGUsIF9PdXRfIEJPT0wqIGNhblNob3cpCiB7CiAgICAgaWYgKCFjYW5TaG93KQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjc0Nyw3ICsyNzA5LDcgQEAgYm9vbCBXZWJWaWV3OjpjYW5T
aG93TUlNRVR5cGUoY29uc3QgU3RyaQogICAgIHJldHVybiBjYW5TaG93OwogfQogCi1IUkVTVUxU
IFdlYlZpZXc6OmNhblNob3dNSU1FVHlwZUFzSFRNTCgvKiBbaW5dICovIEJTVFIgbWltZVR5cGUs
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogY2FuU2hvdykKK0hSRVNVTFQgV2ViVmlldzo6Y2Fu
U2hvd01JTUVUeXBlQXNIVE1MKF9Jbl8gQlNUUiBtaW1lVHlwZSwgX091dF8gQk9PTCogY2FuU2hv
dykKIHsKICAgICBpZiAoIWNhblNob3cpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0y
NzY0LDMyICsyNzI2LDI4IEBAIGJvb2wgV2ViVmlldzo6Y2FuU2hvd01JTUVUeXBlQXNIVE1MKGNv
bnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpNSU1FVHlwZXNTaG93bkFzSFRNTCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRW51
bVZBUklBTlQqKiAvKmVudW1WYXJpYW50Ki8pCitIUkVTVUxUIFdlYlZpZXc6Ok1JTUVUeXBlc1No
b3duQXNIVE1MKF9DT01fT3V0cHRyX29wdF8gSUVudW1WQVJJQU5UKiogZW51bVZhcmlhbnQpCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFlbnVtVmFyaWFudCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZW51bVZhcmlhbnQgPSBudWxscHRyOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
c2V0TUlNRVR5cGVzU2hvd25Bc0hUTUwoIAotICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIEJT
VFIqIC8qbWltZVR5cGVzKi8sCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IC8qY01pbWVUeXBlcyov
KQorSFJFU1VMVCBXZWJWaWV3OjpzZXRNSU1FVHlwZXNTaG93bkFzSFRNTChfX2lub3V0X2Vjb3Vu
dF9mdWxsKGNNaW1lVHlwZXMpIEJTVFIqIG1pbWVUeXBlcywgaW50IGNNaW1lVHlwZXMpCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpVUkxGcm9tUGFzdGVib2FyZCggCi0gICAg
LyogW2luXSAqLyBJRGF0YU9iamVjdCogLypwYXN0ZWJvYXJkKi8sCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiAvKnVybCovKQorSFJFU1VMVCBXZWJWaWV3OjpVUkxGcm9tUGFzdGVib2Fy
ZChfSW5fb3B0XyBJRGF0YU9iamVjdCogLypwYXN0ZWJvYXJkKi8sIF9EZXJlZl9vcHRfb3V0XyBC
U1RSKiAvKnVybCovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6VVJMVGl0
bGVGcm9tUGFzdGVib2FyZCggCi0gICAgLyogW2luXSAqLyBJRGF0YU9iamVjdCogLypwYXN0ZWJv
YXJkKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnVybFRpdGxlKi8pCitIUkVT
VUxUIFdlYlZpZXc6OlVSTFRpdGxlRnJvbVBhc3RlYm9hcmQoX0luX29wdF8gSURhdGFPYmplY3Qq
IC8qcGFzdGVib2FyZCovLCBfRGVyZWZfb3B0X291dF8gQlNUUiogLyp1cmxUaXRsZSovKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0yODQz
LDE1ICsyODAxLDEyIEBAIGJvb2wgV2ViVmlldzo6c2hvdWxkSW5pdGlhbGl6ZVRyYWNrUG9pbnQK
ICAgICByZXR1cm4gc2hvdWxkQ3JlYXRlU2Nyb2xsYmFyczsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKCAKLSAgICAvKiBbaW5dICovIFJFQ1Qg
ZnJhbWUsCi0gICAgLyogW2luXSAqLyBCU1RSIGZyYW1lTmFtZSwKLSAgICAvKiBbaW5dICovIEJT
VFIgZ3JvdXBOYW1lKQorSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbWUs
IF9Jbl8gQlNUUiBmcmFtZU5hbWUsIF9Jbl8gQlNUUiBncm91cE5hbWUpCiB7CiAgICAgSFJFU1VM
VCBociA9IFNfT0s7CiAKICAgICBpZiAobV92aWV3V2luZG93KQotICAgICAgICByZXR1cm4gRV9G
QUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgcmVnaXN0ZXJXZWJWaWV3
V2luZG93Q2xhc3MoKTsKIApAQCAtMzA3NSwyNCArMzAzMCwyNCBAQCB2b2lkIFdlYlZpZXc6OmRp
c3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tCiAgICAgfQogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnNl
dEFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSgKLSAgICAvKiBbaW5dICovIElBY2Nlc3NpYmlsaXR5RGVs
ZWdhdGUqIGQpCitIUkVTVUxUIFdlYlZpZXc6OnNldEFjY2Vzc2liaWxpdHlEZWxlZ2F0ZShfSW5f
b3B0XyBJQWNjZXNzaWJpbGl0eURlbGVnYXRlKiBkKQogewogICAgIG1fYWNjZXNzaWJpbGl0eURl
bGVnYXRlID0gZDsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjphY2Nl
c3NpYmlsaXR5RGVsZWdhdGUoCi0gICAgLyogW291dF1bcmV0dmFsXSAqLyBJQWNjZXNzaWJpbGl0
eURlbGVnYXRlKiogZCkKK0hSRVNVTFQgV2ViVmlldzo6YWNjZXNzaWJpbGl0eURlbGVnYXRlKF9D
T01fT3V0cHRyX29wdF8gSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSoqIGQpCiB7CisgICAgaWYgKCFk
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpkID0gbnVsbHB0cjsKICAgICBpZiAo
IW1fYWNjZXNzaWJpbGl0eURlbGVnYXRlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAg
ICAgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eURlbGVnYXRlLmNvcHlSZWZUbyhkKTsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRVSURlbGVnYXRlKCAKLSAgICAvKiBb
aW5dICovIElXZWJVSURlbGVnYXRlKiBkKQorSFJFU1VMVCBXZWJWaWV3OjpzZXRVSURlbGVnYXRl
KF9Jbl9vcHRfIElXZWJVSURlbGVnYXRlKiBkKQogewogICAgIG1fdWlEZWxlZ2F0ZSA9IGQ7CiAK
QEAgLTMxMDcsODAgKzMwNjIsODYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpzZXRVSQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OnVpRGVsZWdhdGUoIAotICAgIC8qIFtvdXRdW3JldHZhbF0gKi8gSVdlYlVJRGVs
ZWdhdGUqKiBkKQorSFJFU1VMVCBXZWJWaWV3Ojp1aURlbGVnYXRlKF9DT01fT3V0cHRyX29wdF8g
SVdlYlVJRGVsZWdhdGUqKiBkKQogeworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqZCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gbV91aURlbGVnYXRlLmNvcHlSZWZUbyhkKTsK
IH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSggCi0gICAgLyogW2luXSAqLyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUqIGQpCitI
UkVTVUxUIFdlYlZpZXc6OnNldFJlc291cmNlTG9hZERlbGVnYXRlKF9Jbl9vcHRfIElXZWJSZXNv
dXJjZUxvYWREZWxlZ2F0ZSogZCkKIHsKICAgICBtX3Jlc291cmNlTG9hZERlbGVnYXRlID0gZDsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpyZXNvdXJjZUxvYWREZWxlZ2F0ZSggCi0gICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViUmVz
b3VyY2VMb2FkRGVsZWdhdGUqKiBkKQorSFJFU1VMVCBXZWJWaWV3OjpyZXNvdXJjZUxvYWREZWxl
Z2F0ZShfQ09NX091dHB0cl9vcHRfIElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZSoqIGQpCiB7Cisg
ICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpkID0gbnVsbHB0cjsK
ICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkRGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKICAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5jb3B5UmVmVG8oZCk7CiB9CiAK
LUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0RG93bmxvYWREZWxlZ2F0ZSgg
Ci0gICAgLyogW2luXSAqLyBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZCkKK0hSRVNVTFQgV2ViVmll
dzo6c2V0RG93bmxvYWREZWxlZ2F0ZShfSW5fb3B0XyBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZCkK
IHsKICAgICBtX2Rvd25sb2FkRGVsZWdhdGUgPSBkOwogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmRvd25sb2FkRGVsZWdhdGUoIAotICAg
IC8qIFtvdXRdW3JldHZhbF0gKi8gSVdlYkRvd25sb2FkRGVsZWdhdGUqKiBkKQorSFJFU1VMVCBX
ZWJWaWV3Ojpkb3dubG9hZERlbGVnYXRlKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvd25sb2FkRGVs
ZWdhdGUqKiBkKQogeworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqZCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX2Rvd25sb2FkRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gbV9kb3dubG9hZERlbGVnYXRlLmNvcHlSZWZUbyhk
KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRGcmFtZUxvYWRE
ZWxlZ2F0ZSggCi0gICAgLyogW2luXSAqLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUqIGQpCitIUkVT
VUxUIFdlYlZpZXc6OnNldEZyYW1lTG9hZERlbGVnYXRlKF9Jbl9vcHRfIElXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZSogZCkKIHsKICAgICBtX2ZyYW1lTG9hZERlbGVnYXRlID0gZDsKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpmcmFtZUxvYWRE
ZWxlZ2F0ZSggCi0gICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUq
KiBkKQorSFJFU1VMVCBXZWJWaWV3OjpmcmFtZUxvYWREZWxlZ2F0ZShfQ09NX091dHB0cl9vcHRf
IElXZWJGcmFtZUxvYWREZWxlZ2F0ZSoqIGQpCiB7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgICpkID0gbnVsbHB0cjsKICAgICBpZiAoIW1fZnJhbWVMb2FkRGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gbV9mcmFtZUxvYWRE
ZWxlZ2F0ZS5jb3B5UmVmVG8oZCk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6c2V0UG9saWN5RGVsZWdhdGUoIAotICAgIC8qIFtpbl0gKi8gSVdlYlBvbGljeURlbGVn
YXRlKiBkKQorSFJFU1VMVCBXZWJWaWV3OjpzZXRQb2xpY3lEZWxlZ2F0ZShfSW5fb3B0XyBJV2Vi
UG9saWN5RGVsZWdhdGUqIGQpCiB7CiAgICAgbV9wb2xpY3lEZWxlZ2F0ZSA9IGQ7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cG9saWN5
RGVsZWdhdGUoIAotICAgIC8qIFtvdXRdW3JldHZhbF0gKi8gSVdlYlBvbGljeURlbGVnYXRlKiog
ZCkKK0hSRVNVTFQgV2ViVmlldzo6cG9saWN5RGVsZWdhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2Vi
UG9saWN5RGVsZWdhdGUqKiBkKQogeworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqZCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX3BvbGljeURlbGVnYXRlKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgcmV0dXJuIG1fcG9saWN5RGVsZWdhdGUuY29weVJl
ZlRvKGQpOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om1haW5GcmFt
ZSggCi0gICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViRnJhbWUqKiBmcmFtZSkKK0hSRVNVTFQg
V2ViVmlldzo6bWFpbkZyYW1lKF9DT01fT3V0cHRyX29wdF8gSVdlYkZyYW1lKiogZnJhbWUpCiB7
CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMx
ODksMzUgKzMxNTAsMzggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjptYWlu
RgogCiAgICAgKmZyYW1lID0gbV9tYWluRnJhbWU7CiAgICAgaWYgKCFtX21haW5GcmFtZSkKLSAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAg
IG1fbWFpbkZyYW1lLT5BZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpmb2N1c2VkRnJhbWUoIAotICAgIC8qIFtvdXRdW3Jl
dHZhbF0gKi8gSVdlYkZyYW1lKiogZnJhbWUpCitIUkVTVUxUIFdlYlZpZXc6OmZvY3VzZWRGcmFt
ZShfQ09NX091dHB0cl9vcHRfIElXZWJGcmFtZSoqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUp
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAgICAgfQogCi0gICAgKmZyYW1lID0gMDsKKyAgICAqZnJhbWUgPSBudWxscHRyOwogICAg
IEZyYW1lKiBmID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKTsKICAg
ICBpZiAoIWYpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBXZWJGcmFtZSogd2ViRnJh
bWUgPSBraXQoZik7CiAgICAgaWYgKCF3ZWJGcmFtZSkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsK
KyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAogICAgIHJldHVybiB3ZWJGcmFtZS0+UXVl
cnlJbnRlcmZhY2UoSUlEX0lXZWJGcmFtZSwgKHZvaWQqKikgZnJhbWUpOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmJhY2tGb3J3YXJkTGlzdCggCi0gICAgLyogW291
dF1bcmV0dmFsXSAqLyBJV2ViQmFja0ZvcndhcmRMaXN0KiogbGlzdCkKK0hSRVNVTFQgV2ViVmll
dzo6YmFja0ZvcndhcmRMaXN0KF9DT01fT3V0cHRyX29wdF8gSVdlYkJhY2tGb3J3YXJkTGlzdCoq
IGxpc3QpCiB7CisgICAgaWYgKCFsaXN0KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgIH0KKyAgICAqbGlzdCA9IG51bGxwdHI7
CiAgICAgaWYgKCFtX3VzZUJhY2tGb3J3YXJkTGlzdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
ICAKQEAgLTMyMjYsMzEgKzMxOTAsMzggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpiYWNrRgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnNldE1haW50YWluc0JhY2tGb3J3YXJkTGlzdCggCi0gICAgLyogW2luXSAq
LyBCT09MIGZsYWcpCitIUkVTVUxUIFdlYlZpZXc6OnNldE1haW50YWluc0JhY2tGb3J3YXJkTGlz
dChCT09MIGZsYWcpCiB7CiAgICAgbV91c2VCYWNrRm9yd2FyZExpc3QgPSAhIWZsYWc7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Z29C
YWNrKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHN1Y2NlZWRlZCkKK0hSRVNVTFQg
V2ViVmlldzo6Z29CYWNrKF9PdXRfIEJPT0wqIHN1Y2NlZWRlZCkKIHsKKyAgICBpZiAoIXN1Y2Nl
ZWRlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgICpzdWNjZWVkZWQgPSBtX3Bh
Z2UtPmJhY2tGb3J3YXJkKCkuZ29CYWNrKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Z29Gb3J3YXJkKCAKLSAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIHN1Y2NlZWRlZCkKK0hSRVNVTFQgV2ViVmlldzo6Z29Gb3J3YXJkKF9P
dXRfIEJPT0wqIHN1Y2NlZWRlZCkKIHsKKyAgICBpZiAoIXN1Y2NlZWRlZCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKwogICAgICpzdWNjZWVkZWQgPSBtX3BhZ2UtPmJhY2tGb3J3YXJkKCku
Z29Gb3J3YXJkKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Z29Ub0JhY2tGb3J3YXJkSXRlbSggCi0gICAgLyogW2luXSAqLyBJV2Vi
SGlzdG9yeUl0ZW0qIGl0ZW0sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBzdWNjZWVk
ZWQpCitIUkVTVUxUIFdlYlZpZXc6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oX0luX29wdF8gSVdlYkhp
c3RvcnlJdGVtKiBpdGVtLCBfT3V0XyBCT09MKiBzdWNjZWVkZWQpCiB7CisgICAgaWYgKCFpdGVt
KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CisKICAgICAqc3VjY2VlZGVkID0gRkFMU0U7CiAKICAgICBDT01Q
dHI8V2ViSGlzdG9yeUl0ZW0+IHdlYkhpc3RvcnlJdGVtOwpAQCAtMzI2NCwyMCArMzIzNSwxOCBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmdvVG9CCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0VGV4dFNpemVN
dWx0aXBsaWVyKCAKLSAgICAvKiBbaW5dICovIGZsb2F0IG11bHRpcGxpZXIpCitIUkVTVUxUIFdl
YlZpZXc6OnNldFRleHRTaXplTXVsdGlwbGllcihmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGlm
ICghbV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBF
X1VORVhQRUNURUQ7CiAgICAgc2V0Wm9vbU11bHRpcGxpZXIobXVsdGlwbGllciwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
c2V0UGFnZVNpemVNdWx0aXBsaWVyKCAKLSAgICAvKiBbaW5dICovIGZsb2F0IG11bHRpcGxpZXIp
CitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFBhZ2VTaXplTXVsdGlwbGll
cihmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGlmICghbV9tYWluRnJhbWUpCi0gICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAgICAgc2V0Wm9vbU11
bHRpcGxpZXIobXVsdGlwbGllciwgZmFsc2UpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzI5
NSwxNiArMzI2NCwyMCBAQCB2b2lkIFdlYlZpZXc6OnNldFpvb21NdWx0aXBsaWVyKGZsb2F0IG11
CiAgICAgfQogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnRleHRTaXpl
TXVsdGlwbGllciggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBmbG9hdCogbXVsdGlwbGllcikK
K0hSRVNVTFQgV2ViVmlldzo6dGV4dFNpemVNdWx0aXBsaWVyKF9PdXRfIGZsb2F0KiBtdWx0aXBs
aWVyKQogeworICAgIGlmICghbXVsdGlwbGllcikKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KwogICAgICptdWx0aXBsaWVyID0gem9vbU11bHRpcGxpZXIodHJ1ZSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFnZVNpemVNdWx0
aXBsaWVyKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIGZsb2F0KiBtdWx0aXBsaWVyKQorSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYWdlU2l6ZU11bHRpcGxpZXIoX091dF8g
ZmxvYXQqIG11bHRpcGxpZXIpCiB7CisgICAgaWYgKCFtdWx0aXBsaWVyKQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworCiAgICAgKm11bHRpcGxpZXIgPSB6b29tTXVsdGlwbGllcihmYWxzZSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMzE2LDM1ICszMjg5LDM3IEBAIGZsb2F0IFdlYlZp
ZXc6Onpvb21NdWx0aXBsaWVyKGJvb2wgaXNUZXgKICAgICByZXR1cm4gbV96b29tTXVsdGlwbGll
cjsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRBcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQoIAotICAgIC8qIFtpbl0gKi8gQlNUUiBhcHBsaWNhdGlvbk5hbWUp
CitIUkVTVUxUIFdlYlZpZXc6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChfSW5fIEJT
VFIgYXBwbGljYXRpb25OYW1lKQogewogICAgIG1fYXBwbGljYXRpb25OYW1lID0gdG9TdHJpbmco
YXBwbGljYXRpb25OYW1lKTsKICAgICBtX3VzZXJBZ2VudFN0YW5kYXJkID0gU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIGFwcGxpY2F0aW9uTmFtZSkKK0hSRVNVTFQgV2ViVmlldzo6YXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50KF9EZXJlZl9vcHRfb3V0XyBCU1RSKiBhcHBsaWNhdGlvbk5hbWUpCiB7CisgICAg
aWYgKCFhcHBsaWNhdGlvbk5hbWUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICAq
YXBwbGljYXRpb25OYW1lID0gQlN0cmluZyhtX2FwcGxpY2F0aW9uTmFtZSkucmVsZWFzZSgpOwog
ICAgIGlmICghKmFwcGxpY2F0aW9uTmFtZSAmJiBtX2FwcGxpY2F0aW9uTmFtZS5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q3VzdG9tVXNlckFnZW50KCAKLSAg
ICAvKiBbaW5dICovIEJTVFIgdXNlckFnZW50U3RyaW5nKQorSFJFU1VMVCBXZWJWaWV3OjpzZXRD
dXN0b21Vc2VyQWdlbnQoX0luXyBCU1RSIHVzZXJBZ2VudFN0cmluZykKIHsKICAgICBtX3VzZXJB
Z2VudE92ZXJyaWRkZW4gPSB1c2VyQWdlbnRTdHJpbmc7CiAgICAgbV91c2VyQWdlbnRDdXN0b20g
PSB0b1N0cmluZyh1c2VyQWdlbnRTdHJpbmcpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmN1c3RvbVVzZXJBZ2VudCggCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiB1c2VyQWdlbnRTdHJpbmcpCitIUkVTVUxUIFdlYlZpZXc6
OmN1c3RvbVVzZXJBZ2VudChfRGVyZWZfb3B0X291dF8gQlNUUiogdXNlckFnZW50U3RyaW5nKQog
ewotICAgICp1c2VyQWdlbnRTdHJpbmcgPSAwOworICAgIGlmICghdXNlckFnZW50U3RyaW5nKQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgKnVzZXJBZ2VudFN0cmluZyA9IG51bGxw
dHI7CiAgICAgaWYgKCFtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBTX09L
OwogICAgICp1c2VyQWdlbnRTdHJpbmcgPSBCU3RyaW5nKG1fdXNlckFnZW50Q3VzdG9tKS5yZWxl
YXNlKCk7CkBAIC0zMzUzLDEwICszMzI4LDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6Y3VzdG8KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojp1c2VyQWdlbnRGb3JVUkwoIAotICAgIC8qIFtpbl0gKi8gQlNUUiB1
cmwsCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiB1c2VyQWdlbnQpCitIUkVTVUxUIFdl
YlZpZXc6OnVzZXJBZ2VudEZvclVSTChfSW5fIEJTVFIgdXJsLCBfRGVyZWZfb3B0X291dF8gQlNU
UiogdXNlckFnZW50KQogeworICAgIGlmICghdXNlckFnZW50KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworCiAgICAgU3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9IHVzZXJBZ2VudEZvcktVUkwo
TWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCkpOwogICAgICp1c2VyQWdlbnQgPSBC
U3RyaW5nKHVzZXJBZ2VudFN0cmluZykucmVsZWFzZSgpOwogICAgIGlmICghKnVzZXJBZ2VudCAm
JiB1c2VyQWdlbnRTdHJpbmcubGVuZ3RoKCkpCkBAIC0zMzY0LDE4ICszMzQwLDE5IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dXNlckEKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzdXBwb3J0c1RleHRFbmNvZGlu
ZyggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBzdXBwb3J0cykKK0hSRVNVTFQgV2Vi
Vmlldzo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoX091dF8gQk9PTCogc3VwcG9ydHMpCiB7CisgICAg
aWYgKCFzdXBwb3J0cykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgICpzdXBwb3J0
cyA9IFRSVUU7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSggCi0gICAgLyogW2luXSAqLyBC
U1RSIGVuY29kaW5nTmFtZSkKK0hSRVNVTFQgV2ViVmlldzo6c2V0Q3VzdG9tVGV4dEVuY29kaW5n
TmFtZShfSW5fIEJTVFIgZW5jb2RpbmdOYW1lKQogewogICAgIGlmICghbV9tYWluRnJhbWUpCi0g
ICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAg
ICBIUkVTVUxUIGhyOwogICAgIEJTdHJpbmcgb2xkRW5jb2Rpbmc7CkBAIC0zMzkxLDE2ICszMzY4
LDE4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q3UKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXN0b21U
ZXh0RW5jb2RpbmdOYW1lKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGVuY29kaW5n
TmFtZSkKK0hSRVNVTFQgV2ViVmlldzo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZShfRGVyZWZfb3B0
X291dF8gQlNUUiogZW5jb2RpbmdOYW1lKQogeworICAgIGlmICghZW5jb2RpbmdOYW1lKQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAgICAgQ09N
UHRyPElXZWJEYXRhU291cmNlPiBkYXRhU291cmNlOwogICAgIENPTVB0cjxXZWJEYXRhU291cmNl
PiBkYXRhU291cmNlSW1wbDsKLSAgICAqZW5jb2RpbmdOYW1lID0gMDsKKyAgICAqZW5jb2RpbmdO
YW1lID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBF
X0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBpZiAoRkFJTEVEKG1f
bWFpbkZyYW1lLT5wcm92aXNpb25hbERhdGFTb3VyY2UoJmRhdGFTb3VyY2UpKSB8fCAhZGF0YVNv
dXJjZSkgewogICAgICAgICBociA9IG1fbWFpbkZyYW1lLT5kYXRhU291cmNlKCZkYXRhU291cmNl
KTsKQEAgLTM0MjUsMzQgKzM0MDQsMzEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpjdXN0bwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnNldE1lZGlhU3R5bGUoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKm1lZGlh
Ki8pCitIUkVTVUxUIFdlYlZpZXc6OnNldE1lZGlhU3R5bGUoX0luXyBCU1RSIC8qbWVkaWEqLykK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om1lZGlhU3R5bGUoIAotICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogLyptZWRpYSovKQorSFJFU1VMVCBXZWJWaWV3OjptZWRp
YVN0eWxlKF9EZXJlZl9vcHRfb3V0XyBCU1RSKiAvKm1lZGlhKi8pCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
ZyggCi0gICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwgLy8gYXNzdW1lcyBpbnB1dCBkb2VzIG5v
dCBoYXZlICJKYXZhU2NyaXB0IiBhdCB0aGUgYmVnaW5pbmcuCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSKiByZXN1bHQpCitIUkVTVUxUIFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHRGcm9tU3RyaW5nKF9Jbl8gQlNUUiBzY3JpcHQsIC8vIGFzc3VtZXMgaW5wdXQgZG9l
cyBub3QgaGF2ZSAiSmF2YVNjcmlwdCIgYXQgdGhlIGJlZ2luaW5nLgorICAgIF9EZXJlZl9vcHRf
b3V0XyBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgfQogCi0gICAg
KnJlc3VsdCA9IDA7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShtX21haW5GcmFtZSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBKU0M6OkpT
VmFsdWUgc2NyaXB0RXhlY3V0aW9uUmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpLmpzVmFsdWUoKTsKICAgICBpZiAoIXNj
cmlwdEV4ZWN1dGlvblJlc3VsdCkKQEAgLTM0NjYsMTUgKzM0NDIsMTYgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzdHJpbgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OndpbmRvd1NjcmlwdE9iamVjdCggCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJV2ViU2NyaXB0T2JqZWN0KiogLyp3ZWJTY3JpcHRPYmplY3Qq
LykKK0hSRVNVTFQgV2ViVmlldzo6d2luZG93U2NyaXB0T2JqZWN0KF9DT01fT3V0cHRyX29wdF8g
SVdlYlNjcmlwdE9iamVjdCoqIHdlYlNjcmlwdE9iamVjdCkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBpZiAoIXdlYlNjcmlwdE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKyAgICAqd2ViU2NyaXB0T2JqZWN0ID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFByZWZlcmVu
Y2VzKCAKLSAgICAvKiBbaW5dICovIElXZWJQcmVmZXJlbmNlcyogcHJlZnMpCitIUkVTVUxUIFdl
YlZpZXc6OnNldFByZWZlcmVuY2VzKF9Jbl9vcHRfIElXZWJQcmVmZXJlbmNlcyogcHJlZnMpCiB7
CiAgICAgaWYgKCFwcmVmcykKICAgICAgICAgcHJlZnMgPSBXZWJQcmVmZXJlbmNlczo6c2hhcmVk
U3RhbmRhcmRQcmVmZXJlbmNlcygpOwpAQCAtMzUwOSw4ICszNDg2LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRQcgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnByZWZlcmVuY2VzKCAKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElXZWJQcmVmZXJlbmNlcyoqIHByZWZzKQorSFJFU1VMVCBXZWJWaWV3Ojpw
cmVmZXJlbmNlcyhfQ09NX091dHB0cl9vcHRfIElXZWJQcmVmZXJlbmNlcyoqIHByZWZzKQogewog
ICAgIGlmICghcHJlZnMpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0zNTIwLDE1ICsz
NDk2LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cHJlZmUKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRQ
cmVmZXJlbmNlc0lkZW50aWZpZXIoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmFuSWRlbnRpZmll
ciovKQorSFJFU1VMVCBXZWJWaWV3OjpzZXRQcmVmZXJlbmNlc0lkZW50aWZpZXIoX0luXyBCU1RS
IC8qYW5JZGVudGlmaWVyKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpw
cmVmZXJlbmNlc0lkZW50aWZpZXIoIAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogLyph
bklkZW50aWZpZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6cHJlZmVyZW5jZXNJZGVudGlmaWVyKF9E
ZXJlZl9vcHRfb3V0XyBCU1RSKiAvKmFuSWRlbnRpZmllciovKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0zNTk0LDcgKzM1NjgsNyBAQCB2
b2lkIFdlYlZpZXc6OmNhbmNlbERlbGV0ZUJhY2tpbmdTdG9yZVNvCiAgICAgS2lsbFRpbWVyKG1f
dmlld1dpbmRvdywgRGVsZXRlQmFja2luZ1N0b3JlVGltZXIpOwogfQogCi1IUkVTVUxUIFdlYlZp
ZXc6OnNldEhvc3RXaW5kb3coLyogW2luXSAqLyBIV05EIHdpbmRvdykKK0hSRVNVTFQgV2ViVmll
dzo6c2V0SG9zdFdpbmRvdyhfSW5fIEhXTkQgd2luZG93KQogewogICAgIGlmIChtX3ZpZXdXaW5k
b3cpIHsKICAgICAgICAgaWYgKHdpbmRvdykKQEAgLTM2MTgsOCArMzU5MiwxMSBAQCBIUkVTVUxU
IFdlYlZpZXc6OnNldEhvc3RXaW5kb3coLyogW2luXSAqCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LUhSRVNVTFQgV2ViVmlldzo6aG9zdFdpbmRvdygvKiBbcmV0dmFsXVtvdXRdICovIEhXTkQqIHdp
bmRvdykKK0hSRVNVTFQgV2ViVmlldzo6aG9zdFdpbmRvdyhfRGVyZWZfb3B0X291dF8gSFdORCog
d2luZG93KQogeworICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
CiAgICAgKndpbmRvdyA9IG1faG9zdFdpbmRvdzsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM2
MzIsMTggKzM2MDksMTMgQEAgc3RhdGljIEZyYW1lICppbmNyZW1lbnRGcmFtZShGcmFtZSAqY3Vy
cgogICAgICAgICA6IGN1cnItPnRyZWUoKS50cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAod3JhcEZs
YWcpOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNlYXJjaEZvcigg
Ci0gICAgLyogW2luXSAqLyBCU1RSIHN0ciwKLSAgICAvKiBbaW5dICovIEJPT0wgZm9yd2FyZCwK
LSAgICAvKiBbaW5dICovIEJPT0wgY2FzZUZsYWcsCi0gICAgLyogW2luXSAqLyBCT09MIHdyYXBG
bGFnLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZm91bmQpCitIUkVTVUxUIFdlYlZp
ZXc6OnNlYXJjaEZvcihfSW5fIEJTVFIgc3RyLCBCT09MIGZvcndhcmQsIEJPT0wgY2FzZUZsYWcs
IEJPT0wgd3JhcEZsYWcsIF9PdXRfIEJPT0wqIGZvdW5kKQogewogICAgIGlmICghZm91bmQpCiAg
ICAgICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiAgICAgCiAgICAgaWYgKCFtX3BhZ2UpCi0gICAg
ICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBp
ZiAoIXN0ciB8fCAhU3lzU3RyaW5nTGVuKHN0cikpCiAgICAgICAgIHJldHVybiBFX0lOVkFMSURB
Ukc7CkBAIC0zNjY0LDEwICszNjM2LDExIEBAIGJvb2wgV2ViVmlldzo6YWN0aXZlKCkKIAogdm9p
ZCBXZWJWaWV3Ojp1cGRhdGVBY3RpdmVTdGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5zZXRBY3RpdmUoYWN0aXZlKCkpOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0QWN0aXZlKGFjdGl2ZSgpKTsKIH0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp1cGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGUo
KQorSFJFU1VMVCBXZWJWaWV3Ojp1cGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGUoKQogewogICAg
IHVwZGF0ZUFjdGl2ZVN0YXRlKCk7CiAKQEAgLTM2NzksMjggKzM2NTIsMzMgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp1cGRhdAogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFt
ZShCU1RSIG5hbWUsIEJTVFIgdmFsdWUpCitIUkVTVUxUIFdlYlZpZXc6OmV4ZWN1dGVDb3JlQ29t
bWFuZEJ5TmFtZShfSW5fIEJTVFIgbmFtZSwgX0luXyBCU1RSIHZhbHVlKQogeworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKHRvU3RyaW5nKG5h
bWUpKS5leGVjdXRlKHRvU3RyaW5nKHZhbHVlKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjbGVhck1haW5GcmFtZU5hbWUoKQor
SFJFU1VMVCBXZWJWaWV3OjpjbGVhck1haW5GcmFtZU5hbWUoKQogeworICAgIGlmICghbV9wYWdl
KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS50cmVl
KCkuY2xlYXJOYW1lKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjptYXJrQWxsTWF0Y2hlc0ZvclRleHQoCi0gICAgQlNUUiBzdHIs
IEJPT0wgY2FzZVNlbnNpdGl2ZSwgQk9PTCBoaWdobGlnaHQsIFVJTlQgbGltaXQsIFVJTlQqIG1h
dGNoZXMpCitIUkVTVUxUIFdlYlZpZXc6Om1hcmtBbGxNYXRjaGVzRm9yVGV4dChfSW5fIEJTVFIg
c3RyLCBCT09MIGNhc2VTZW5zaXRpdmUsIEJPT0wgaGlnaGxpZ2h0LCBVSU5UIGxpbWl0LCBfT3V0
XyBVSU5UKiBtYXRjaGVzKQogewogICAgIGlmICghbWF0Y2hlcykKICAgICAgICAgcmV0dXJuIEVf
SU5WQUxJREFSRzsKIAogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gRV9VTkVYUEVD
VEVEOworICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgaWYgKCFzdHIgfHwgIVN5c1N0cmlu
Z0xlbihzdHIpKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwpAQCAtMzcwOSwxOCArMzY4
NywyMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om1hcmtBCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dW5tYXJr
QWxsVGV4dE1hdGNoZXMoKQorSFJFU1VMVCBXZWJWaWV3Ojp1bm1hcmtBbGxUZXh0TWF0Y2hlcygp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CisgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBtX3BhZ2UtPnVubWFya0FsbFRleHRNYXRjaGVzKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6cmVjdHNGb3JUZXh0TWF0Y2hlcygKLSAgICBJRW51bVRleHRNYXRjaGVzKiogcG1hdGNoZXMp
CitIUkVTVUxUIFdlYlZpZXc6OnJlY3RzRm9yVGV4dE1hdGNoZXMoX0NPTV9PdXRwdHJfb3B0XyBJ
RW51bVRleHRNYXRjaGVzKiogcG1hdGNoZXMpCiB7CisgICAgaWYgKCFwbWF0Y2hlcykKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcG1hdGNoZXMgPSBudWxscHRyOworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgVmVjdG9yPEludFJlY3Q+IGFs
bFJlY3RzOwogICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgp
OwogICAgIGRvIHsKQEAgLTM3NDMsOSArMzcyNiwxNSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnJlY3RzCiAgICAgcmV0dXJuIGNyZWF0ZU1hdGNoRW51bWVyYXRvcigmYWxs
UmVjdHMsIHBtYXRjaGVzKTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpnZW5lcmF0ZVNlbGVjdGlvbkltYWdlKEJPT0wgZm9yY2VXaGl0ZVRleHQsIEhCSVRNQVAqIGhC
aXRtYXApCitIUkVTVUxUIFdlYlZpZXc6OmdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3Jj
ZVdoaXRlVGV4dCwgX0RlcmVmX29wdF9vdXRfIEhCSVRNQVAqIGhCaXRtYXApCiB7Ci0gICAgKmhC
aXRtYXAgPSAwOworICAgIGlmICghaEJpdG1hcCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgKmhCaXRt
YXAgPSBudWxscHRyOwogCiAgICAgV2ViQ29yZTo6RnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIApAQCAtMzc1NSw4ICszNzQ0LDE0
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Z2VuZXIKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpzZWxlY3Rpb25SZWN0KFJFQ1QqIHJjKQorSFJF
U1VMVCBXZWJWaWV3OjpzZWxlY3Rpb25SZWN0KF9Jbm91dF8gUkVDVCogcmMpCiB7CisgICAgaWYg
KCFyYykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIGlmICghbV9wYWdlKQorICAg
ICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgV2ViQ29yZTo6RnJhbWUmIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIEludFJlY3Qg
aXIgPSBlbmNsb3NpbmdJbnRSZWN0KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygp
KTsKQEAgLTM3NzIsMTcgKzM3NjcsMTMgQEAgSFJFU1VMVCBXZWJWaWV3OjpzZWxlY3Rpb25SZWN0
KFJFQ1QqIHJjKQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnJlZ2lzdGVyVmlld0NsYXNzKCAKLSAgICAvKiBbaW5dICovIElXZWJEb2N1
bWVudFZpZXcqIC8qdmlldyovLAotICAgIC8qIFtpbl0gKi8gSVdlYkRvY3VtZW50UmVwcmVzZW50
YXRpb24qIC8qcmVwcmVzZW50YXRpb24qLywKLSAgICAvKiBbaW5dICovIEJTVFIgLypmb3JNSU1F
VHlwZSovKQorSFJFU1VMVCBXZWJWaWV3OjpyZWdpc3RlclZpZXdDbGFzcyhfSW5fb3B0XyBJV2Vi
RG9jdW1lbnRWaWV3KiwgX0luX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qLCBfSW5f
IEJTVFIgLypmb3JNSU1FVHlwZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6c2V0R3JvdXBOYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGdyb3VwTmFtZSkKK0hS
RVNVTFQgV2ViVmlldzo6c2V0R3JvdXBOYW1lKF9Jbl8gQlNUUiBncm91cE5hbWUpCiB7CiAgICAg
aWYgKG1fd2ViVmlld0dyb3VwKQogICAgICAgICBtX3dlYlZpZXdHcm91cC0+cmVtb3ZlV2ViVmll
dyh0aGlzKTsKQEAgLTM3OTksMTAgKzM3OTAsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpzZXRHcgogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpncm91cE5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIGdyb3VwTmFtZSkKK0hSRVNVTFQgV2ViVmlldzo6Z3JvdXBOYW1lKF9EZXJl
Zl9vcHRfb3V0XyBCU1RSKiBncm91cE5hbWUpCiB7Ci0gICAgKmdyb3VwTmFtZSA9IDA7CisgICAg
aWYgKCFncm91cE5hbWUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICAqZ3JvdXBO
YW1lID0gbnVsbHB0cjsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAg
ICAgU3RyaW5nIGdyb3VwTmFtZVN0cmluZyA9IG1fcGFnZS0+Z3JvdXBOYW1lKCk7CkBAIC0zODEy
LDE1ICszODA1LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Z3JvdXAK
ICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6ZXN0aW1hdGVkUHJvZ3Jlc3MoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGRv
dWJsZSogZXN0aW1hdGVkUHJvZ3Jlc3MpCitIUkVTVUxUIFdlYlZpZXc6OmVzdGltYXRlZFByb2dy
ZXNzKF9PdXRfIGRvdWJsZSogZXN0aW1hdGVkUHJvZ3Jlc3MpCiB7CisgICAgaWYgKCFlc3RpbWF0
ZWRQcm9ncmVzcykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqZXN0aW1hdGVkUHJv
Z3Jlc3MgPSBtX3BhZ2UtPnByb2dyZXNzKCkuZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aXNM
b2FkaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBpc0xvYWRpbmcpCitI
UkVTVUxUIFdlYlZpZXc6OmlzTG9hZGluZyhfT3V0XyBCT09MKiBpc0xvYWRpbmcpCiB7CiAgICAg
Q09NUHRyPElXZWJEYXRhU291cmNlPiBkYXRhU291cmNlOwogICAgIENPTVB0cjxJV2ViRGF0YVNv
dXJjZT4gcHJvdmlzaW9uYWxEYXRhU291cmNlOwpAQCAtMzgzMSw3ICszODI0LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppc0xvYQogICAgICppc0xvYWRpbmcgPSBGQUxT
RTsKIAogICAgIGlmICghbV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAg
ICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBpZiAoU1VDQ0VFREVEKG1fbWFpbkZyYW1l
LT5kYXRhU291cmNlKCZkYXRhU291cmNlKSkpCiAgICAgICAgIGRhdGFTb3VyY2UtPmlzTG9hZGlu
Zyhpc0xvYWRpbmcpOwpAQCAtMzg0NCwxOCArMzgzNywxOCBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OmlzTG9hCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxU
IFdlYlZpZXc6OmVsZW1lbnRBdFBvaW50KExQUE9JTlQgcG9pbnQsIElQcm9wZXJ0eUJhZyoqIGVs
ZW1lbnREaWN0aW9uYXJ5KQorSFJFU1VMVCBXZWJWaWV3OjplbGVtZW50QXRQb2ludChfSW5fIExQ
UE9JTlQgcG9pbnQsIF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogZWxlbWVudERpY3Rp
b25hcnkpCiB7Ci0gICAgaWYgKCFlbGVtZW50RGljdGlvbmFyeSkgeworICAgIGlmICghZWxlbWVu
dERpY3Rpb25hcnkgfHwgIXBvaW50KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAgICplbGVtZW50RGljdGlvbmFy
eSA9IDA7CisgICAgKmVsZW1lbnREaWN0aW9uYXJ5ID0gbnVsbHB0cjsKIAogICAgIEZyYW1lKiBm
cmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVy
biBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBJbnRQb2ludCB3
ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludC0+eCwgcG9pbnQtPnkpOwogICAgIGZsb2F0IGlu
dmVyc2VTY2FsZUZhY3RvciA9IDEuMGYgLyBkZXZpY2VTY2FsZUZhY3RvcigpOwpAQCAtMzg2Nyw0
OSArMzg2MCw0NCBAQCBIUkVTVUxUIFdlYlZpZXc6OmVsZW1lbnRBdFBvaW50KExQUE9JTlQKICAg
ICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6cGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElFbnVtVkFSSUFOVCoqIC8qZW51bVZhcmlhbnQqLykKK0hSRVNVTFQgV2ViVmlldzo6cGFzdGVi
b2FyZFR5cGVzRm9yU2VsZWN0aW9uKF9DT01fT3V0cHRyX29wdF8gSUVudW1WQVJJQU5UKiogZW51
bVZhcmlhbnQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFlbnVtVmFy
aWFudCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZW51bVZhcmlhbnQgPSBudWxs
cHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OndyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlcyggCi0gICAg
ICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gQlNUUiogLyp0eXBlcyovLAotICAgICAgICAvKiBbaW5d
ICovIGludCAvKmNUeXBlcyovLAotICAgICAgICAvKiBbaW5dICovIElEYXRhT2JqZWN0KiAvKnBh
c3RlYm9hcmQqLykKK0hSRVNVTFQgV2ViVmlldzo6d3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2Fy
ZFR5cGVzKF9faW5vdXRfZWNvdW50X2Z1bGwoY1R5cGVzKSBCU1RSKiB0eXBlcywgaW50IGNUeXBl
cywgX0luX29wdF8gSURhdGFPYmplY3QqIC8qcGFzdGVib2FyZCovKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlYm9hcmRUeXBlc0ZvckVsZW1lbnQoIAotICAg
IC8qIFtpbl0gKi8gSVByb3BlcnR5QmFnKiAvKmVsZW1lbnREaWN0aW9uYXJ5Ki8sCi0gICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRW51bVZBUklBTlQqKiAvKmVudW1WYXJpYW50Ki8pCitIUkVTVUxU
IFdlYlZpZXc6OnBhc3RlYm9hcmRUeXBlc0ZvckVsZW1lbnQoX0luX29wdF8gSVByb3BlcnR5QmFn
KiAvKmVsZW1lbnREaWN0aW9uYXJ5Ki8sIF9DT01fT3V0cHRyX29wdF8gSUVudW1WQVJJQU5UKiog
ZW51bVZhcmlhbnQpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFlbnVt
VmFyaWFudCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZW51bVZhcmlhbnQgPSBu
dWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OndyaXRlRWxlbWVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVBy
b3BlcnR5QmFnKiAvKmVsZW1lbnREaWN0aW9uYXJ5Ki8sCi0gICAgICAgIC8qIFtzaXplX2lzXVtp
bl0gKi8gQlNUUiogLyp3aXRoUGFzdGVib2FyZFR5cGVzKi8sCi0gICAgICAgIC8qIFtpbl0gKi8g
aW50IC8qY1dpdGhQYXN0ZWJvYXJkVHlwZXMqLywKLSAgICAgICAgLyogW2luXSAqLyBJRGF0YU9i
amVjdCogLypwYXN0ZWJvYXJkKi8pCitIUkVTVUxUIFdlYlZpZXc6OndyaXRlRWxlbWVudChfSW5f
b3B0XyBJUHJvcGVydHlCYWcqIC8qZWxlbWVudERpY3Rpb25hcnkqLywgX19pbm91dF9lY291bnRf
ZnVsbChjV2l0aFBhc3RlYm9hcmRUeXBlcykgQlNUUiogd2l0aFBhc3RlYm9hcmRUeXBlcywgaW50
IGNXaXRoUGFzdGVib2FyZFR5cGVzLCBfSW5fb3B0XyBJRGF0YU9iamVjdCogLypwYXN0ZWJvYXJk
Ki8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0ZWRUZXh0
KAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIEJTVFIqIHRleHQpCitIUkVTVUxUIFdlYlZp
ZXc6OnNlbGVjdGVkVGV4dChfRGVyZWZfb3B0X291dF8gQlNUUiogdGV4dCkKIHsKICAgICBpZiAo
IXRleHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAgICAgfQogCi0gICAgKnRleHQgPSAwOworICAgICp0ZXh0ID0gbnVsbHB0cjsK
IAogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3BhZ2UgPyAmbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSA6IDA7CiAgICAgaWYgKCFmb2N1c2VkRnJhbWUp
CkBAIC0zOTIyLDYwICszOTEwLDU0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6c2VsZWMKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKAotICAgICAgICAvKiBbaW5d
ICovIElVbmtub3duKiAvKiBzZW5kZXIgKi8pCitIUkVTVUxUIFdlYlZpZXc6OmNlbnRlclNlbGVj
dGlvbkluVmlzaWJsZUFyZWEoX0luX29wdF8gSVVua25vd24qIC8qIHNlbmRlciAqLykKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFtZSk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7
CiAKICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTY3JvbGxBbGln
bm1lbnQ6OmFsaWduQ2VudGVyQWx3YXlzKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om1vdmVEcmFnQ2FyZXRUb1BvaW50KCAKLSAg
ICAgICAgLyogW2luXSAqLyBMUFBPSU5UIC8qcG9pbnQqLykKK0hSRVNVTFQgV2ViVmlldzo6bW92
ZURyYWdDYXJldFRvUG9pbnQoX0luXyBMUFBPSU5UIC8qcG9pbnQqLykKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZW1vdmVEcmFnQ2FyZXQoIHZvaWQpCitIUkVTVUxU
IFdlYlZpZXc6OnJlbW92ZURyYWdDYXJldCgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6c2V0RHJhd3NCYWNrZ3JvdW5kKCAKLSAgICAgICAgLyogW2luXSAqLyBCT09M
IC8qZHJhd3NCYWNrZ3JvdW5kKi8pCitIUkVTVUxUIFdlYlZpZXc6OnNldERyYXdzQmFja2dyb3Vu
ZChCT09MIC8qZHJhd3NCYWNrZ3JvdW5kKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6ZHJhd3NCYWNrZ3JvdW5kKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiAvKmRyYXdzQmFja2dyb3VuZCovKQorSFJFU1VMVCBXZWJWaWV3OjpkcmF3c0JhY2tn
cm91bmQoX091dF8gQk9PTCogLypkcmF3c0JhY2tncm91bmQqLykKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRNYWluRnJhbWVVUkwoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgLyp1cmxTdHJpbmcqLykKK0hSRVNVTFQgV2ViVmlldzo6c2V0TWFpbkZyYW1lVVJM
KF9Jbl8gQlNUUiAvKnVybFN0cmluZyovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6Om1haW5GcmFtZVVSTCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogdXJsU3RyaW5nKQorSFJFU1VMVCBXZWJWaWV3OjptYWluRnJhbWVVUkwoX0RlcmVmX29wdF9v
dXRfIEJTVFIqIHVybFN0cmluZykKIHsKICAgICBpZiAoIXVybFN0cmluZykKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKIAogICAgIGlmICghbV9tYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBF
X0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKICAgICBDT01QdHI8SVdlYkRh
dGFTb3VyY2U+IGRhdGFTb3VyY2U7CiAKQEAgLTM5ODUsNyArMzk2Nyw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFpbkYKICAgICB9CiAKICAgICBpZiAoIWRhdGFTb3Vy
Y2UpIHsKLSAgICAgICAgKnVybFN0cmluZyA9IDA7CisgICAgICAgICp1cmxTdHJpbmcgPSBudWxs
cHRyOwogICAgICAgICByZXR1cm4gU19PSzsKICAgICB9CiAgICAgCkBAIC0zOTk5LDMxICszOTgx
LDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFpbkYKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFp
bkZyYW1lRG9jdW1lbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVu
dCoqIGRvY3VtZW50KQorSFJFU1VMVCBXZWJWaWV3OjptYWluRnJhbWVEb2N1bWVudChfQ09NX091
dHB0cl9vcHRfIElET01Eb2N1bWVudCoqIGRvY3VtZW50KQogewotICAgIGlmIChkb2N1bWVudCkK
LSAgICAgICAgKmRvY3VtZW50ID0gMDsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworCisgICAgKmRvY3VtZW50ID0gbnVsbHB0cjsKKwogICAgIGlmICghbV9t
YWluRnJhbWUpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5ET01Eb2N1bWVudChkb2N1bWVudCk7CiB9
CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om1haW5GcmFtZVRpdGxl
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnRpdGxlKi8pCitIUkVTVUxU
IFdlYlZpZXc6Om1haW5GcmFtZVRpdGxlKF9EZXJlZl9vcHRfb3V0XyBCU1RSKiAvKnRpdGxlKi8p
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0K
ICAgICAKLUhSRVNVTFQgV2ViVmlldzo6bWFpbkZyYW1lSWNvbigvKiBbcmV0dmFsXVtvdXRdICov
IEhCSVRNQVAqIC8qaEJpdG1hcCovKQorSFJFU1VMVCBXZWJWaWV3OjptYWluRnJhbWVJY29uKF9E
ZXJlZl9vcHRfb3V0XyBIQklUTUFQKiAvKmhCaXRtYXAqLykKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCggCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBzY2hlbWUpCitIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNM
b2NhbChfSW5fIEJTVFIgc2NoZW1lKQogewogICAgIGlmICghc2NoZW1lKQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwpAQCAtNDAzNSw1NiArNDAxNyw1MyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnJlZ2lzCiAKIC8vIElXZWJJQkFjdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dGFrZVN0cmluZ1VSTEZyb20oIAotICAgICAg
ICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3Ojp0YWtl
U3RyaW5nVVJMRnJvbShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzdG9wTG9hZGluZyggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OnN0b3BMb2FkaW5n
KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogewogICAgIGlmICghbV9tYWluRnJhbWUp
Ci0gICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAK
ICAgICByZXR1cm4gbV9tYWluRnJhbWUtPnN0b3BMb2FkaW5nKCk7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlbG9hZCggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OnJlbG9hZChfSW5fb3B0XyBJ
VW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBpZiAoIW1fbWFpbkZyYW1lKQotICAgICAgICBy
ZXR1cm4gRV9GQUlMOworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgcmV0dXJu
IG1fbWFpbkZyYW1lLT5yZWxvYWQoKTsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6Y2FuR29CYWNrKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypz
ZW5kZXIqLywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCitIUkVT
VUxUIFdlYlZpZXc6OmNhbkdvQmFjayhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLywgX091
dF8gQk9PTCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworCiAgICAgKnJlc3VsdCA9ICEhKG1fcGFnZS0+YmFja0ZvcndhcmQoKS5iYWNrSXRl
bSgpICYmICFtX3BhZ2UtPmRlZmVyc0xvYWRpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAg
ICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmdvQmFjayggCi0gICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OmdvQmFj
ayhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpjYW5Hb0ZvcndhcmQoIAotICAgICAgICAvKiBbaW5dICovIElVbmtu
b3duKiAvKnNlbmRlciovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCkKK0hSRVNVTFQgV2ViVmlldzo6Y2FuR29Gb3J3YXJkKF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CisgICAgCiAgICAgKnJlc3VsdCA9ICEhKG1fcGFnZS0+YmFja0Zv
cndhcmQoKS5mb3J3YXJkSXRlbSgpICYmICFtX3BhZ2UtPmRlZmVyc0xvYWRpbmcoKSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmdvRm9yd2FyZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmdvRm9yd2FyZChfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gRV9OT1RJTVBMOwpAQCAtNDA5NSwxOSArNDA3NCwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OmdvRm9yCiAjZGVmaW5lIE1heGltdW1ab29tTXVsdGlwbGllciAgIDMu
MGYKICNkZWZpbmUgWm9vbU11bHRpcGxpZXJSYXRpbyAgICAgMS4yZgogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OmNhbk1ha2VUZXh0TGFyZ2VyKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJVW5rbm93biogLypzZW5kZXIqLywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiByZXN1bHQpCitIUkVTVUxUIFdlYlZpZXc6OmNhbk1ha2VUZXh0TGFyZ2VyKF9Jbl9vcHRf
IElVbmtub3duKiAvKnNlbmRlciovLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICBib29sIGNhbkdyb3dNb3Jl
ID0gY2FuWm9vbUluKG1fem9vbXNUZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3Jl
ID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OmNhblpvb21QYWdlSW4oIAotICAgICAgICAvKiBbaW5dICovIElV
bmtub3duKiAvKnNlbmRlciovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJl
c3VsdCkKK0hSRVNVTFQgV2ViVmlldzo6Y2FuWm9vbVBhZ2VJbihfSW5fb3B0XyBJVW5rbm93biog
LypzZW5kZXIqLywgX091dF8gQk9PTCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgYm9vbCBjYW5Hcm93TW9yZSA9IGNhblpvb21J
bihmYWxzZSk7CiAgICAgKnJlc3VsdCA9IGNhbkdyb3dNb3JlID8gVFJVRSA6IEZBTFNFOwogICAg
IHJldHVybiBTX09LOwpAQCAtNDExOCwxNCArNDA5OSwxMiBAQCBib29sIFdlYlZpZXc6OmNhblpv
b21Jbihib29sIGlzVGV4dE9ubHkpCiAgICAgcmV0dXJuIHpvb21NdWx0aXBsaWVyKGlzVGV4dE9u
bHkpICogWm9vbU11bHRpcGxpZXJSYXRpbyA8IE1heGltdW1ab29tTXVsdGlwbGllcjsKIH0KICAg
ICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFrZVRleHRMYXJnZXIoIAot
ICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3
OjptYWtlVGV4dExhcmdlcihfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBy
ZXR1cm4gem9vbUluKG1fem9vbXNUZXh0T25seSk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6em9vbVBhZ2VJbiggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24q
IC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6Onpvb21QYWdlSW4oX0luX29wdF8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiB7CiAgICAgcmV0dXJuIHpvb21JbihmYWxzZSk7CiB9CkBAIC00MTM4
LDE5ICs0MTE3LDIxIEBAIEhSRVNVTFQgV2ViVmlldzo6em9vbUluKGJvb2wgaXNUZXh0T25seSkK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpjYW5NYWtlVGV4dFNtYWxsZXIoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNl
bmRlciovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNV
TFQgV2ViVmlldzo6Y2FuTWFrZVRleHRTbWFsbGVyKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisKICAgICBib29sIGNhblNocmlua01vcmUgPSBjYW5ab29tT3V0KG1f
em9vbXNUZXh0T25seSk7CiAgICAgKnJlc3VsdCA9IGNhblNocmlua01vcmUgPyBUUlVFIDogRkFM
U0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6Y2FuWm9vbVBhZ2VPdXQoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNl
bmRlciovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNV
TFQgV2ViVmlldzo6Y2FuWm9vbVBhZ2VPdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8s
IF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKwogICAgIGJvb2wgY2FuU2hyaW5rTW9yZSA9IGNhblpvb21PdXQoZmFsc2Up
OwogICAgICpyZXN1bHQgPSBjYW5TaHJpbmtNb3JlID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVy
biBTX09LOwpAQCAtNDE2MSwxNCArNDE0MiwxMiBAQCBib29sIFdlYlZpZXc6OmNhblpvb21PdXQo
Ym9vbCBpc1RleHRPbmx5CiAgICAgcmV0dXJuIHpvb21NdWx0aXBsaWVyKGlzVGV4dE9ubHkpIC8g
Wm9vbU11bHRpcGxpZXJSYXRpbyA+IE1pbmltdW1ab29tTXVsdGlwbGllcjsKIH0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjptYWtlVGV4dFNtYWxsZXIoIAotICAgICAgICAv
KiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3OjptYWtlVGV4
dFNtYWxsZXIoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7CiAgICAgcmV0dXJuIHpv
b21PdXQobV96b29tc1RleHRPbmx5KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojp6b29tUGFnZU91dCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2Vu
ZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6Onpvb21QYWdlT3V0KF9Jbl9vcHRfIElVbmtub3duKiAv
KnNlbmRlciovKQogewogICAgIHJldHVybiB6b29tT3V0KGZhbHNlKTsKIH0KQEAgLTQxODEsMjAg
KzQxNjAsMjIgQEAgSFJFU1VMVCBXZWJWaWV3Ojp6b29tT3V0KGJvb2wgaXNUZXh0T25seQogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNh
bk1ha2VUZXh0U3RhbmRhcmRTaXplKCAKLSAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRl
ciovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQorSFJFU1VMVCBXZWJW
aWV3OjpjYW5NYWtlVGV4dFN0YW5kYXJkU2l6ZShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIq
LywgX091dF8gQk9PTCogcmVzdWx0KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworCiAgICAgLy8gU2luY2Ugd2UgYWx3YXlzIHJlc2V0IHRleHQgem9vbSBh
bmQgcGFnZSB6b29tIHRvZ2V0aGVyLCB0aGlzIHNob3VsZCBjb250aW51ZSB0byByZXR1cm4gYW4g
YW5zd2VyIGFib3V0IHRleHQgem9vbSBldmVuIGlmIGl0cyBub3QgZW5hYmxlZC4KICAgICBib29s
IG5vdEFscmVhZHlTdGFuZGFyZCA9IGNhblJlc2V0Wm9vbSh0cnVlKTsKICAgICAqcmVzdWx0ID0g
bm90QWxyZWFkeVN0YW5kYXJkID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNhblJlc2V0UGFnZVpvb20oIAot
ICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8sCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiByZXN1bHQpCitIUkVTVUxUIFdlYlZpZXc6OmNhblJlc2V0UGFnZVpvb20oX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8sIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIGJvb2wgbm90QWxy
ZWFkeVN0YW5kYXJkID0gY2FuUmVzZXRab29tKGZhbHNlKTsKICAgICAqcmVzdWx0ID0gbm90QWxy
ZWFkeVN0YW5kYXJkID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwpAQCAtNDIwNSwx
NCArNDE4NiwxMiBAQCBib29sIFdlYlZpZXc6OmNhblJlc2V0Wm9vbShib29sIGlzVGV4dE9uCiAg
ICAgcmV0dXJuIHpvb21NdWx0aXBsaWVyKGlzVGV4dE9ubHkpICE9IDEuMGY7CiB9CiAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWFrZVRleHRTdGFuZGFyZFNpemUoIAotICAg
IC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6Om1ha2VU
ZXh0U3RhbmRhcmRTaXplKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogewogICAgIHJl
dHVybiByZXNldFpvb20odHJ1ZSk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6cmVzZXRQYWdlWm9vbSggCi0gICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIq
LykKK0hSRVNVTFQgV2ViVmlldzo6cmVzZXRQYWdlWm9vbShfSW5fb3B0XyBJVW5rbm93biogLypz
ZW5kZXIqLykKIHsKICAgICByZXR1cm4gcmVzZXRab29tKGZhbHNlKTsKIH0KQEAgLTQyMjUsOCAr
NDIwNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVzZXRab29tKGJvb2wgaXNUZXh0T24KICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp0b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZyggCi0gICAgLyogW2luXSAqLyBJVW5rbm93biogLypz
ZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmco
X0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7CiAgICAgSFJFU1VMVCBocjsKICAgICBC
T09MIGVuYWJsZWQ7CkBAIC00MjM1LDggKzQyMTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnRvZ2dsCiAgICAgcmV0dXJuIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZChlbmFibGVkID8gRkFMU0UgOiBUUlVFKTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSggCi0gICAgLyogW2luXSAq
LyBJVW5rbm93biogLypzZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6dG9nZ2xlU21hcnRJbnNl
cnREZWxldGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7CiAgICAgQk9PTCBlbmFi
bGVkID0gRkFMU0U7CiAgICAgSFJFU1VMVCBociA9IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgm
ZW5hYmxlZCk7CkBAIC00MjQ2LDggKzQyMjMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OnRvZ2dsCiAgICAgcmV0dXJuIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChl
bmFibGVkID8gRkFMU0UgOiBUUlVFKTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoIAotICAgIC8qIFtpbl0gKi8gSVVua25vd24q
IC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OnRvZ2dsZUdyYW1tYXJDaGVja2luZyhfSW5f
b3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBCT09MIGVuYWJsZWQ7CiAgICAgSFJF
U1VMVCBociA9IGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgmZW5hYmxlZCk7CkBAIC00MjU3LDUy
ICs0MjMzLDUyIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dG9nZ2wKICAg
ICByZXR1cm4gc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChlbmFibGVkID8gRkFMU0UgOiBUUlVF
KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZWxvYWRGcm9tT3Jp
Z2luKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hSRVNVTFQg
V2ViVmlldzo6cmVsb2FkRnJvbU9yaWdpbihfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykK
IHsKICAgICBpZiAoIW1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAg
ICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5yZWxvYWRG
cm9tT3JpZ2luKCk7CiB9CiAKIC8vIElXZWJWaWV3Q1NTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29tcHV0ZWRTdHlsZUZvckVsZW1lbnQoIAotICAgICAg
ICAvKiBbaW5dICovIElET01FbGVtZW50KiAvKmVsZW1lbnQqLywKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIC8qcHNldWRvRWxlbWVudCovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01DU1NTdHlsZURlY2xhcmF0aW9uKiogLypzdHlsZSovKQorSFJFU1VMVCBXZWJWaWV3Ojpjb21w
dXRlZFN0eWxlRm9yRWxlbWVudChfSW5fb3B0XyBJRE9NRWxlbWVudCogLyplbGVtZW50Ki8sIF9J
bl8gQlNUUiAvKnBzZXVkb0VsZW1lbnQqLywgX0NPTV9PdXRwdHJfb3B0XyBJRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbioqIHN0eWxlKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlm
ICghc3R5bGUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnN0eWxlID0gbnVsbHB0
cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAvLyBJV2ViVmlld0VkaXRpbmcgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmVkaXRhYmxlRE9NUmFuZ2VGb3JQ
b2ludCggCi0gICAgICAgIC8qIFtpbl0gKi8gTFBQT0lOVCAvKnBvaW50Ki8sCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTVJhbmdlKiogLypyYW5nZSovKQorSFJFU1VMVCBXZWJWaWV3
OjplZGl0YWJsZURPTVJhbmdlRm9yUG9pbnQoX0luXyBMUFBPSU5UIC8qcG9pbnQqLywgX0NPTV9P
dXRwdHJfb3B0XyBJRE9NUmFuZ2UqKiByYW5nZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpyYW5n
ZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0U2VsZWN0ZWRET01SYW5nZSggCi0gICAgICAgIC8q
IFtpbl0gKi8gSURPTVJhbmdlKiAvKnJhbmdlKi8sCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViU2Vs
ZWN0aW9uQWZmaW5pdHkgLyphZmZpbml0eSovKQorSFJFU1VMVCBXZWJWaWV3OjpzZXRTZWxlY3Rl
ZERPTVJhbmdlKF9Jbl9vcHRfIElET01SYW5nZSogLypyYW5nZSovLCAgV2ViU2VsZWN0aW9uQWZm
aW5pdHkgLyphZmZpbml0eSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFdlYlZpZXc6OnNlbGVjdGVkRE9NUmFu
Z2UoSURPTVJhbmdlKiogcmFuZ2UpCitIUkVTVUxUIFdlYlZpZXc6OnNlbGVjdGVkRE9NUmFuZ2Uo
X0NPTV9PdXRwdHJfb3B0XyBJRE9NUmFuZ2UqKiByYW5nZSkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAg
ICpyYW5nZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0aW9uQWZmaW5pdHkoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdW3JldHZhbF1bb3V0XSAqLyBXZWJTZWxlY3Rpb25BZmZpbml0eSog
LyphZmZpbml0eSovKQorSFJFU1VMVCBXZWJWaWV3OjpzZWxlY3Rpb25BZmZpbml0eShfT3V0XyBX
ZWJTZWxlY3Rpb25BZmZpbml0eSopCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEVfTk9USU1QTDsKQEAgLTQzMjMsNyArNDI5OSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
c2V0RWRpdGFibGUoQk9PTCBmbGFnKQogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VM
VCBXZWJWaWV3Ojppc0VkaXRhYmxlKEJPT0wqIGlzRWRpdGFibGUpCitIUkVTVUxUIFdlYlZpZXc6
OmlzRWRpdGFibGUoX091dF8gQk9PTCogaXNFZGl0YWJsZSkKIHsKICAgICBpZiAoIWlzRWRpdGFi
bGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC00MzM4LDIyICs0MzE0LDIyIEBAIEhS
RVNVTFQgV2ViVmlldzo6aXNFZGl0YWJsZShCT09MKiBpc0VkaXQKICAgICByZXR1cm4gU19PSzsK
IH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0VHlwaW5nU3R5
bGUoIAotICAgICAgICAvKiBbaW5dICovIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiAvKnN0eWxl
Ki8pCitIUkVTVUxUIFdlYlZpZXc6OnNldFR5cGluZ1N0eWxlKF9Jbl9vcHRfIElET01DU1NTdHls
ZURlY2xhcmF0aW9uKiAvKnN0eWxlKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6dHlwaW5nU3R5bGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01D
U1NTdHlsZURlY2xhcmF0aW9uKiogLypzdHlsZSovKQorSFJFU1VMVCBXZWJWaWV3Ojp0eXBpbmdT
dHlsZShfQ09NX091dHB0cl9vcHRfIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiogc3R5bGUpCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyAgICAqc3R5bGUgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmbGFnKQorSFJF
U1VMVCBXZWJWaWV3OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoQk9PTCBmbGFnKQogewog
ICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCkuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgIT0g
ISFmbGFnKSB7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoISFmbGFnKTsKQEAgLTQzNjIsMTYgKzQzMzgsMjAgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRTbQogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdl
YlZpZXc6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQogewor
ICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgICplbmFi
bGVkID0gbV9wYWdlLT5zZXR0aW5ncygpLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpID8gVFJV
RSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQogIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MIGZsYWcpCitIUkVTVUxUIFdlYlZpZXc6OnNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoQk9PTCBmbGFnKQogeworICAgIGlmICghbV9wYWdlKQorICAg
ICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgaWYgKG1fcGFnZS0+c2V0dGluZ3MoKS5zZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgIT0gISFmbGFnKSB7CiAgICAgICAgIG1fcGFnZS0+
c2V0dGluZ3MoKS5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCEhZmxhZyk7CiAg
ICAgICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCghZmxhZyk7CkBAIC00Mzc5LDE1ICs0
MzU5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0U2UKICAgICBy
ZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiBlbmFibGVkKQorSFJFU1VMVCBXZWJWaWV3Ojppc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKKyAgICBpZiAoIWVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICAqZW5hYmxlZCA9IG1fcGFnZS0+
c2V0dGluZ3MoKS5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgPyBUUlVFIDogRkFM
U0U7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCAKLSAgICAgICAgLyogW2lu
XSAqLyBCT09MIGZsYWcpCitIUkVTVUxUIFdlYlZpZXc6OnNldENvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChCT09MIGZsYWcpCiB7CiAgICAgaWYgKGNvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZCAhPSAhIWZsYWcpIHsKICAgICAgICAgY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkID0gISFmbGFnOwpAQCAtNDQwNSwxNiArNDM4NiwyMCBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnNldENvCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQorSFJFU1VM
VCBXZWJWaWV3Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChfT3V0XyBCT09MKiBl
bmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KwogICAgICplbmFibGVkID0gKGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCAmJiBjb250
aW51b3VzQ2hlY2tpbmdBbGxvd2VkKCkpID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09L
OwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiB0YWcpCitI
UkVTVUxUIFdlYlZpZXc6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKF9PdXRfIGludCogdGFnKQog
eworICAgIGlmICghdGFnKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgLy8gd2Ug
anVzdCB1c2UgdGhpcyBhcyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3ZSd2ZSBzcGVsbCBjaGVj
a2VkIHRoZSBkb2N1bWVudAogICAgIC8vIGFuZCBuZWVkIHRvIGNsb3NlIHRoZSBzcGVsbCBjaGVj
a2VyIG91dCB3aGVuIHRoZSB2aWV3IGNsb3Nlcy4KICAgICAqdGFnID0gMDsKQEAgLTQ0NjYsMTQg
KzQ0NTEsMTYgQEAgYm9vbCBXZWJWaWV3Ojpjb250aW51b3VzQ2hlY2tpbmdBbGxvd2VkKAogICAg
IHJldHVybiBhbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5nOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnVuZG9NYW5hZ2VyKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJV2ViVW5kb01hbmFnZXIqKiAvKm1hbmFnZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6
dW5kb01hbmFnZXIoX0NPTV9PdXRwdHJfb3B0XyBJV2ViVW5kb01hbmFnZXIqKiBtYW5hZ2VyKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghbWFuYWdlcikKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqbWFuYWdlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgV2ViVmlldzo6c2V0RWRpdGluZ0RlbGVnYXRlKElX
ZWJFZGl0aW5nRGVsZWdhdGUqIGQpCitIUkVTVUxUIFdlYlZpZXc6OnNldEVkaXRpbmdEZWxlZ2F0
ZShfSW5fb3B0XyBJV2ViRWRpdGluZ0RlbGVnYXRlKiBkKQogewogICAgIGlmIChtX2VkaXRpbmdE
ZWxlZ2F0ZSA9PSBkKQogICAgICAgICByZXR1cm4gU19PSzsKQEAgLTQ1MDksOCArNDQ5Niw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6c2V0RWRpdGluZ0RlbGVnYXRlKElXZWIKICAgICByZXR1cm4gU19P
SzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZWRpdGluZ0Rl
bGVnYXRlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViRWRpdGluZ0RlbGVnYXRl
KiogZCkKK0hSRVNVTFQgV2ViVmlldzo6ZWRpdGluZ0RlbGVnYXRlKF9DT01fT3V0cHRyX29wdF8g
SVdlYkVkaXRpbmdEZWxlZ2F0ZSoqIGQpCiB7CiAgICAgaWYgKCFkKSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDUyNSw2OCArNDUxMSw4MiBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OmVkaXRpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnN0eWxlRGVjbGFyYXRpb25XaXRoVGV4dCgg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKnRleHQqLywKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioqIC8qc3R5bGUqLykKK0hSRVNVTFQgV2Vi
Vmlldzo6c3R5bGVEZWNsYXJhdGlvbldpdGhUZXh0KF9Jbl8gQlNUUiAvKnRleHQqLywgX0NPTV9P
dXRwdHJfb3B0XyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioqIHN0eWxlKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghc3R5bGUpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKnN0eWxlID0gbnVsbHB0cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpoYXNTZWxlY3RlZFJhbmdlKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBoYXNTZWxlY3RlZFJhbmdlKQorSFJF
U1VMVCBXZWJWaWV3OjpoYXNTZWxlY3RlZFJhbmdlKF9PdXRfIEJPT0wqIGhhc1NlbGVjdGVkUmFu
Z2UpCiB7CisgICAgaWYgKCFoYXNTZWxlY3RlZFJhbmdlKQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworCiAgICAgKmhhc1NlbGVjdGVkUmFuZ2UgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnNlbGVj
dGlvbigpLmlzUmFuZ2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3V0RW5hYmxlZCggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViVmlldzo6Y3V0RW5hYmxlZChfT3V0
XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKKwogICAgIEVkaXRvciYgZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKTsKICAgICAqZW5hYmxlZCA9IGVkaXRvci5j
YW5DdXQoKSB8fCBlZGl0b3IuY2FuREhUTUxDdXQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAg
ICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29weUVuYWJsZWQoIAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlZpZXc6
OmNvcHlFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgRWRpdG9yJiBlZGl0b3IgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpOwogICAgICpl
bmFibGVkID0gZWRpdG9yLmNhbkNvcHkoKSB8fCBlZGl0b3IuY2FuREhUTUxDb3B5KCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OnBhc3RlRW5hYmxlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxl
ZCkKK0hSRVNVTFQgV2ViVmlldzo6cGFzdGVFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7
CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgRWRp
dG9yJiBlZGl0b3IgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpOwogICAgICplbmFibGVkID0gZWRpdG9yLmNhblBhc3RlKCkgfHwgZWRpdG9y
LmNhbkRIVE1MUGFzdGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlRW5hYmxlZCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViVmlldzo6ZGVsZXRlRW5hYmxl
ZChfT3V0XyBCT09MKiBlbmFibGVkKQogeworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKwogICAgICplbmFibGVkID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jYW5EZWxldGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZWRpdGlu
Z0VuYWJsZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCitI
UkVTVUxUIFdlYlZpZXc6OmVkaXRpbmdFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7Cisg
ICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgKmVuYWJs
ZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNhbkVkaXQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojppc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoIAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViVmlldzo6aXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CisgICAgaWYgKCFlbmFibGVkKQor
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCiAgICAgKmVuYWJsZWQgPSBncmFtbWFyQ2hlY2tp
bmdFbmFibGVkID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQoIAot
ICAgIEJPT0wgZW5hYmxlZCkKK0hSRVNVTFQgV2ViVmlldzo6c2V0R3JhbW1hckNoZWNraW5nRW5h
YmxlZChCT09MIGVuYWJsZWQpCiB7CiAgICAgaWYgKCFtX2VkaXRpbmdEZWxlZ2F0ZSkgewogICAg
ICAgICBMT0dfRVJST1IoIk5vIE5TU3BlbGxDaGVja2VyIik7CkBAIC00NjE1LDUxICs0NjE1LDU1
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0R3IKIAogLy8gSVdlYlZp
ZXdVbmRvYWJsZUVkaXRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZXBs
YWNlU2VsZWN0aW9uV2l0aE5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiAvKm5v
ZGUqLykKK0hSRVNVTFQgV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhOb2RlKF9Jbl9vcHRf
IElET01Ob2RlKiAvKm5vZGUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIg
dGV4dCkKK0hSRVNVTFQgV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KF9Jbl8gQlNU
UiB0ZXh0KQogeworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCiAg
ICAgUG9zaXRpb24gc3RhcnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCk7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5pbnNlcnRUZXh0KHRvU3RyaW5nKHRleHQpLCAwKTsKICAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnNldEJhc2Uoc3RhcnQpOwogICAgIHJldHVy
biBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZXBs
YWNlU2VsZWN0aW9uV2l0aE1hcmt1cFN0cmluZyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAv
Km1hcmt1cFN0cmluZyovKQorSFJFU1VMVCBXZWJWaWV3OjpyZXBsYWNlU2VsZWN0aW9uV2l0aE1h
cmt1cFN0cmluZyhfSW5fIEJTVFIgLyptYXJrdXBTdHJpbmcqLykKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZXBsYWNlU2VsZWN0aW9uV2l0aEFyY2hpdmUoIAotICAg
ICAgICAvKiBbaW5dICovIElXZWJBcmNoaXZlKiAvKmFyY2hpdmUqLykKK0hSRVNVTFQgV2ViVmll
dzo6cmVwbGFjZVNlbGVjdGlvbldpdGhBcmNoaXZlKF9Jbl9vcHRfIElXZWJBcmNoaXZlKiAvKmFy
Y2hpdmUqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpkZWxldGVT
ZWxlY3Rpb24oIHZvaWQpCitIUkVTVUxUIFdlYlZpZXc6OmRlbGV0ZVNlbGVjdGlvbigpCiB7Cisg
ICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKICAgICBFZGl0b3ImIGVk
aXRvciA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCk7CiAgICAgZWRpdG9yLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShlZGl0b3Iu
Y2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2xlYXJTZWxlY3Rpb24oIHZvaWQpCitIUkVTVUxU
IFdlYlZpZXc6OmNsZWFyU2VsZWN0aW9uKCkKIHsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAg
cmV0dXJuIEVfRkFJTDsKKwogICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuY2xlYXIoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAg
ICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6YXBwbHlTdHlsZSggCi0gICAg
ICAgIC8qIFtpbl0gKi8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qIC8qc3R5bGUqLykKK0hSRVNV
TFQgV2ViVmlldzo6YXBwbHlTdHlsZShfSW5fb3B0XyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiog
LypzdHlsZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05P
VElNUEw7CkBAIC00NjY3LDEyOCArNDY3MSwxMjQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjphcHBseQogCiAvLyBJV2ViVmlld0VkaXRpbmdBY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvcHkoIAotICAgICAgICAvKiBbaW5dICovIElVbmtu
b3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3du
KiAvKnNlbmRlciovKQogeworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRV9GQUlM
OworCiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmN1dCggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0
XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuIEVfRkFJTDsKKwogICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6
cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7CisgICAgaWYgKCFtX3BhZ2Up
CisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgp
OwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OmNvcHlVUkwoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsKQorSFJFU1VMVCBXZWJW
aWV3Ojpjb3B5VVJMKF9Jbl8gQlNUUiB1cmwpCiB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAg
IHJldHVybiBFX0ZBSUw7CisKICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9L
VVJMKHVybCksICIiKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotCi1IUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OmNvcHlGb250KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93
biogLypzZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6Y29weUZvbnQoX0luX29wdF8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
cGFzdGVGb250KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hS
RVNVTFQgV2ViVmlldzo6cGFzdGVGb250KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAg
ICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmRlbGV0ZV8oIAotICAgICAg
ICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3OjpkZWxl
dGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogeworICAgIGlmICghbV9wYWdlKQor
ICAgICAgICByZXR1cm4gRV9GQUlMOworCiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OnBhc3RlQXNQbGFpblRleHQoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAv
KnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3OjpwYXN0ZUFzUGxhaW5UZXh0KF9Jbl9vcHRfIElV
bmtub3duKiAvKnNlbmRlciovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OnBhc3RlQXNSaWNoVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2Vu
ZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OnBhc3RlQXNSaWNoVGV4dChfSW5fb3B0XyBJVW5rbm93
biogLypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpj
aGFuZ2VGb250KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hS
RVNVTFQgV2ViVmlldzo6Y2hhbmdlRm9udChfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
ICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjaGFuZ2VBdHRyaWJ1dGVz
KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hSRVNVTFQgV2Vi
Vmlldzo6Y2hhbmdlQXR0cmlidXRlcyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjaGFuZ2VEb2N1bWVudEJhY2tn
cm91bmRDb2xvciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitI
UkVTVUxUIFdlYlZpZXc6OmNoYW5nZURvY3VtZW50QmFja2dyb3VuZENvbG9yKF9Jbl9vcHRfIElV
bmtub3duKiAvKnNlbmRlciovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OmNoYW5nZUNvbG9yKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIq
LykKK0hSRVNVTFQgV2ViVmlldzo6Y2hhbmdlQ29sb3IoX0luX29wdF8gSVVua25vd24qIC8qc2Vu
ZGVyKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6YWxpZ25DZW50
ZXIoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBX
ZWJWaWV3OjphbGlnbkNlbnRlcihfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjphbGlnbkp1c3RpZmllZCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OmFs
aWduSnVzdGlmaWVkKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmFsaWduTGVmdCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVVua25vd24qIC8qc2VuZGVyKi8pCitIUkVTVUxUIFdlYlZpZXc6OmFsaWduTGVmdChfSW5f
b3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjphbGlnblJpZ2h0KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypz
ZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6YWxpZ25SaWdodChfSW5fb3B0XyBJVW5rbm93biog
LypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjaGVj
a1NwZWxsaW5nKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hS
RVNVTFQgV2ViVmlldzo6Y2hlY2tTcGVsbGluZyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIq
LykKIHsKICAgICBpZiAoIW1fZWRpdGluZ0RlbGVnYXRlKSB7CiAgICAgICAgIExPR19FUlJPUigi
Tm8gTlNTcGVsbENoZWNrZXIiKTsKQEAgLTQ3OTksOCArNDc5OSw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2hlY2sKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2hvd0d1ZXNzUGFuZWwoIAotICAgICAg
ICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3OjpzaG93
R3Vlc3NQYW5lbChfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBpZiAoIW1f
ZWRpdGluZ0RlbGVnYXRlKSB7CiAgICAgICAgIExPR19FUlJPUigiTm8gTlNTcGVsbENoZWNrZXIi
KTsKQEAgLTQ4MTksMjIgKzQ4MTgsMTkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpzaG93RwogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpwZXJmb3JtRmluZFBhbmVsQWN0aW9uKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6cGVyZm9ybUZpbmRQ
YW5lbEFjdGlvbihfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzdGFydFNwZWFraW5nKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKK0hSRVNVTFQgV2ViVmlldzo6c3RhcnRTcGVha2lu
ZyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzdG9wU3BlYWtpbmcoIAotICAgICAgICAvKiBbaW5dICovIElVbmtu
b3duKiAvKnNlbmRlciovKQorSFJFU1VMVCBXZWJWaWV3OjpzdG9wU3BlYWtpbmcoX0luX29wdF8g
SVVua25vd24qIC8qc2VuZGVyKi8pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIEVfTk9USU1QTDsKQEAgLTQ4NDIsOSArNDgzOCwxMSBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OnN0b3BTCiAKIC8vIElXZWJOb3RpZmljYXRpb25PYnNlcnZlciAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Om9uTm90aWZ5KCAK
LSAgICAvKiBbaW5dICovIElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK0hSRVNVTFQg
V2ViVmlldzo6b25Ob3RpZnkoX0luX29wdF8gSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQogeworICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
CiAgICAgQlN0cmluZyBuYW1lOwogICAgIEhSRVNVTFQgaHIgPSBub3RpZmljYXRpb24tPm5hbWUo
Jm5hbWUpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtNDg2MSw2ICs0ODU5LDkgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpvbk5vdAogCiBIUkVTVUxUIFdlYlZpZXc6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7
CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKICAgICBIUkVTVUxU
IGhyOwogCiAgICAgQ09NUHRyPElVbmtub3duPiB1bmtQcmVmczsKQEAgLTQ4NzcsNyArNDg3OCw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICBCU3RyaW5n
IHN0cjsKICAgICBpbnQgc2l6ZTsKICAgICB1bnNpZ25lZCBqYXZhU2NyaXB0UnVudGltZUZsYWdz
OwotICAgIEJPT0wgZW5hYmxlZDsKKyAgICBCT09MIGVuYWJsZWQgPSBGQUxTRTsKIAogICAgIFNl
dHRpbmdzJiBzZXR0aW5ncyA9IG1fcGFnZS0+c2V0dGluZ3MoKTsKIApAQCAtNTI4NCw5ICs1Mjg1
LDcgQEAgSFJFU1VMVCB1cGRhdGVTaGFyZWRTZXR0aW5nc0Zyb21QcmVmZXJlbgogCiAvLyBJV2Vi
Vmlld1ByaXZhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6TUlN
RVR5cGVGb3JFeHRlbnNpb24oCi0gICAgLyogW2luXSAqLyBCU1RSIGV4dGVuc2lvbiwKLSAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIG1pbWVUeXBlKQorSFJFU1VMVCBXZWJWaWV3OjpNSU1F
VHlwZUZvckV4dGVuc2lvbihfSW5fIEJTVFIgZXh0ZW5zaW9uLCBfRGVyZWZfb3B0X291dF8gQlNU
UiogbWltZVR5cGUpCiB7CiAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKQEAgLTUyOTYsOCArNTI5NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6TUlNRVQKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3OjpzZXRDdXN0b21Ecm9wVGFyZ2V0KAotICAgIC8qIFtpbl0gKi8gSURyb3BU
YXJnZXQqIGR0KQorSFJFU1VMVCBXZWJWaWV3OjpzZXRDdXN0b21Ecm9wVGFyZ2V0KF9Jbl9vcHRf
IElEcm9wVGFyZ2V0KiBkdCkKIHsKICAgICBBU1NFUlQoOjpJc1dpbmRvdyhtX3ZpZXdXaW5kb3cp
KTsKICAgICBpZiAoIWR0KQpAQCAtNTMwNyw3ICs1MzA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzZXRDdQogICAgIHJldHVybiA6OlJlZ2lzdGVyRHJhZ0Ryb3AobV92
aWV3V2luZG93LGR0KTsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpy
ZW1vdmVDdXN0b21Ecm9wVGFyZ2V0KCkKK0hSRVNVTFQgV2ViVmlldzo6cmVtb3ZlQ3VzdG9tRHJv
cFRhcmdldCgpCiB7CiAgICAgaWYgKCFtX2hhc0N1c3RvbURyb3BUYXJnZXQpCiAgICAgICAgIHJl
dHVybiBTX09LOwpAQCAtNTMxNiw0MiArNTMxNCw0MyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnJlbW92CiAgICAgcmV0dXJuIHJlZ2lzdGVyRHJhZ0Ryb3AoKTsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRJblZpZXdTb3VyY2VNb2RlKCAK
LSAgICAgICAgLyogW2luXSAqLyBCT09MIGZsYWcpCitIUkVTVUxUIFdlYlZpZXc6OnNldEluVmll
d1NvdXJjZU1vZGUoQk9PTCkKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjppblZpZXdTb3VyY2VNb2RlKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBmbGFnKQorSFJFU1VMVCBXZWJWaWV3OjppblZp
ZXdTb3VyY2VNb2RlKF9PdXRfIEJPT0wqKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAK
LUhSRVNVTFQgV2ViVmlldzo6dmlld1dpbmRvdygvKiBbcmV0dmFsXVtvdXRdICovIEhXTkQqIHdp
bmRvdykKK0hSRVNVTFQgV2ViVmlldzo6dmlld1dpbmRvdyhfRGVyZWZfb3B0X291dF8gSFdORCog
d2luZG93KQogeworICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
CiAgICAgKndpbmRvdyA9IG1fdmlld1dpbmRvdzsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRGb3JtRGVsZWdhdGUoIAotICAgIC8q
IFtpbl0gKi8gSVdlYkZvcm1EZWxlZ2F0ZSAqZm9ybURlbGVnYXRlKQorSFJFU1VMVCBXZWJWaWV3
OjpzZXRGb3JtRGVsZWdhdGUoX0luX29wdF8gSVdlYkZvcm1EZWxlZ2F0ZSogZm9ybURlbGVnYXRl
KQogewogICAgIG1fZm9ybURlbGVnYXRlID0gZm9ybURlbGVnYXRlOwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmZvcm1EZWxlZ2F0ZSgg
Ci0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViRm9ybURlbGVnYXRlICoqZm9ybURlbGVnYXRl
KQorSFJFU1VMVCBXZWJWaWV3Ojpmb3JtRGVsZWdhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRm9y
bURlbGVnYXRlKiogZm9ybURlbGVnYXRlKQogeworICAgIGlmICghZm9ybURlbGVnYXRlKQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpmb3JtRGVsZWdhdGUgPSBudWxscHRyOwogICAg
IGlmICghbV9mb3JtRGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1
cm4gbV9mb3JtRGVsZWdhdGUuY29weVJlZlRvKGZvcm1EZWxlZ2F0ZSk7CiB9CiAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCAK
LSAgICAvKiBbaW5dICovIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUqIGQpCitIUkVTVUxU
IFdlYlZpZXc6OnNldEZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZShfSW5fb3B0XyBJV2ViRnJhbWVM
b2FkRGVsZWdhdGVQcml2YXRlKiBkKQogewogICAgIGlmIChtX2ZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZSA9PSBkKQogICAgICAgICByZXR1cm4gU19PSzsKQEAgLTUzNzMsMTYgKzUzNzIsMTggQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRGcgogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZSggCi0gICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlKiogZCkKK0hSRVNVTFQgV2ViVmlldzo6ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRl
KF9DT01fT3V0cHRyX29wdF8gSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSoqIGQpCiB7Cisg
ICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpkID0gbnVsbHB0cjsK
ICAgICBpZiAoIW1fZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogICAgICAgICAKICAgICByZXR1cm4gbV9mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuY29w
eVJlZlRvKGQpOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnNjcm9sbE9mZnNldChMUFBPSU5UIG9m
ZnNldCkKK0hSRVNVTFQgV2ViVmlldzo6c2Nyb2xsT2Zmc2V0KF9PdXRfIExQUE9JTlQgb2Zmc2V0
KQogewogICAgIGlmICghb2Zmc2V0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNTM5
NSw3ICs1Mzk2LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpzY3JvbGxPZmZzZXQoTFBQT0lOVCBvZgog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnNjcm9sbEJ5KExQUE9JTlQg
b2Zmc2V0KQorSFJFU1VMVCBXZWJWaWV3OjpzY3JvbGxCeShfSW5fIExQUE9JTlQgb2Zmc2V0KQog
ewogICAgIGlmICghb2Zmc2V0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNTQwNiw3
ICs1NDA3LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpzY3JvbGxCeShMUFBPSU5UIG9mZnNldAogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnZpc2libGVDb250ZW50UmVjdChM
UFJFQ1QgcmVjdCkKK0hSRVNVTFQgV2ViVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KF9PdXRfIExQ
UkVDVCByZWN0KQogewogICAgIGlmICghcmVjdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
QEAgLTU1MjMsMTAgKzU1MjQsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpEcm9wKAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QoIAotICAgIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0
LAotICAgIEJPT0wgKnJlc3VsdCkKK0hSRVNVTFQgV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChf
SW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgX091dF8gQk9PTCogcmVzdWx0KQogewor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgKnJlc3Vs
dCA9IEZBTFNFOworCisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm4gU19PSzsKKwog
ICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdEltcGw7CiAKICAgICBIUkVT
VUxUIGhyID0gcmVxdWVzdC0+UXVlcnlJbnRlcmZhY2UoJnJlcXVlc3RJbXBsKTsKQEAgLTU1Mzcs
NyArNTU0NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2FuSGEKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoQlNUUiBhcHBsaWNhdGlvbk5hbWUsIEJTVFIqIGdyb3VwTmFtZSkK
K0hSRVNVTFQgV2ViVmlldzo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKF9J
bl8gQlNUUiBhcHBsaWNhdGlvbk5hbWUsIF9EZXJlZl9vcHRfb3V0XyBCU1RSKiBncm91cE5hbWUp
CiB7CiAgICAgaWYgKCFncm91cE5hbWUpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01NTYwLDggKzU1NjcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNsZWFyCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKAotICAgIC8qIFtpbl0gKi8gQk9PTCBmb3J3YXJkKQor
SFJFU1VMVCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoQk9PTCBmb3J3YXJkKQogewogICAgIGlm
IChtX3BhZ2UpIHsKICAgICAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTU1NzEsOCArNTU3Nyw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0SW4KICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdo
RWxlbWVudHMoIAotICAgIC8qIFtpbl0gKi8gQk9PTCBjeWNsZXMpCitIUkVTVUxUIFdlYlZpZXc6
OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhCT09MIGN5Y2xlcykKIHsKICAgICBpZiAo
bV9wYWdlKQogICAgICAgICBtX3BhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cygh
IWN5Y2xlcyk7CkBAIC01NTgwLDggKzU1ODUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OnNldFRhCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6dGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCAKLSAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgV2ViVmlldzo6dGFiS2V5Q3lj
bGVzVGhyb3VnaEVsZW1lbnRzKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3Vs
dCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1OTIsOCArNTU5Niw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dGFiS2UKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRBbGxvd1NpdGVT
cGVjaWZpY0hhY2tzKAotICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvdykKK0hSRVNVTFQgV2ViVmll
dzo6c2V0QWxsb3dTaXRlU3BlY2lmaWNIYWNrcyhCT09MIGFsbG93KQogewogICAgIHNfYWxsb3dT
aXRlU3BlY2lmaWNIYWNrcyA9ICEhYWxsb3c7CiAgICAgLy8gRklYTUU6IFRoaXMgc2V0cyBhIGds
b2JhbCBzbyBpdCBuZWVkcyB0byBjYWxsIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZApAQCAtNTYw
MSwxOSArNTYwNCwyMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldEFs
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6YWRkQWRkaXRpb25hbFBsdWdpbkRpcmVjdG9yeSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBkaXJlY3RvcnkpCitIUkVTVUxUIFdlYlZpZXc6OmFkZEFkZGl0aW9uYWxQbHVnaW5EaXJlY3Rv
cnkoX0luXyBCU1RSIGRpcmVjdG9yeSkKIHsKICAgICBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVk
UGx1Z2lucygpLT5hZGRFeHRyYVBsdWdpbkRpcmVjdG9yeSh0b1N0cmluZyhkaXJlY3RvcnkpKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
Ojpsb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldyggCi0gICAgLyogW2luXSAqLyBJV2Vi
Vmlldyogb3RoZXJWaWV3KQorSFJFU1VMVCBXZWJWaWV3Ojpsb2FkQmFja0ZvcndhcmRMaXN0RnJv
bU90aGVyVmlldyhfSW5fb3B0XyBJV2ViVmlldyogb3RoZXJWaWV3KQogewogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIAorCisgICAgaWYgKCFvdGhlclZpZXcp
CisgICAgICAgIHJldHVybiBTX09LOworCiAgICAgLy8gSXQgdHVybnMgb3V0IHRoZSByaWdodCBj
b21iaW5hdGlvbiBvZiBiZWhhdmlvciBpcyBkb25lIHdpdGggdGhlIGJhY2svZm9yd2FyZCBsb2Fk
CiAgICAgLy8gdHlwZS4gIChTZWUgYmVoYXZpb3IgbWF0cml4IGF0IHRoZSB0b3Agb2YgV2ViRnJh
bWVQcml2YXRlLikgIFNvIHdlIGNvcHkgYWxsIHRoZSBpdGVtcwogICAgIC8vIGluIHRoZSBiYWNr
IGZvcndhcmQgbGlzdCwgYW5kIGdvIHRvIHRoZSBjdXJyZW50IG9uZS4KQEAgLTU2NDgsMjEgKzU2
NTIsMjggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpsb2FkQgogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCkKK0hSRVNVTFQgV2ViVmlldzo6Y2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKQogeworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gU19PSzsKKwogICAg
IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgZnJhbWUuZWRpdG9yKCkuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpz
aG91bGRDbG9zZSggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCitIUkVT
VUxUIFdlYlZpZXc6OnNob3VsZENsb3NlKF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBpZiAo
IXJlc3VsdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKICAgICB9CiAKKyAgICAqcmVzdWx0ID0gRkFMU0U7CisKKyAgICBpZiAoIW1f
cGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKICAgICAqcmVzdWx0ID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5zaG91bGRDbG9zZSgpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAt
NjA4Niw4ICs2MDk3LDExIEBAIGJvb2wgV2ViVmlldzo6b25JTUVTZXRDb250ZXh0KFdQQVJBTSB3
cGEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6aW5zcGVjdG9yKElXZWJJbnNwZWN0b3IqKiBpbnNwZWN0b3IpCitIUkVTVUxUIFdlYlZp
ZXc6Omluc3BlY3RvcihfQ09NX091dHB0cl9vcHRfIElXZWJJbnNwZWN0b3IqKiBpbnNwZWN0b3Ip
CiB7CisgICAgaWYgKCFpbnNwZWN0b3IpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAg
Kmluc3BlY3RvciA9IG51bGxwdHI7CiAgICAgaWYgKCFtX3dlYkluc3BlY3RvcikKICAgICAgICAg
bV93ZWJJbnNwZWN0b3IuYWRvcHRSZWYoV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnN0YW5jZSh0aGlz
LCBtX2luc3BlY3RvckNsaWVudCkpOwogCkBAIC02MDk1LDcgKzYxMDksNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Omluc3BlCiB9CiAKIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojp3aW5kb3dBbmNlc3RyeURpZENoYW5nZSgpCitIUkVTVUxUIFdlYlZp
ZXc6OndpbmRvd0FuY2VzdHJ5RGlkQ2hhbmdlKCkKIHsKICAgICBIV05EIG5ld1BhcmVudDsKICAg
ICBpZiAobV92aWV3V2luZG93KQpAQCAtNjEwMyw3ICs2MTE3LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojp3aW5kbwogICAgIGVsc2UgewogICAgICAgICAvLyBUaGVyZSdz
IG5vIHBvaW50IGluIHRyYWNraW5nIGFjdGl2ZSBzdGF0ZSBjaGFuZ2VzIG9mIG91ciBwYXJlbnQg
d2luZG93IGlmIHdlIGRvbid0IGhhdmUKICAgICAgICAgLy8gYSB3aW5kb3cgb3Vyc2VsdmVzLgot
ICAgICAgICBuZXdQYXJlbnQgPSAwOworICAgICAgICBuZXdQYXJlbnQgPSBudWxscHRyOwogICAg
IH0KIAogICAgIGlmIChuZXdQYXJlbnQgPT0gbV90b3BMZXZlbFBhcmVudCkKQEAgLTYxMjUsMzQg
KzYxMzksMzIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp3aW5kbwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnBhaW50RG9jdW1lbnRSZWN0VG9D
b250ZXh0KFJFQ1QgcmVjdCwgSERDIGRldmljZUNvbnRleHQpCitIUkVTVUxUIFdlYlZpZXc6OnBh
aW50RG9jdW1lbnRSZWN0VG9Db250ZXh0KFJFQ1QgcmVjdCwgX0luXyBIREMgZGV2aWNlQ29udGV4
dCkKIHsKICAgICBpZiAoIWRldmljZUNvbnRleHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAKICAgICBpZiAoIW1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAg
ICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5wYWludERv
Y3VtZW50UmVjdFRvQ29udGV4dChyZWN0LCBkZXZpY2VDb250ZXh0KTsKIH0KIAotSFJFU1VMVCBX
ZWJWaWV3OjpwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChSRUNUIHJlY3QsIFBP
SU5UIHB0LCBIREMgZGV2aWNlQ29udGV4dCkKK0hSRVNVTFQgV2ViVmlldzo6cGFpbnRTY3JvbGxW
aWV3UmVjdFRvQ29udGV4dEF0UG9pbnQoUkVDVCByZWN0LCBQT0lOVCBwdCwgX0luXyBIREMgZGV2
aWNlQ29udGV4dCkKIHsKICAgICBpZiAoIWRldmljZUNvbnRleHQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKICAgICBpZiAoIW1fbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlM
OworICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1l
LT5wYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChyZWN0LCBwdCwgZGV2aWNlQ29u
dGV4dCk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cmVwb3J0RXhj
ZXB0aW9uKAotICAgIC8qIFtpbl0gKi8gSlNDb250ZXh0UmVmIGNvbnRleHQsCi0gICAgLyogW2lu
XSAqLyBKU1ZhbHVlUmVmIGV4Y2VwdGlvbikKK0hSRVNVTFQgV2ViVmlldzo6cmVwb3J0RXhjZXB0
aW9uKF9Jbl8gSlNDb250ZXh0UmVmIGNvbnRleHQsIF9Jbl8gSlNWYWx1ZVJlZiBleGNlcHRpb24p
CiB7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBFX0ZB
SUw7CisgICAgICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlID0gdG9KUyhjb250ZXh0KTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4
ZWNTdGF0ZSk7CkBAIC02MTY1LDIxICs2MTc3LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6cmVwb3IKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjplbGVtZW50RnJvbUpTKAotICAgIC8qIFtpbl0gKi8gSlNDb250
ZXh0UmVmIGNvbnRleHQsCi0gICAgLyogW2luXSAqLyBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsCi0g
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCAqKmVsZW1lbnQpCitIUkVTVUxUIFdl
YlZpZXc6OmVsZW1lbnRGcm9tSlMoX0luXyBKU0NvbnRleHRSZWYgY29udGV4dCwgX0luXyBKU1Zh
bHVlUmVmIG5vZGVPYmplY3QsIF9DT01fT3V0cHRyX29wdF8gSURPTUVsZW1lbnQqKiBlbGVtZW50
KQogewogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAg
ICplbGVtZW50ID0gMDsKKyAgICAqZWxlbWVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICBpZiAoIW5vZGVPYmplY3QpCi0gICAg
ICAgIHJldHVybiBFX0ZBSUw7CisgICAgaWYgKCFjb250ZXh0IHx8ICFub2RlT2JqZWN0KQorICAg
ICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGNvbnRleHQpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CkBAIC02MTkx
LDIxICs2MTk3LDE5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZWxlbWUK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpzZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KAotICAgIC8qIFtpbl0gKi8gZG91Ymxl
IHRpbWVEZWxheSkKK0hSRVNVTFQgV2ViVmlldzo6c2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVE
ZWxheShkb3VibGUgdGltZURlbGF5KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBFX0ZBSUw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
c2V0Q3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgKLSAgICAvKiBbaW5dICovIGludCBjaHVu
a1NpemUpCitIUkVTVUxUIFdlYlZpZXc6OnNldEN1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUo
aW50IGNodW5rU2l6ZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
RV9GQUlMOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OmJhY2tpbmdTdG9yZSgvKiBbb3V0LCByZXR2
YWxdICovIEhCSVRNQVAqIGhCaXRtYXApCitIUkVTVUxUIFdlYlZpZXc6OmJhY2tpbmdTdG9yZShf
RGVyZWZfb3B0X291dF8gSEJJVE1BUCogaEJpdG1hcCkKIHsKICAgICBpZiAoIWhCaXRtYXApCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02MjE1LDE3ICs2MjE5LDIxIEBAIEhSRVNVTFQg
V2ViVmlldzo6YmFja2luZ1N0b3JlKC8qIFtvdXQsIHIKICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRUcmFuc3BhcmVudChCT09MIHRy
YW5zcGFyZW50KQorSFJFU1VMVCBXZWJWaWV3OjpzZXRUcmFuc3BhcmVudChCT09MIHRyYW5zcGFy
ZW50KQogewogICAgIGlmIChtX3RyYW5zcGFyZW50ID09ICEhdHJhbnNwYXJlbnQpCiAgICAgICAg
IHJldHVybiBTX09LOwogCiAgICAgbV90cmFuc3BhcmVudCA9IHRyYW5zcGFyZW50OworCisgICAg
aWYgKCFtX21haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKKwogICAgIG1f
bWFpbkZyYW1lLT51cGRhdGVCYWNrZ3JvdW5kKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dHJhbnNwYXJlbnQoQk9PTCogdHJhbnNw
YXJlbnQpCitIUkVTVUxUIFdlYlZpZXc6OnRyYW5zcGFyZW50KF9PdXRfIEJPT0wqIHRyYW5zcGFy
ZW50KQogewogICAgIGlmICghdHJhbnNwYXJlbnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CkBAIC02MzAzLDcgKzYzMTEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnNldFVzZXNMYXllcmVkV2lu
ZG93KEJPCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6dXNlc0xheWVy
ZWRXaW5kb3coQk9PTCogdXNlc0xheWVyZWRXaW5kb3cpCitIUkVTVUxUIFdlYlZpZXc6OnVzZXNM
YXllcmVkV2luZG93KF9PdXRfIEJPT0wqIHVzZXNMYXllcmVkV2luZG93KQogewogICAgIGlmICgh
dXNlc0xheWVyZWRXaW5kb3cpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02MzEyLDcg
KzYzMjAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnVzZXNMYXllcmVkV2luZG93KEJPT0wqCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0
Q29va2llRW5hYmxlZChCT09MIGVuYWJsZSkKK0hSRVNVTFQgV2ViVmlldzo6c2V0Q29va2llRW5h
YmxlZChCT09MIGVuYWJsZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKQEAgLTYzMjEsNyArNjMyOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6c2V0Q28KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3Ojpjb29raWVFbmFibGVkKEJPT0wqIGVuYWJsZWQpCitIUkVTVUxUIFdlYlZp
ZXc6OmNvb2tpZUVuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKIHsKICAgICBpZiAoIWVuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02MzMzLDcgKzYzNDEsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvb2tpCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0TWVkaWFWb2x1bWUoZmxv
YXQgdm9sdW1lKQorSFJFU1VMVCBXZWJWaWV3OjpzZXRNZWRpYVZvbHVtZShmbG9hdCB2b2x1bWUp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC02MzQyLDcg
KzYzNTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldE1lCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bWVk
aWFWb2x1bWUoZmxvYXQqIHZvbHVtZSkKK0hSRVNVTFQgV2ViVmlldzo6bWVkaWFWb2x1bWUoX091
dF8gZmxvYXQqIHZvbHVtZSkKIHsKICAgICBpZiAoIXZvbHVtZSkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTYzNTQsNyArNjM2Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6bWVkaWEKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzZXREZWZlcnNDYWxsYmFja3MoQk9PTCBkZWZlcnNDYWxsYmFja3Mp
CitIUkVTVUxUIFdlYlZpZXc6OnNldERlZmVyc0NhbGxiYWNrcyhCT09MIGRlZmVyc0NhbGxiYWNr
cykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTYzNjMs
NyArNjM3MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0RGUKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpk
ZWZlcnNDYWxsYmFja3MoQk9PTCogZGVmZXJzQ2FsbGJhY2tzKQorSFJFU1VMVCBXZWJWaWV3Ojpk
ZWZlcnNDYWxsYmFja3MoX091dF8gQk9PTCogZGVmZXJzQ2FsbGJhY2tzKQogewogICAgIGlmICgh
ZGVmZXJzQ2FsbGJhY2tzKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNjM3NSwxNiAr
NjM4MywxNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmRlZmVyCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Z2xv
YmFsSGlzdG9yeUl0ZW0oSVdlYkhpc3RvcnlJdGVtKiogaXRlbSkKK0hSRVNVTFQgV2ViVmlldzo6
Z2xvYmFsSGlzdG9yeUl0ZW0oX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9yeUl0ZW0qKiBpdGVt
KQogewogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQorICAgICpp
dGVtID0gbnVsbHB0cjsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAogICAgIGlmICghbV9nbG9iYWxIaXN0b3J5SXRlbSkgewotICAgICAgICAqaXRlbSA9IDA7Cisg
ICAgICAgICppdGVtID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQogCkBA
IC02MzkyLDE0ICs2NDAwLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
Z2xvYmEKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3OjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChCT09MIGNvbXBsZXgpCitI
UkVTVUxUIFdlYlZpZXc6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKEJPT0wgY29t
cGxleCkKIHsKICAgICBXZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoY29t
cGxleCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjphbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChCT09MKiBjb21wbGV4KQor
SFJFU1VMVCBXZWJWaWV3OjphbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChfT3V0XyBCT09M
KiBjb21wbGV4KQogewogICAgIGlmICghY29tcGxleCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKQEAgLTY0MDgsNyArNjQxNiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6YWx3YXkKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpyZWdpc3Rl
ckVtYmVkZGVkVmlld01JTUVUeXBlKEJTVFIgbWltZVR5cGUpCitIUkVTVUxUIFdlYlZpZXc6OnJl
Z2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0luXyBCU1RSIG1pbWVUeXBlKQogewogICAgIGlm
ICghbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02NDc1LDYgKzY0ODMs
OSBAQCBTVERNRVRIT0RJTVAgV2ViVmlldzo6QWNjZXNzaWJsZU9iamVjdEZyCiAKIEhSRVNVTFQg
V2ViVmlldzo6c2V0TWVtb3J5Q2FjaGVEZWxlZ2F0ZUNhbGxzRW5hYmxlZChCT09MIGVuYWJsZWQp
CiB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKICAgICBtX3Bh
Z2UtPnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGVuYWJsZWQpOwogICAgIHJldHVy
biBTX09LOwogfQpAQCAtNjQ4Niw2ICs2NDk3LDkgQEAgSFJFU1VMVCBXZWJWaWV3OjpzZXRKYXZh
U2NyaXB0VVJMc0FyZUFsbAogCiBIUkVTVUxUIFdlYlZpZXc6OnNldENhblN0YXJ0UGx1Z2lucyhC
T09MIGNhblN0YXJ0UGx1Z2lucykKIHsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJu
IEVfRkFJTDsKKwogICAgIG1fcGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShjYW5TdGFydFBsdWdpbnMp
OwogICAgIHJldHVybiBTX09LOwogfQpAQCAtNjUyNSwxMCArNjUzOSwxMCBAQCB2b2lkIFdlYlZp
ZXc6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlCiAjZW5kaWYKIH0KIAotSFJFU1VMVCBXZWJW
aWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxk
KiBpV29ybGQsIEJTVFIgc291cmNlLCBCU1RSIHVybCwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdoaXRlbGlzdENvdW50LCBCU1RSKiB3aGl0ZWxpc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJsYWNrbGlz
dENvdW50LCBCU1RSKiBibGFja2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCitIUkVTVUxU
IFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9v
cHRfIElXZWJTY3JpcHRXb3JsZCogaVdvcmxkLCBfSW5fIEJTVFIgc291cmNlLCBfSW5fIEJTVFIg
dXJsLAorICAgIHVuc2lnbmVkIHdoaXRlbGlzdENvdW50LCBfX2lub3V0X2Vjb3VudF9mdWxsKHdo
aXRlbGlzdENvdW50KSBCU1RSKiB3aGl0ZWxpc3QsCisgICAgdW5zaWduZWQgYmxhY2tsaXN0Q291
bnQsIF9faW5vdXRfZWNvdW50X2Z1bGwoYmxhY2tsaXN0Q291bnQpIEJTVFIqIGJsYWNrbGlzdCwK
KyAgICBXZWJVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewogICAgIHJl
dHVybiBhZGRVc2VyU2NyaXB0VG9Hcm91cChncm91cE5hbWUsIGlXb3JsZCwgc291cmNlLCB1cmws
IHdoaXRlbGlzdENvdW50LCB3aGl0ZWxpc3QsIGJsYWNrbGlzdENvdW50LCBibGFja2xpc3QsIGlu
amVjdGlvblRpbWUsIFdlYkluamVjdEluQWxsRnJhbWVzKTsKIH0KQEAgLTY1NDUsOCArNjU1OSw5
IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihCU1QKICAgICByZXR1cm4g
ZW50cmllc1ZlY3RvcjsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91
cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybGQsIEJTVFIgc291cmNlLCBC
U1RSIHVybCwKLSAgICB1bnNpZ25lZCB3aGl0ZWxpc3RDb3VudCwgQlNUUiogd2hpdGVsaXN0LCB1
bnNpZ25lZCBibGFja2xpc3RDb3VudCwgQlNUUiogYmxhY2tsaXN0LAorSFJFU1VMVCBXZWJWaWV3
OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2Vi
U2NyaXB0V29ybGQqIGlXb3JsZCwgX0luXyBCU1RSIHNvdXJjZSwgX0luXyBCU1RSIHVybCwKKyAg
ICB1bnNpZ25lZCB3aGl0ZWxpc3RDb3VudCwgX19pbm91dF9lY291bnRfZnVsbCh3aGl0ZWxpc3RD
b3VudCkgQlNUUiogd2hpdGVsaXN0LAorICAgIHVuc2lnbmVkIGJsYWNrbGlzdENvdW50LCBfX2lu
b3V0X2Vjb3VudF9mdWxsKGJsYWNrbGlzdENvdW50KSBCU1RSKiBibGFja2xpc3QsCiAgICAgV2Vi
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgV2ViVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsKICAgICBTdHJpbmcgZ3JvdXAgPSB0b1N0cmlu
Zyhncm91cE5hbWUpOwpAQCAtNjU2OCwxNCArNjU4MywxNSBAQCBIUkVTVUxUIFdlYlZpZXc6OmFk
ZFVzZXJTY3JpcHRUb0dyb3VwKEJTCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2Vi
Vmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0
V29ybGQqIGlXb3JsZCwgQlNUUiBzb3VyY2UsIEJTVFIgdXJsLAotICAgIHVuc2lnbmVkIHdoaXRl
bGlzdENvdW50LCBCU1RSKiB3aGl0ZWxpc3QsIHVuc2lnbmVkIGJsYWNrbGlzdENvdW50LCBCU1RS
KiBibGFja2xpc3QpCitIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChf
SW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V29ybGQqIGlXb3JsZCwgX0lu
XyBCU1RSIHNvdXJjZSwgX0luXyBCU1RSIHVybCwKKyAgICB1bnNpZ25lZCB3aGl0ZWxpc3RDb3Vu
dCwgX19pbm91dF9lY291bnRfZnVsbCh3aGl0ZWxpc3RDb3VudCkgQlNUUiogd2hpdGVsaXN0LCB1
bnNpZ25lZCBibGFja2xpc3RDb3VudCwgX19pbm91dF9lY291bnRfZnVsbChibGFja2xpc3RDb3Vu
dCkgQlNUUiogYmxhY2tsaXN0KQogewogICAgIHJldHVybiBhZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXAoZ3JvdXBOYW1lLCBpV29ybGQsIHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3RDb3VudCwgd2hpdGVs
aXN0LCBibGFja2xpc3RDb3VudCwgYmxhY2tsaXN0LCBXZWJJbmplY3RJbkFsbEZyYW1lcyk7CiB9
CiAKLUhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKEJTVFIgZ3JvdXBO
YW1lLCBJV2ViU2NyaXB0V29ybGQqIGlXb3JsZCwgQlNUUiBzb3VyY2UsIEJTVFIgdXJsLAotICAg
IHVuc2lnbmVkIHdoaXRlbGlzdENvdW50LCBCU1RSKiB3aGl0ZWxpc3QsIHVuc2lnbmVkIGJsYWNr
bGlzdENvdW50LCBCU1RSKiBibGFja2xpc3QsIFdlYlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMpCitIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91
cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V29ybGQqIGlXb3JsZCwg
X0luXyBCU1RSIHNvdXJjZSwgX0luXyBCU1RSIHVybCwKKyAgICB1bnNpZ25lZCB3aGl0ZWxpc3RD
b3VudCwgX19pbm91dF9lY291bnRfZnVsbCh3aGl0ZWxpc3RDb3VudCkgQlNUUiogd2hpdGVsaXN0
LCB1bnNpZ25lZCBibGFja2xpc3RDb3VudCwgX19pbm91dF9lY291bnRfZnVsbChibGFja2xpc3RD
b3VudCkgQlNUUiogYmxhY2tsaXN0LAorICAgIFdlYlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMpCiB7CiAgICAgU3RyaW5nIGdyb3VwID0gdG9TdHJpbmcoZ3JvdXBOYW1l
KTsKICAgICBpZiAoZ3JvdXAuaXNFbXB0eSgpKQpAQCAtNjU5NSw3ICs2NjExLDcgQEAgSFJFU1VM
VCBXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdQogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTY3JpcHRGcm9tR3JvdXAoQlNUUiBncm91cE5h
bWUsIElXZWJTY3JpcHRXb3JsZCogaVdvcmxkLCBCU1RSIHVybCkKK0hSRVNVTFQgV2ViVmlldzo6
cmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJ
V2ViU2NyaXB0V29ybGQqIGlXb3JsZCwgX0luXyBCU1RSIHVybCkKIHsKICAgICBTdHJpbmcgZ3Jv
dXAgPSB0b1N0cmluZyhncm91cE5hbWUpOwogICAgIGlmIChncm91cC5pc0VtcHR5KCkpCkBAIC02
NjEzLDcgKzY2MjksNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTY3JpcHRGcm9tR3Jv
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclN0eWxl
U2hlZXRGcm9tR3JvdXAoQlNUUiBncm91cE5hbWUsIElXZWJTY3JpcHRXb3JsZCogaVdvcmxkLCBC
U1RSIHVybCkKK0hSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tR3JvdXAo
X0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvcmxkKiBpV29ybGQsIF9J
bl8gQlNUUiB1cmwpCiB7CiAgICAgU3RyaW5nIGdyb3VwID0gdG9TdHJpbmcoZ3JvdXBOYW1lKTsK
ICAgICBpZiAoZ3JvdXAuaXNFbXB0eSgpKQpAQCAtNjYzMSw3ICs2NjQ3LDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpyZW1vdmVVc2VyU3R5bGVTaGVldEZybwogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTY3JpcHRzRnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1l
LCBJV2ViU2NyaXB0V29ybGQqIGlXb3JsZCkKK0hSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclNj
cmlwdHNGcm9tR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdv
cmxkKiBpV29ybGQpCiB7CiAgICAgU3RyaW5nIGdyb3VwID0gdG9TdHJpbmcoZ3JvdXBOYW1lKTsK
ICAgICBpZiAoZ3JvdXAuaXNFbXB0eSgpKQpAQCAtNjY0OSw3ICs2NjY1LDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpyZW1vdmVVc2VyU2NyaXB0c0Zyb21HcgogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Hcm91cChCU1RSIGdyb3Vw
TmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybGQpCitIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVz
ZXJTdHlsZVNoZWV0c0Zyb21Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2Vi
U2NyaXB0V29ybGQqIGlXb3JsZCkKIHsKICAgICBTdHJpbmcgZ3JvdXAgPSB0b1N0cmluZyhncm91
cE5hbWUpOwogICAgIGlmIChncm91cC5pc0VtcHR5KCkpCkBAIC02NjY3LDEyICs2NjgzLDEyIEBA
IEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnIKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpyZW1vdmVBbGxVc2VyQ29udGVudEZyb21Hcm91cChC
U1RSIGdyb3VwTmFtZSkKK0hSRVNVTFQgV2ViVmlldzo6cmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9t
R3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSkKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQog
Ci1IUkVTVUxUIFdlYlZpZXc6OmludmFsaWRhdGVCYWNraW5nU3RvcmUoY29uc3QgUkVDVCogcmVj
dCkKK0hSRVNVTFQgV2ViVmlldzo6aW52YWxpZGF0ZUJhY2tpbmdTdG9yZShfSW5fb3B0XyBjb25z
dCBSRUNUKiByZWN0KQogewogICAgIGlmICghSXNXaW5kb3cobV92aWV3V2luZG93KSkKICAgICAg
ICAgcmV0dXJuIFNfT0s7CkBAIC02NjkxLDEzICs2NzA3LDEzIEBAIEhSRVNVTFQgV2ViVmlldzo6
aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBX
ZWJWaWV3OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShCU1RSIHNvdXJjZU9yaWdpbiwg
QlNUUiBkZXN0aW5hdGlvblByb3RvY29sLCBCU1RSIGRlc3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK0hSRVNVTFQgV2ViVmlldzo6YWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoX0luXyBCU1RSIHNvdXJjZU9yaWdpbiwgX0luXyBCU1RSIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIF9Jbl8gQlNUUiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpCiB7CiAgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNv
dXJjZU9yaWdpbikpLmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJp
bmcoZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KEJTVFIgc291cmNlT3JpZ2luLCBCU1RSIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEJT
VFIgZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQorSFJF
U1VMVCBXZWJWaWV3OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShfSW5fIEJTVFIg
c291cmNlT3JpZ2luLCBfSW5fIEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgX0luXyBCU1RSIGRl
c3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRv
U3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC02NzA5LDIx
ICs2NzI1LDIxIEBAIEhSRVNVTFQgV2ViVmlldzo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWwKICAg
ICByZXR1cm4gU19PSzsKIH0KICAKLUhSRVNVTFQgV2ViVmlldzo6c2V0SGlzdG9yeURlbGVnYXRl
KElXZWJIaXN0b3J5RGVsZWdhdGUqIGhpc3RvcnlEZWxlZ2F0ZSkKK0hSRVNVTFQgV2ViVmlldzo6
c2V0SGlzdG9yeURlbGVnYXRlKF9Jbl8gSVdlYkhpc3RvcnlEZWxlZ2F0ZSogaGlzdG9yeURlbGVn
YXRlKQogewogICAgIG1faGlzdG9yeURlbGVnYXRlID0gaGlzdG9yeURlbGVnYXRlOwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6Omhpc3RvcnlEZWxlZ2F0ZShJV2ViSGlz
dG9yeURlbGVnYXRlKiogaGlzdG9yeURlbGVnYXRlKQorSFJFU1VMVCBXZWJWaWV3OjpoaXN0b3J5
RGVsZWdhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9yeURlbGVnYXRlKiogaGlzdG9yeURl
bGVnYXRlKQogewogICAgIGlmICghaGlzdG9yeURlbGVnYXRlKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwotCisgICAgKmhpc3RvcnlEZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIG1f
aGlzdG9yeURlbGVnYXRlLmNvcHlSZWZUbyhoaXN0b3J5RGVsZWdhdGUpOwogfQogCi1IUkVTVUxU
IFdlYlZpZXc6OmFkZFZpc2l0ZWRMaW5rcyhCU1RSKiB2aXNpdGVkVVJMcywgdW5zaWduZWQgdmlz
aXRlZFVSTENvdW50KQorSFJFU1VMVCBXZWJWaWV3OjphZGRWaXNpdGVkTGlua3MoX19pbm91dF9l
Y291bnRfZnVsbCh2aXNpdGVkVVJMQ291bnQpIEJTVFIqIHZpc2l0ZWRVUkxzLCB1bnNpZ25lZCB2
aXNpdGVkVVJMQ291bnQpCiB7CiAgICAgYXV0byYgdmlzaXRlZExpbmtTdG9yZSA9IG1fd2ViVmll
d0dyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgUGFnZUdyb3VwJiBncm91cCA9IGNvcmUo
dGhpcyktPmdyb3VwKCk7CkBAIC02ODQ3LDI1ICs2ODYzLDI1IEBAIFdlYkNvcmU6OkdyYXBoaWNz
RGV2aWNlQWRhcHRlciogV2ViVmlldzoKIEhSRVNVTFQgV2ViVmlldzo6dW51c2VkMSgpCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfRkFJTDsKKyAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDIoKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX0ZBSUw7CisgICAgcmV0dXJuIEVfTk9USU1Q
TDsKIH0KIAogSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQzKCkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gRV9GQUlMOworICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAK
IEhSRVNVTFQgV2ViVmlldzo6dW51c2VkNCgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIEVfRkFJTDsKKyAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiBIUkVTVUxU
IFdlYlZpZXc6OnVudXNlZDUoKQpAQCAtNjg3NiwyNyArNjg5MiwyNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OnVudXNlZDUoKQogICAgIC8vIGFuZCB0aGlzIGNvZGUgZG9lcyBub3RoaW5nIG1vcmUgdGhh
biBmb3JjZSB0aGUgc3ltYm9sIHRvIGJlIGluY2x1ZGVkIGluIFdlYktpdCBkbGwuCiAgICAgKHZv
aWQpV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHMoVmVj
dG9yPEZsb2F0UmVjdD4oKSwgMCk7CiAKLSAgICByZXR1cm4gRV9GQUlMOworICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6c2V0R2VvbG9jYXRpb25Qcm92aWRlcihJ
V2ViR2VvbG9jYXRpb25Qcm92aWRlciogbG9jYXRpb25Qcm92aWRlcikKK0hSRVNVTFQgV2ViVmll
dzo6c2V0R2VvbG9jYXRpb25Qcm92aWRlcihfSW5fb3B0XyBJV2ViR2VvbG9jYXRpb25Qcm92aWRl
ciogbG9jYXRpb25Qcm92aWRlcikKIHsKICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBsb2Nh
dGlvblByb3ZpZGVyOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6Omdl
b2xvY2F0aW9uUHJvdmlkZXIoSVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqKiBsb2NhdGlvblByb3Zp
ZGVyKQorSFJFU1VMVCBXZWJWaWV3OjpnZW9sb2NhdGlvblByb3ZpZGVyKF9DT01fT3V0cHRyX29w
dF8gSVdlYkdlb2xvY2F0aW9uUHJvdmlkZXIqKiBsb2NhdGlvblByb3ZpZGVyKQogewogICAgIGlm
ICghbG9jYXRpb25Qcm92aWRlcikKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQorICAgICps
b2NhdGlvblByb3ZpZGVyID0gbnVsbHB0cjsKICAgICBpZiAoIW1fZ2VvbG9jYXRpb25Qcm92aWRl
cikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVybiBtX2dlb2xvY2F0aW9uUHJv
dmlkZXIuY29weVJlZlRvKGxvY2F0aW9uUHJvdmlkZXIpOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6
Omdlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb24oSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBv
c2l0aW9uKQorSFJFU1VMVCBXZWJWaWV3OjpnZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uKF9J
bl9vcHRfIElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKICAgICBpZiAoIW1f
cGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTY5MDQsNyArNjkyMCw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6Z2VvbG9jYXRpb25EaWRDaGFuZ2VQb3MKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBXZWJWaWV3OjpnZW9sb2NhdGlvbkRpZEZhaWxXaXRoRXJyb3IoSVdlYkVycm9y
KiBlcnJvcikKK0hSRVNVTFQgV2ViVmlldzo6Z2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yKF9J
bl9vcHRfIElXZWJFcnJvciogZXJyb3IpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CkBAIC02OTIwLDI1ICs2OTM2LDI1IEBAIEhSRVNVTFQgV2ViVmlldzo6Z2Vv
bG9jYXRpb25EaWRGYWlsV2l0aEUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJW
aWV3OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKEJPT0wgZm9yYmlk
ZGVuLCBCU1RSIHNjaGVtZSkKK0hSRVNVTFQgV2ViVmlldzo6c2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZShCT09MIGZvcmJpZGRlbiwgX0luXyBCU1RSIHNjaGVtZSkKIHsK
ICAgICBTY2hlbWVSZWdpc3RyeTo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNj
aGVtZShmb3JiaWRkZW4sIHRvU3RyaW5nKHNjaGVtZSkpOwogICAgIHJldHVybiBTX09LOwogfQog
Ci1IUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoQlNUUiBzY2hlbWUp
CitIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoX0luXyBCU1RSIHNj
aGVtZSkKIHsKICAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSh0
b1N0cmluZyhzY2hlbWUpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3
OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVC
cm93c2luZyhCU1RSIHNjaGVtZSkKK0hSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoX0luXyBCU1RSIHNj
aGVtZSkKIHsKICAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5n
TG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcodG9TdHJpbmcoc2NoZW1lKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhCU1RSIHNjaGVtZSkKK0hS
RVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJ
blByaXZhdGVCcm93c2luZyhfSW5fIEJTVFIgc2NoZW1lKQogewogICAgIFNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nKHRvU3RyaW5nKHNjaGVtZSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtNzAxNyw3ICs3MDMz
LDcgQEAgcHVibGljOgogICAgICAgICBtX3JlY3RzID0gKnJlY3RzOwogICAgIH0KIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlp
ZCwgdm9pZCoqIHBwdikKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdikKICAgICB7CiAgICAgICAg
IGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pIHx8IElzRXF1YWxHVUlEKHJpaWQs
IElJRF9JRW51bVRleHRNYXRjaGVzKSkgewogICAgICAgICAgICAgKnBwdiA9IHRoaXM7CkBAIC03
MDY3LDggKzcwODMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2luZGV4ID0gMDsKICAgICAgICAg
cmV0dXJuIFNfT0s7CiAgICAgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBDbG9uZShJRW51bVRleHRNYXRjaGVzKiopCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyX29wdF8gSUVudW1UZXh0TWF0Y2hlcyoqIG1hdGNo
ZXMpCiAgICAgeworICAgICAgICBpZiAoIW1hdGNoZXMpCisgICAgICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworICAgICAgICAqbWF0Y2hlcyA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBFX05P
VElNUEw7CiAgICAgfQogfTsKQEAgLTcwOTAsNyArNzEwOSw3IEBAIFBhZ2UqIGNvcmUoSVdlYlZp
ZXcqIGlXZWJWaWV3KQogICAgIHJldHVybiBwYWdlOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OmRl
ZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUqIGludGVydmFsKQorSFJFU1VMVCBXZWJW
aWV3OjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoX091dF8gZG91YmxlKiBpbnRlcnZhbCkK
IHsKICAgICBpZiAoIWludGVydmFsKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNzEw
MCwxMSArNzExOSwxNCBAQCBIUkVTVUxUIFdlYlZpZXc6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRl
CiAKIEhSRVNVTFQgV2ViVmlldzo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVy
dmFsKQogeworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCiAgICAg
cGFnZSgpLT5zZXR0aW5ncygpLnNldE1pbmltdW1ET01UaW1lckludGVydmFsKGludGVydmFsKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJWaWV3OjpodHRwUGlwZWxpbmluZ0Vu
YWJsZWQoQk9PTCogZW5hYmxlZCkKK0hSRVNVTFQgV2ViVmlldzo6aHR0cFBpcGVsaW5pbmdFbmFi
bGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCiB7CiAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwpAQCAtNzIxOSwxMCArNzI0MSw3IEBAIHZvaWQgV2ViVmlldzo6ZnVs
bFNjcmVlbkNsaWVudFJlc3RvcmVTY3IKICNlbmRpZgogLy8gVXNlZCBieSBUZXh0SW5wdXRDb250
cm9sbGVyIGluIER1bXBSZW5kZXJUcmVlCiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKAotICAgIC8qIFtpbl0gKi8gQlNUUiBjb21w
b3NpdGlvbiwgCi0gICAgLyogW2luXSAqLyBVSU5UIGZyb20sIAotICAgIC8qIFtpbl0gKi8gVUlO
VCBsZW5ndGgpCitIUkVTVUxUIFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhfSW5f
IEJTVFIgY29tcG9zaXRpb24sIFVJTlQgZnJvbSwgVUlOVCBsZW5ndGgpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC03MjQwLDcgKzcyNTksNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldENvCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aGFzQ29tcG9zaXRpb25Gb3JU
ZXN0aW5nKC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KQorSFJFU1VMVCBXZWJWaWV3
OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoX091dF8gQk9PTCogcmVzdWx0KQogewogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtNzI1MCw3ICs3MjY5LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpoYXNDbwogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvbmZpcm1Db21wb3Np
dGlvbkZvclRlc3RpbmcoLyogW2luXSAqLyBCU1RSIGNvbXBvc2l0aW9uKQorSFJFU1VMVCBXZWJW
aWV3Ojpjb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKF9Jbl8gQlNUUiBjb21wb3NpdGlvbikK
IHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTcyNjksOCAr
NzI4OCwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvbmZpCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29t
cG9zaXRpb25SYW5nZUZvclRlc3RpbmcoLyogW291dF0gKi8gVUlOVCogc3RhcnRQb3NpdGlvbiwg
LyogW291dF0gKi8gVUlOVCogbGVuZ3RoKQorSFJFU1VMVCBXZWJWaWV3Ojpjb21wb3NpdGlvblJh
bmdlRm9yVGVzdGluZyhfT3V0XyBVSU5UKiBzdGFydFBvc2l0aW9uLCBfT3V0XyBVSU5UKiBsZW5n
dGgpCiB7CisgICAgaWYgKCFzdGFydFBvc2l0aW9uIHx8ICFsZW5ndGgpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IApAQCAtNzI5MCwxMSArNzMxMiwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OmNvbXBvCiB9CiAKIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRlc3RpbmcoCi0gICAgLyogW2luXSAqLyBVSU5UIGxv
Y2F0aW9uLCAKLSAgICAvKiBbaW5dICovIFVJTlQgbGVuZ3RoLCAKLSAgICAvKiBbb3V0LCByZXR2
YWxdICovIFJFQ1QqIHJlc3VsdFJlY3QpCitIUkVTVUxUIFdlYlZpZXc6OmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlRm9yVGVzdGluZyhVSU5UIGxvY2F0aW9uLCBVSU5UIGxlbmd0aCwgX091dF8g
UkVDVCogcmVzdWx0UmVjdCkKIHsKKyAgICBpZiAoIXJlc3VsdFJlY3QpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IApAQCAtNzMyOSw4ICs3MzUxLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6Zmlyc3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpzZWxlY3RlZFJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBVSU5UKiBsb2Nh
dGlvbiwgLyogW291dF0gKi8gVUlOVCogbGVuZ3RoKQorSFJFU1VMVCBXZWJWaWV3OjpzZWxlY3Rl
ZFJhbmdlRm9yVGVzdGluZyhfT3V0XyBVSU5UKiBsb2NhdGlvbiwgX091dF8gVUlOVCogbGVuZ3Ro
KQogeworICAgIGlmICghbG9jYXRpb24gfHwgIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKKworICAgICpsb2NhdGlvbiA9IDA7CisgICAgKmxlbmd0aCA9IDA7CisKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNzQwMCw3ICs3NDI4LDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjpzZXRDdXN0b21CYWNraW5nU2NhbGVGYQogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFdlYlZpZXc6OmJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUqIGZhY3Rv
cikKK0hSRVNVTFQgV2ViVmlldzo6YmFja2luZ1NjYWxlRmFjdG9yKF9PdXRfIGRvdWJsZSogZmFj
dG9yKQogewogICAgIGlmICghZmFjdG9yKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNzU0ICsxMDcsMjg4IEBAIHByb3RlY3Rl
ZDoKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0
KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAg
ICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8gSVdlYlZpZXcKLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5TaG93TUlNRVR5cGUoIAotICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbWltZVR5cGUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqY2Fu
U2hvdyk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG1pbWVUeXBlLAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmNhblNob3cpOwotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIE1JTUVUeXBlc1Nob3duQXNIVE1MKCAKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRW51bVZBUklBTlQgKiplbnVtVmFyaWFudCk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1JTUVUeXBlc1Nob3duQXNIVE1M
KCAKLSAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBCU1RSICptaW1lVHlwZXMsCi0gICAgICAg
IC8qIFtpbl0gKi8gaW50IGNNaW1lVHlwZXMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBVUkxGcm9tUGFzdGVib2FyZCggCi0gICAgICAgIC8qIFtpbl0gKi8g
SURhdGFPYmplY3QgKnBhc3RlYm9hcmQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiAqdXJsKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgVVJM
VGl0bGVGcm9tUGFzdGVib2FyZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURhdGFPYmplY3QgKnBh
c3RlYm9hcmQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqdXJsVGl0bGUpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aEZyYW1l
KCAKLSAgICAgICAgLyogW2luXSAqLyBSRUNUIGZyYW1lLAotICAgICAgICAvKiBbaW5dICovIEJT
VFIgZnJhbWVOYW1lLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZ3JvdXBOYW1lKTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBY2Nlc3NpYmlsaXR5RGVsZWdh
dGUoCi0gICAgICAgIC8qIFtpbl0gKi8gSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSAqZCk7Ci0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWNjZXNzaWJpbGl0eURlbGVnYXRl
KAotICAgICAgICAvKiBbb3V0XVtyZXR2YWxdICovIElBY2Nlc3NpYmlsaXR5RGVsZWdhdGUgKipk
KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRVSURlbGVnYXRl
KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVUlEZWxlZ2F0ZSAqZCk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVpRGVsZWdhdGUoIAotICAgICAgICAvKiBb
b3V0XVtyZXR2YWxdICovIElXZWJVSURlbGVnYXRlICoqZCk7Ci0gICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFJlc291cmNlTG9hZERlbGVnYXRlKCAKLSAgICAg
ICAgLyogW2luXSAqLyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUgKmQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXNvdXJjZUxvYWREZWxlZ2F0ZSggCi0g
ICAgICAgIC8qIFtvdXRdW3JldHZhbF0gKi8gSVdlYlJlc291cmNlTG9hZERlbGVnYXRlICoqZCk7
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERvd25sb2Fk
RGVsZWdhdGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlICpkKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG93bmxvYWREZWxl
Z2F0ZSggCi0gICAgICAgIC8qIFtvdXRdW3JldHZhbF0gKi8gSVdlYkRvd25sb2FkRGVsZWdhdGUg
KipkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RnJh
bWVMb2FkRGVsZWdhdGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZUxvYWREZWxlZ2F0
ZSAqZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZyYW1l
TG9hZERlbGVnYXRlKCAKLSAgICAgICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViRnJhbWVMb2Fk
RGVsZWdhdGUgKipkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0UG9saWN5RGVsZWdhdGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJQb2xpY3lEZWxl
Z2F0ZSAqZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBv
bGljeURlbGVnYXRlKCAKLSAgICAgICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViUG9saWN5RGVs
ZWdhdGUgKipkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bWFpbkZyYW1lKCAKLSAgICAgICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViRnJhbWUgKipmcmFt
ZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZm9jdXNlZEZyYW1l
KCAKLSAgICAgICAgLyogW291dF1bcmV0dmFsXSAqLyBJV2ViRnJhbWUgKipmcmFtZSk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJhY2tGb3J3YXJkTGlzdCgg
Ci0gICAgICAgIC8qIFtvdXRdW3JldHZhbF0gKi8gSVdlYkJhY2tGb3J3YXJkTGlzdCAqKmxpc3Qp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNYWludGFp
bnNCYWNrRm9yd2FyZExpc3QoIAotICAgICAgICAvKiBbaW5dICovIEJPT0wgZmxhZyk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdvQmFjayggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqc3VjY2VlZGVkKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ29Gb3J3YXJkKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MICpzdWNjZWVkZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBnb1RvQmFja0ZvcndhcmRJdGVtKCAKLSAgICAgICAgLyogW2luXSAq
LyBJV2ViSGlzdG9yeUl0ZW0gKml0ZW0sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCAqc3VjY2VlZGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0VGV4dFNpemVNdWx0aXBsaWVyKCAKLSAgICAgICAgLyogW2luXSAqLyBmbG9hdCBtdWx0
aXBsaWVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4
dFNpemVNdWx0aXBsaWVyKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBmbG9hdCAqbXVs
dGlwbGllcik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBh
cHBsaWNhdGlvbk5hbWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKmFwcGxpY2F0aW9uTmFtZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldEN1c3RvbVVzZXJBZ2VudCggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiB1c2VyQWdlbnRTdHJpbmcpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjdXN0b21Vc2VyQWdlbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKnVzZXJBZ2VudFN0cmluZyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHVzZXJBZ2VudEZvclVSTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB1cmwsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqdXNlckFnZW50KTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3VwcG9ydHNUZXh0RW5j
b2RpbmcoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnN1cHBvcnRzKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBlbmNvZGluZ05hbWUpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICplbmNvZGluZ05hbWUp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNZWRpYVN0
eWxlKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG1lZGlhKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWVkaWFTdHlsZSggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqbWVkaWEpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZyggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2luZG93U2NyaXB0T2JqZWN0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
V2ViU2NyaXB0T2JqZWN0ICoqd2ViU2NyaXB0T2JqZWN0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZmVyZW5jZXMoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJQcmVmZXJlbmNlcyAqcHJlZnMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBwcmVmZXJlbmNlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYlByZWZlcmVuY2VzICoqcHJlZnMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmZXJlbmNlc0lkZW50aWZpZXIoIAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgYW5JZGVudGlmaWVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcHJlZmVyZW5jZXNJZGVudGlmaWVyKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSICphbklkZW50aWZpZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIb3N0V2luZG93KEhXTkQpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBob3N0V2luZG93KEhXTkQqKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VhcmNoRm9yKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIHN0ciwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGZvcndhcmQsCi0g
ICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjYXNlRmxhZywKLSAgICAgICAgLyogW2luXSAqLyBCT09M
IHdyYXBGbGFnLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmZvdW5kKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0ZXJWaWV3Q2xh
c3MoIAotICAgICAgICAvKiBbaW5dICovIElXZWJEb2N1bWVudFZpZXcgKnZpZXcsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24gKnJlcHJlc2VudGF0aW9uLAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgZm9yTUlNRVR5cGUpOwotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEdyb3VwTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBncm91cE5hbWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBncm91cE5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKmdyb3Vw
TmFtZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVzdGlt
YXRlZFByb2dyZXNzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBkb3VibGUgKmVzdGlt
YXRlZFByb2dyZXNzKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNMb2FkaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICppc0xvYWRp
bmcpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbGVtZW50
QXRQb2ludCggCi0gICAgICAgIC8qIFtpbl0gKi8gTFBQT0lOVCBwb2ludCwKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJUHJvcGVydHlCYWcgKiplbGVtZW50RGljdGlvbmFyeSk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhc3RlYm9hcmRUeXBlc0Zv
clNlbGVjdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSUVudW1WQVJJQU5UICoq
ZW51bVZhcmlhbnQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB3cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkVHlwZXMoIAotICAgICAgICAvKiBbc2l6ZV9p
c11baW5dICovIEJTVFIgKnR5cGVzLAotICAgICAgICAvKiBbaW5dICovIGludCBjVHlwZXMsCi0g
ICAgICAgIC8qIFtpbl0gKi8gSURhdGFPYmplY3QgKnBhc3RlYm9hcmQpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXN0ZWJvYXJkVHlwZXNGb3JFbGVtZW50
KCAKLSAgICAgICAgLyogW2luXSAqLyBJUHJvcGVydHlCYWcgKmVsZW1lbnREaWN0aW9uYXJ5LAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElFbnVtVkFSSUFOVCAqKmVudW1WYXJpYW50KTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd3JpdGVFbGVtZW50
KCAKLSAgICAgICAgLyogW2luXSAqLyBJUHJvcGVydHlCYWcgKmVsZW1lbnREaWN0aW9uYXJ5LAot
ICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIEJTVFIgKndpdGhQYXN0ZWJvYXJkVHlwZXMsCi0g
ICAgICAgIC8qIFtpbl0gKi8gaW50IGNXaXRoUGFzdGVib2FyZFR5cGVzLAotICAgICAgICAvKiBb
aW5dICovIElEYXRhT2JqZWN0ICpwYXN0ZWJvYXJkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VsZWN0ZWRUZXh0KAotICAgICAgICAvKiBbb3V0LCByZXR2
YWxdICovIEJTVFIqIHN0cik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgKLSAgICAgICAgLyogW2luXSAqLyBJVW5r
bm93biogc2VuZGVyKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBt
b3ZlRHJhZ0NhcmV0VG9Qb2ludCggCi0gICAgICAgIC8qIFtpbl0gKi8gTFBQT0lOVCBwb2ludCk7
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZURyYWdD
YXJldCggdm9pZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldERyYXdzQmFja2dyb3VuZCggCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkcmF3c0JhY2tn
cm91bmQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3
c0JhY2tncm91bmQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmRyYXdzQmFj
a2dyb3VuZCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dE1haW5GcmFtZVVSTCggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1cmxTdHJpbmcpOwotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtYWluRnJhbWVVUkwoIAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnVybFN0cmluZyk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1haW5GcmFtZURvY3VtZW50KCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQgKipkb2N1bWVudCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1haW5GcmFtZVRpdGxlKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICp0aXRsZSk7Ci0gICAgCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1haW5GcmFtZUljb24oLyogW3JldHZhbF1b
b3V0XSAqLyBIQklUTUFQKiBoQml0bWFwKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgc2NoZW1lKTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
YW5TaG93TUlNRVR5cGUoX0luXyBCU1RSIG1pbWVUeXBlLCBfT3V0XyBCT09MKik7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblNob3dNSU1FVHlwZUFzSFRNTChfSW5f
IEJTVFIgbWltZVR5cGUsIF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgTUlNRVR5cGVzU2hvd25Bc0hUTUwoX0NPTV9PdXRwdHJfb3B0XyBJRW51bVZB
UklBTlQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1JTUVU
eXBlc1Nob3duQXNIVE1MKF9faW5vdXRfZWNvdW50X2Z1bGwoY01pbWVUeXBlcykgQlNUUiogbWlt
ZVR5cGVzLCBpbnQgY01pbWVUeXBlcyk7IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBVUkxGcm9tUGFzdGVib2FyZChfSW5fb3B0XyBJRGF0YU9iamVjdCogcGFzdGVib2Fy
ZCwgX0RlcmVmX29wdF9vdXRfIEJTVFIqIHVybCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFVSTFRpdGxlRnJvbVBhc3RlYm9hcmQoX0luX29wdF8gSURhdGFPYmplY3Qq
IHBhc3RlYm9hcmQsIF9EZXJlZl9vcHRfb3V0XyBCU1RSKiB1cmxUaXRsZSk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoRnJhbWUoUkVDVCBmcmFtZSwgX0lu
XyBCU1RSIGZyYW1lTmFtZSwgX0luXyBCU1RSIGdyb3VwTmFtZSk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFjY2Vzc2liaWxpdHlEZWxlZ2F0ZShfSW5fb3B0XyBJ
QWNjZXNzaWJpbGl0eURlbGVnYXRlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGFjY2Vzc2liaWxpdHlEZWxlZ2F0ZShfQ09NX091dHB0cl9vcHRfIElBY2Nlc3NpYmls
aXR5RGVsZWdhdGUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dFVJRGVsZWdhdGUoX0luX29wdF8gSVdlYlVJRGVsZWdhdGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdWlEZWxlZ2F0ZShfQ09NX091dHB0cl9vcHRfIElXZWJVSURl
bGVnYXRlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRSZXNv
dXJjZUxvYWREZWxlZ2F0ZShfSW5fb3B0XyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVzb3VyY2VMb2FkRGVsZWdhdGUo
X0NPTV9PdXRwdHJfb3B0XyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUqKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERvd25sb2FkRGVsZWdhdGUoX0luX29wdF8g
SVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZG93bmxvYWREZWxlZ2F0ZShfQ09NX091dHB0cl9vcHRfIElXZWJEb3dubG9hZERlbGVn
YXRlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGcmFtZUxv
YWREZWxlZ2F0ZShfSW5fb3B0XyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZnJhbWVMb2FkRGVsZWdhdGUoX0NPTV9PdXRwdHJf
b3B0XyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFBvbGljeURlbGVnYXRlKF9Jbl9vcHRfIElXZWJQb2xpY3lEZWxlZ2F0
ZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwb2xpY3lEZWxlZ2F0
ZShfQ09NX091dHB0cl9vcHRfIElXZWJQb2xpY3lEZWxlZ2F0ZSoqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFpbkZyYW1lKF9DT01fT3V0cHRyX29wdF8gSVdlYkZy
YW1lKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb2N1c2VkRnJh
bWUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWUqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGJhY2tGb3J3YXJkTGlzdChfQ09NX091dHB0cl9vcHRfIElXZWJCYWNr
Rm9yd2FyZExpc3QqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dE1haW50YWluc0JhY2tGb3J3YXJkTGlzdChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZ29CYWNrKF9PdXRfIEJPT0wqIHN1Y2NlZWRlZCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdvRm9yd2FyZChfT3V0XyBCT09MKiBzdWNjZWVk
ZWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnb1RvQmFja0Zvcndh
cmRJdGVtKF9Jbl9vcHRfIElXZWJIaXN0b3J5SXRlbSosIF9PdXRfIEJPT0wqIHN1Y2NlZWRlZCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRTaXplTXVsdGlw
bGllcihmbG9hdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRleHRT
aXplTXVsdGlwbGllcihfT3V0XyBmbG9hdCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoX0luXyBCU1RSKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KF9EZXJlZl9vcHRfb3V0XyBCU1RSKik7ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0Q3VzdG9tVXNlckFnZW50KF9Jbl8gQlNUUik7IAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXN0b21Vc2VyQWdlbnQoX0RlcmVmX29wdF9v
dXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlckFn
ZW50Rm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9EZXJlZl9vcHRfb3V0XyBCU1RSKiB1c2VyQWdlbnQp
OyAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3VwcG9ydHNUZXh0RW5j
b2RpbmcoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoX0RlcmVmX29wdF9v
dXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWVk
aWFTdHlsZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBtZWRpYVN0eWxlKF9EZXJlZl9vcHRfb3V0XyBCU1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5n
KF9Jbl8gQlNUUiBzY3JpcHQsIF9EZXJlZl9vcHRfb3V0XyBCU1RSKiByZXN1bHQpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aW5kb3dTY3JpcHRPYmplY3QoX0NPTV9P
dXRwdHJfb3B0XyBJV2ViU2NyaXB0T2JqZWN0KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRQcmVmZXJlbmNlcyhfSW5fb3B0XyBJV2ViUHJlZmVyZW5jZXMqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZmVyZW5jZXMoX0NPTV9P
dXRwdHJfb3B0XyBJV2ViUHJlZmVyZW5jZXMqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFByZWZlcmVuY2VzSWRlbnRpZmllcihfSW5fIEJTVFIpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmVmZXJlbmNlc0lkZW50aWZpZXIoX0Rl
cmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0SG9zdFdpbmRvdyhfSW5fIEhXTkQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBob3N0V2luZG93KF9EZXJlZl9vcHRfb3V0XyBIV05EKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlYXJjaEZvcihfSW5fIEJTVFIsIEJPT0wgZm9y
d2FyZCwgQk9PTCBjYXNlRmxhZywgQk9PTCB3cmFwRmxhZywgX091dF8gQk9PTCAqZm91bmQpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdpc3RlclZpZXdDbGFzcyhf
SW5fb3B0XyBJV2ViRG9jdW1lbnRWaWV3KiwgX0luX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50
YXRpb24qLCBfSW5fIEJTVFIgZm9yTUlNRVR5cGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRHcm91cE5hbWUoX0luXyBCU1RSKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZ3JvdXBOYW1lKF9EZXJlZl9vcHRfb3V0XyBCU1RSKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVzdGltYXRlZFByb2dyZXNzKF9P
dXRfIGRvdWJsZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0xv
YWRpbmcoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBlbGVtZW50QXRQb2ludChfSW5fIExQUE9JTlQsIF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5
QmFnKiogZWxlbWVudERpY3Rpb25hcnkpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24oX0NPTV9PdXRwdHJfb3B0XyBJRW51
bVZBUklBTlQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdyaXRl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlcyhfX2lub3V0X2Vjb3VudF9mdWxsKGNUeXBlcykg
QlNUUiogdHlwZXMsIGludCBjVHlwZXMsIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiBwYXN0ZWJvYXJk
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFzdGVib2FyZFR5cGVz
Rm9yRWxlbWVudChfSW5fb3B0XyBJUHJvcGVydHlCYWcqIGVsZW1lbnREaWN0aW9uYXJ5LCBfQ09N
X091dHB0cl9vcHRfIElFbnVtVkFSSUFOVCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd3JpdGVFbGVtZW50KF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogZWxlbWVudERp
Y3Rpb25hcnksIF9faW5vdXRfZWNvdW50X2Z1bGwoY1dpdGhQYXN0ZWJvYXJkVHlwZXMpIEJTVFIq
IHdpdGhQYXN0ZWJvYXJkVHlwZXMsIGludCBjV2l0aFBhc3RlYm9hcmRUeXBlcywgX0luX29wdF8g
SURhdGFPYmplY3QqIHBhc3RlYm9hcmQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZWxlY3RlZFRleHQoX0RlcmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYShf
SW5fb3B0XyBJVW5rbm93biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbW92ZURyYWdDYXJldFRvUG9pbnQoX0luXyBMUFBPSU5UKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlRHJhZ0NhcmV0KCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERyYXdzQmFja2dyb3VuZChCT09MKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd3NCYWNrZ3JvdW5kKF9PdXRf
IEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWFpbkZy
YW1lVVJMKF9Jbl8gQlNUUiB1cmxTdHJpbmcpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBtYWluRnJhbWVVUkwoX0RlcmVmX29wdF9vdXRfIEJTVFIqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFpbkZyYW1lRG9jdW1lbnQoX0NPTV9PdXRw
dHJfb3B0XyBJRE9NRG9jdW1lbnQqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIG1haW5GcmFtZVRpdGxlKF9EZXJlZl9vcHRfb3V0XyBCU1RSKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1haW5GcmFtZUljb24oX0RlcmVmX29wdF9vdXRf
IEhCSVRNQVAqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0
ZXJVUkxTY2hlbWVBc0xvY2FsKF9Jbl8gQlNUUiBzY2hlbWUpOwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjbG9zZSgpOwogCiAgICAgLy8gSVdlYklCQWN0aW9ucwotCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRha2VTdHJpbmdVUkxGcm9tKCAK
LSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RvcExvYWRpbmcoIAotICAgICAgICAvKiBbaW5d
ICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZWxvYWQoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5Hb0JhY2so
IAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZ29CYWNrKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2Vu
ZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuR29G
b3J3YXJkKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVyLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGdvRm9yd2FyZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVu
a25vd24gKnNlbmRlcik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNhbk1ha2VUZXh0TGFyZ2VyKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2Vu
ZGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VUZXh0TGFyZ2VyKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuTWFrZVRleHRTbWFsbGVyKCAKLSAgICAgICAgLyog
W2luXSAqLyBJVW5rbm93biAqc2VuZGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG1ha2VUZXh0U21hbGxlciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24gKnNlbmRlcik7
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuTWFrZVRleHRTdGFu
ZGFyZFNpemUoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZVRleHRTdGFuZGFyZFNpemUoIAotICAgICAgICAv
KiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZyggCi0gICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24gKnNlbmRlcik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCAKLSAgICAgICAgLyog
W2luXSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoIAotICAgICAgICAvKiBbaW5dICovIElV
bmtub3duICpzZW5kZXIpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJlbG9hZEZyb21PcmlnaW4oIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWtlU3RyaW5nVVJMRnJv
bShfSW5fb3B0XyBJVW5rbm93biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc3RvcExvYWRpbmcoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbG9hZChfSW5fb3B0XyBJVW5rbm93
biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuR29C
YWNrKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdvQmFjayhfSW5fb3B0XyBJVW5rbm93
biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuR29G
b3J3YXJkKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdvRm9yd2FyZChfSW5fb3B0XyBJ
VW5rbm93biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y2FuTWFrZVRleHRMYXJnZXIoX0luX29wdF8gSVVua25vd24qIHNlbmRlciwgX091dF8gQk9PTCog
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZVRleHRM
YXJnZXIoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGNhbk1ha2VUZXh0U21hbGxlcihfSW5fb3B0XyBJVW5rbm93biogc2Vu
ZGVyLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBtYWtlVGV4dFNtYWxsZXIoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbk1ha2VUZXh0U3RhbmRhcmRTaXpl
KF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIsIF9PdXRfIEJPT0wqIHJlc3VsdCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VUZXh0U3RhbmRhcmRTaXplKF9Jbl9v
cHRfIElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZyhfSW5fb3B0XyBJVW5rbm93biogc2Vu
ZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdG9nZ2xlU21hcnRJ
bnNlcnREZWxldGUoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHRvZ2dsZUdyYW1tYXJDaGVja2luZyhfSW5fb3B0XyBJVW5r
bm93biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVs
b2FkRnJvbU9yaWdpbihfSW5fb3B0XyBJVW5rbm93biogc2VuZGVyKTsKIAogICAgIC8vIElXZWJW
aWV3Q1NTCi0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29tcHV0ZWRT
dHlsZUZvckVsZW1lbnQoIAotICAgICAgICAvKiBbaW5dICovIElET01FbGVtZW50ICplbGVtZW50
LAotICAgICAgICAvKiBbaW5dICovIEJTVFIgcHNldWRvRWxlbWVudCwKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKnN0eWxlKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29tcHV0ZWRTdHlsZUZvckVsZW1lbnQoX0lu
X29wdF8gSURPTUVsZW1lbnQqLCBfSW5fIEJTVFIgcHNldWRvRWxlbWVudCwgX0NPTV9PdXRwdHJf
b3B0XyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioqKTsKIAogICAgIC8vIElXZWJWaWV3RWRpdGlu
ZwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVkaXRhYmxlRE9NUmFu
Z2VGb3JQb2ludCggCi0gICAgICAgIC8qIFtpbl0gKi8gTFBQT0lOVCBwb2ludCwKLSAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NUmFuZ2UgKipyYW5nZSk7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFNlbGVjdGVkRE9NUmFuZ2UoIAotICAgICAg
ICAvKiBbaW5dICovIElET01SYW5nZSAqcmFuZ2UsCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViU2Vs
ZWN0aW9uQWZmaW5pdHkgYWZmaW5pdHkpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZWxlY3RlZERPTVJhbmdlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NUmFuZ2UgKipyYW5nZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNlbGVjdGlvbkFmZmluaXR5KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XVtyZXR2YWxdW291dF0gKi8gV2ViU2VsZWN0aW9uQWZmaW5pdHkgKmFmZmluaXR5KTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RWRpdGFibGUoIAotICAg
ICAgICAvKiBbaW5dICovIEJPT0wgZmxhZyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGlzRWRpdGFibGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wgKmlzRWRpdGFibGUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRUeXBpbmdTdHlsZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUNTU1N0eWxl
RGVjbGFyYXRpb24gKnN0eWxlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdHlwaW5nU3R5bGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01D
U1NTdHlsZURlY2xhcmF0aW9uICoqc3R5bGUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoIAotICAgICAgICAv
KiBbaW5dICovIEJPT0wgZmxhZyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8g
Qk9PTCAqZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCggCi0gICAgICAgIC8qIFtpbl0gKi8g
Qk9PTCBmbGFnKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBC
T09MICplbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoIAotICAgICAgICAvKiBbaW5dICovIEJP
T0wgZmxhZyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MICplbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIGludCAqdGFnKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdW5kb01hbmFnZXIoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJVbmRv
TWFuYWdlciAqKm1hbmFnZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRFZGl0aW5nRGVsZWdhdGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJFZGl0
aW5nRGVsZWdhdGUgKmQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBlZGl0aW5nRGVsZWdhdGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJF
ZGl0aW5nRGVsZWdhdGUgKipkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc3R5bGVEZWNsYXJhdGlvbldpdGhUZXh0KCAKLSAgICAgICAgLyogW2luXSAqLyBC
U1RSIHRleHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKipzdHlsZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhhc1NlbGVjdGVkUmFuZ2UoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
Kmhhc1NlbGVjdGVkUmFuZ2UpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBjdXRFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpl
bmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29w
eUVuYWJsZWQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmVuYWJsZWQpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXN0ZUVuYWJsZWQo
IAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKmVuYWJsZWQpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWxldGVFbmFibGVkKCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICplbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlZGl0aW5nRW5hYmxlZCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCAqZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCAKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MICplbmFibGVkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZCggCi0gICAgICAgIEJPT0wg
ZW5hYmxlZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UGFn
ZVNpemVNdWx0aXBsaWVyKCAKLSAgICAgICAgLyogW2luXSAqLyBmbG9hdCBtdWx0aXBsaWVyKTsK
LSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFnZVNpemVNdWx0
aXBsaWVyKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBmbG9hdCAqbXVsdGlwbGllcik7
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuWm9vbVBhZ2VJbigg
Ci0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24gKnNlbmRlciwKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB6b29tUGFnZUluKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAq
c2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2Fu
Wm9vbVBhZ2VPdXQoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgem9vbVBhZ2VPdXQoIAotICAgICAgICAvKiBbaW5d
ICovIElVbmtub3duICpzZW5kZXIpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNhblJlc2V0UGFnZVpvb20oIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpz
ZW5kZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVzZXRQYWdlWm9vbSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24gKnNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGVkaXRhYmxlRE9NUmFuZ2VGb3JQb2ludChfSW5fIExQUE9JTlQs
IF9DT01fT3V0cHRyX29wdF8gSURPTVJhbmdlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRTZWxlY3RlZERPTVJhbmdlKF9Jbl9vcHRfIElET01SYW5nZSosIFdl
YlNlbGVjdGlvbkFmZmluaXR5KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2VsZWN0ZWRET01SYW5nZShfQ09NX091dHB0cl9vcHRfIElET01SYW5nZSoqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VsZWN0aW9uQWZmaW5pdHkoX091dF8g
V2ViU2VsZWN0aW9uQWZmaW5pdHkqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0RWRpdGFibGUoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlzRWRpdGFibGUoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRUeXBpbmdTdHlsZShfSW5fb3B0XyBJRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0eXBpbmdTdHls
ZShfQ09NX091dHB0cl9vcHRfIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
Qk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoQk9PTCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChCT09MKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzcGVsbENoZWNrZXJEb2N1bWVudFRhZyhfT3V0XyBpbnQqIHRhZyk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVuZG9NYW5hZ2VyKF9DT01fT3V0cHRyX29wdF8gSVdl
YlVuZG9NYW5hZ2VyKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRFZGl0aW5nRGVsZWdhdGUoX0luX29wdF8gSVdlYkVkaXRpbmdEZWxlZ2F0ZSopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlZGl0aW5nRGVsZWdhdGUoX0NPTV9PdXRw
dHJfb3B0XyBJV2ViRWRpdGluZ0RlbGVnYXRlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzdHlsZURlY2xhcmF0aW9uV2l0aFRleHQoX0luXyBCU1RSIHRleHQsIF9D
T01fT3V0cHRyX29wdF8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc1NlbGVjdGVkUmFuZ2UoX091dF8gQk9PTCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXRFbmFibGVkKF9PdXRfIEJP
T0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29weUVuYWJsZWQo
X091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXN0
ZUVuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkZWxldGVFbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZWRpdGluZ0VuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoX091dF8g
Qk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRQYWdlU2l6ZU11bHRpcGxpZXIoZmxvYXQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBwYWdlU2l6ZU11bHRpcGxpZXIoX091dF8gZmxvYXQqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuWm9vbVBhZ2VJbihfSW5fb3B0XyBJ
VW5rbm93biogc2VuZGVyLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB6b29tUGFnZUluKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5ab29tUGFnZU91dChf
SW5fb3B0XyBJVW5rbm93biogc2VuZGVyLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB6b29tUGFnZU91dChfSW5fb3B0XyBJVW5rbm93
biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuUmVz
ZXRQYWdlWm9vbShfSW5fb3B0XyBJVW5rbm93biogc2VuZGVyLCBfT3V0XyBCT09MKiByZXN1bHQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXNldFBhZ2Vab29tKF9J
bl9vcHRfIElVbmtub3duKiBzZW5kZXIpOwogCiAgICAgLy8gSVdlYlZpZXdVbmRvYWJsZUVkaXRp
bmcKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlU2VsZWN0
aW9uV2l0aE5vZGUoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpub2RlKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpOwotICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlU2VsZWN0aW9uV2l0aE1hcmt1cFN0
cmluZyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBtYXJrdXBTdHJpbmcpOwotICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlU2VsZWN0aW9uV2l0aEFy
Y2hpdmUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJBcmNoaXZlICphcmNoaXZlKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlU2VsZWN0aW9uKCB2
b2lkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVhclNlbGVj
dGlvbih2b2lkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YXBwbHlTdHlsZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24g
KnN0eWxlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZVNl
bGVjdGlvbldpdGhOb2RlKF9Jbl9vcHRfIElET01Ob2RlKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChfSW5fIEJTVFIpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlU2VsZWN0aW9uV2l0
aE1hcmt1cFN0cmluZyhfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSByZXBsYWNlU2VsZWN0aW9uV2l0aEFyY2hpdmUoX0luX29wdF8gSVdlYkFyY2hpdmUq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlU2VsZWN0aW9u
KCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFyU2VsZWN0aW9u
KCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGx5U3R5bGUoX0lu
X29wdF8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qKTsKIAogICAgIC8vIElXZWJWaWV3RWRpdGlu
Z0FjdGlvbnMKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3B5KCAK
LSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3V0KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5r
bm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcGFzdGUoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3B5VVJMKCAKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIHVybCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY29weUZvbnQoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXN0ZUZvbnQoIAot
ICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWxldGVfKCAKLSAgICAgICAgLyogW2luXSAqLyBJ
VW5rbm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcGFzdGVBc1BsYWluVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24gKnNl
bmRlcik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhc3Rl
QXNSaWNoVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24gKnNlbmRlcik7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoYW5nZUZvbnQoIAotICAg
ICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGFuZ2VBdHRyaWJ1dGVzKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2hhbmdlRG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoIAotICAgICAgICAvKiBb
aW5dICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjaGFuZ2VDb2xvciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24g
KnNlbmRlcik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFs
aWduQ2VudGVyKCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxpZ25KdXN0aWZpZWQoIAot
ICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGlnbkxlZnQoIAotICAgICAgICAvKiBbaW5dICov
IElVbmtub3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhbGlnblJpZ2h0KCAKLSAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVy
KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hlY2tTcGVs
bGluZyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24gKnNlbmRlcik7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3dHdWVzc1BhbmVsKCAKLSAgICAg
ICAgLyogW2luXSAqLyBJVW5rbm93biAqc2VuZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcGVyZm9ybUZpbmRQYW5lbEFjdGlvbiggCi0gICAgICAgIC8q
IFtpbl0gKi8gSVVua25vd24gKnNlbmRlcik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHN0YXJ0U3BlYWtpbmcoIAotICAgICAgICAvKiBbaW5dICovIElVbmtu
b3duICpzZW5kZXIpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdG9wU3BlYWtpbmcoIAotICAgICAgICAvKiBbaW5dICovIElVbmtub3duICpzZW5kZXIpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3B5KF9Jbl9vcHRfIElVbmtu
b3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjdXQo
X0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3B5VVJMKF9Jbl8gQlNUUiB1cmwpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb3B5Rm9udChfSW5fb3B0XyBJVW5rbm93
biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFzdGVG
b250KF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXN0ZUFzUGxhaW5UZXh0KF9Jbl9vcHRf
IElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwYXN0ZUFzUmljaFRleHQoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoYW5nZUZvbnQoX0luX29wdF8gSVVua25vd24q
IHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoYW5nZUF0
dHJpYnV0ZXMoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNoYW5nZURvY3VtZW50QmFja2dyb3VuZENvbG9yKF9Jbl9vcHRf
IElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjaGFuZ2VDb2xvcihfSW5fb3B0XyBJVW5rbm93biogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxpZ25DZW50ZXIoX0luX29wdF8gSVVua25vd24qIHNl
bmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsaWduSnVzdGlm
aWVkKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhbGlnbkxlZnQoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsaWduUmlnaHQoX0luX29wdF8gSVVu
a25vd24qIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNo
ZWNrU3BlbGxpbmcoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNob3dHdWVzc1BhbmVsKF9Jbl9vcHRfIElVbmtub3duKiBz
ZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwZXJmb3JtRmlu
ZFBhbmVsQWN0aW9uKF9Jbl9vcHRfIElVbmtub3duKiBzZW5kZXIpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdGFydFNwZWFraW5nKF9Jbl9vcHRfIElVbmtub3duKiBz
ZW5kZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdG9wU3BlYWtp
bmcoX0luX29wdF8gSVVua25vd24qIHNlbmRlcik7CiAKICAgICAvLyBJV2ViTm90aWZpY2F0aW9u
T2JzZXJ2ZXIKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvbk5vdGlm
eSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYk5vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb25Ob3RpZnkoX0luX29wdF8g
SVdlYk5vdGlmaWNhdGlvbiopOwogCiAgICAgLy8gSVdlYlZpZXdQcml2YXRlCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE1JTUVUeXBlRm9yRXh0ZW5zaW9uKAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgZXh0ZW5zaW9uLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIgKm1pbWVUeXBlKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRDdXN0b21Ecm9wVGFyZ2V0KAotICAgICAgICAvKiBbaW5dICovIElEcm9wVGFyZ2V0KiBk
dCk7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTUlNRVR5cGVGb3JF
eHRlbnNpb24oX0luXyBCU1RSIGV4dGVuc2lvbiwgX0RlcmVmX29wdF9vdXRfIEJTVFIgKm1pbWVU
eXBlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q3VzdG9tRHJv
cFRhcmdldChfSW5fb3B0XyBJRHJvcFRhcmdldCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZW1vdmVDdXN0b21Ecm9wVGFyZ2V0KCk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW5WaWV3U291cmNlTW9kZSggCi0gICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBmbGFnKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaW5WaWV3U291cmNlTW9kZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCogZmxhZyk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmll
d1dpbmRvdygvKiBbcmV0dmFsXVtvdXRdICovIEhXTkQqIHdpbmRvdyk7Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Rm9ybURlbGVnYXRlKCAKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViRm9ybURlbGVnYXRlICpmb3JtRGVsZWdhdGUpOwotCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvcm1EZWxlZ2F0ZSggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSVdlYkZvcm1EZWxlZ2F0ZSAqKmZvcm1EZWxlZ2F0ZSk7Ci0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRl
KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlICpmcmFt
ZUxvYWREZWxlZ2F0ZVByaXZhdGUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSAqKmZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsT2Zm
c2V0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBMUFBPSU5UIG9mZnNldCk7Ci0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsQnkoIAotICAgICAgICAv
KiBbaW5dICovIExQUE9JTlQgb2Zmc2V0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB2aXNpYmxlQ29udGVudFJlY3QoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIExQUkVDVCByZWN0KTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRJblZpZXdTb3VyY2VNb2RlKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpblZpZXdTb3VyY2VNb2RlKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlld1dpbmRvdyhfRGVyZWZfb3B0X291dF8gSFdORCop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGb3JtRGVsZWdhdGUo
X0luX29wdF8gSVdlYkZvcm1EZWxlZ2F0ZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBmb3JtRGVsZWdhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRm9ybURlbGVnYXRl
KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGcmFtZUxvYWRE
ZWxlZ2F0ZVByaXZhdGUoX0luX29wdF8gSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmcmFtZUxvYWREZWxlZ2F0ZVBy
aXZhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKiopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxPZmZzZXQoX091dF8g
TFBQT0lOVCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcm9sbEJ5
KF9Jbl8gTFBQT0lOVCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZp
c2libGVDb250ZW50UmVjdChfT3V0XyBMUFJFQ1QpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB1cGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGUoKTsKLQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoQlNU
UiBuYW1lLCBCU1RSIHZhbHVlKTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoX0luXyBCU1RSIG5hbWUsIF9Jbl8gQlNUUiB2
YWx1ZSk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFyTWFpbkZy
YW1lTmFtZSgpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1hcmtB
bGxNYXRjaGVzRm9yVGV4dCgKLSAgICAgICAgQlNUUiBzZWFyY2gsIEJPT0wgY2FzZVNlbnNpdGl2
ZSwgQk9PTCBoaWdobGlnaHQsIFVJTlQgbGltaXQsIFVJTlQqIG1hdGNoZXMpOwotCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1hcmtBbGxNYXRjaGVzRm9yVGV4dChfSW5f
IEJTVFIgc2VhcmNoLCBCT09MIGNhc2VTZW5zaXRpdmUsIEJPT0wgaGlnaGxpZ2h0LCBVSU5UIGxp
bWl0LCBfT3V0XyBVSU5UKiBtYXRjaGVzKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSByZWN0c0ZvclRleHRNYXRjaGVzKAotICAgICAgICBJRW51bVRleHRN
YXRjaGVzKiogcG1hdGNoZXMpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdlbmVyYXRlU2VsZWN0aW9uSW1hZ2UoQk9PTCBmb3JjZVdoaXRlVGV4dCwgSEJJVE1BUCog
aEJpdG1hcCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VsZWN0
aW9uUmVjdCgKLSAgICAgICAgUkVDVCogcmMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBEcmFnRW50ZXIoCi0gICAgICAgIElEYXRhT2JqZWN0KiBwRGF0YU9i
amVjdCwgRFdPUkQgZ3JmS2V5U3RhdGUsIFBPSU5UTCBwdCwgRFdPUkQqIHBkd0VmZmVjdCk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRHJhZ092ZXIoCi0gICAgICAg
IERXT1JEIGdyZktleVN0YXRlLCBQT0lOVEwgcHQsIERXT1JEKiBwZHdFZmZlY3QpOwotICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWN0c0ZvclRleHRNYXRjaGVz
KF9DT01fT3V0cHRyX29wdF8gSUVudW1UZXh0TWF0Y2hlcyoqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2VuZXJhdGVTZWxlY3Rpb25JbWFnZShCT09MIGZvcmNlV2hp
dGVUZXh0LCBfRGVyZWZfb3B0X291dF8gSEJJVE1BUCogaEJpdG1hcCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVjdGlvblJlY3QoX0lub3V0XyBSRUNUKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERyYWdFbnRlcihJRGF0YU9iamVj
dCosIERXT1JEIGdyZktleVN0YXRlLCBQT0lOVEwsIERXT1JEKiBwZHdFZmZlY3QpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEcmFnT3ZlcihEV09SRCBncmZLZXlTdGF0
ZSwgUE9JTlRMIHB0LCBEV09SRCogcGR3RWZmZWN0KTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRHJhZ0xlYXZlKCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERyb3AoCi0gICAgICAgIElEYXRhT2JqZWN0KiBwRGF0YU9iamVjdCwg
RFdPUkQgZ3JmS2V5U3RhdGUsIFBPSU5UTCBwdCwgRFdPUkQqIHBkd0VmZmVjdCk7Ci0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuSGFuZGxlUmVxdWVzdCggCi0gICAg
ICAgIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0LAotICAgICAgICBCT09MICpyZXN1bHQpOwotCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0YW5kYXJkVXNlckFnZW50V2l0
aEFwcGxpY2F0aW9uTmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBhcHBsaWNhdGlvbk5h
bWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqZ3JvdXBOYW1lKTsKLQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEcm9wKElEYXRhT2JqZWN0KiwgRFdP
UkQgZ3JmS2V5U3RhdGUsIFBPSU5UTCwgRFdPUkQqIHBkd0VmZmVjdCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbkhhbmRsZVJlcXVlc3QoX0luX29wdF8gSVdlYlVS
TFJlcXVlc3QqLCBfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShfSW5fIEJTVFIgYXBw
bGljYXRpb25OYW1lLCBfRGVyZWZfb3B0X291dF8gQlNUUiAqZ3JvdXBOYW1lKTsKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xlYXJGb2N1c05vZGUoKTsKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRJbml0aWFsRm9jdXMoCi0gICAgICAg
IC8qIFtpbl0gKi8gQk9PTCBmb3J3YXJkKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCAKLSAgICAgICAg
LyogW2luXSAqLyBCT09MIGN5Y2xlcyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRBbGxvd1NpdGVTcGVjaWZpY0hhY2tzKAotICAgICAgICAvKiBbaW5d
ICovIEJPT0wgYWxsb3dzKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBhZGRBZGRpdGlvbmFsUGx1Z2luRGlyZWN0b3J5KCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
IGRpcmVjdG9yeSk7ICAgIAotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGxvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3KCAKLSAgICAgICAgLyogW2luXSAqLyBJ
V2ViVmlldyAqb3RoZXJWaWV3KTsKLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGluc3BlY3RvcigKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJV2Vi
SW5zcGVjdG9yKiopOwotCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEluaXRpYWxGb2N1cyhCT09MIGZvcndhcmQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoQk9PTCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
cyhfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEFsbG93U2l0ZVNwZWNpZmljSGFja3MoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGFkZEFkZGl0aW9uYWxQbHVnaW5EaXJlY3RvcnkoX0luXyBCU1RSKTsgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvYWRCYWNrRm9yd2FyZExp
c3RGcm9tT3RoZXJWaWV3KF9Jbl9vcHRfIElXZWJWaWV3Kik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGluc3BlY3RvcihfQ09NX091dHB0cl9vcHRfIElXZWJJbnNwZWN0
b3IqKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCB2b2lkKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2hvdWxkQ2xvc2UoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCk7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkQ2xvc2Uo
X091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQ
cm9oaWJpdHNNYWluRnJhbWVTY3JvbGxpbmcoQk9PTCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFNob3VsZEFwcGx5TWFjRm9udEFzY2VudEhhY2soQk9PTCk7Ci0K
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2luZG93QW5jZXN0cnlEaWRD
aGFuZ2UoKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludERv
Y3VtZW50UmVjdFRvQ29udGV4dChSRUNULCBIREMpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBhaW50U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KFJFQ1Qs
IFBPSU5ULCBIREMpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
cG9ydEV4Y2VwdGlvbigKLSAgICAgICAgLyogW2luXSAqLyBKU0NvbnRleHRSZWYgY29udGV4dCwK
LSAgICAgICAgLyogW2luXSAqLyBKU1ZhbHVlUmVmIGV4Y2VwdGlvbik7Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZWxlbWVudEZyb21KUygKLSAgICAgICAgLyogW2lu
XSAqLyBKU0NvbnRleHRSZWYgY29udGV4dCwKLSAgICAgICAgLyogW2luXSAqLyBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQgKipl
bGVtZW50KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDdXN0
b21IVE1MVG9rZW5pemVyVGltZURlbGF5KAotICAgICAgICAvKiBbaW5dICovIGRvdWJsZSB0aW1l
RGVsYXkpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEN1c3Rv
bUhUTUxUb2tlbml6ZXJDaHVua1NpemUoCi0gICAgICAgIC8qIFtpbl0gKi8gaW50IGNodW5rU2l6
ZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYmFja2luZ1N0b3Jl
KC8qIFtvdXQsIHJldHZhbF0gKi8gSEJJVE1BUCogaEJpdG1hcCk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VHJhbnNwYXJlbnQoCi0gICAgICAgIC8qIFtpbl0g
Ki8gQk9PTCB0cmFuc3BhcmVudCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdHJhbnNwYXJlbnQoCi0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogdHJh
bnNwYXJlbnQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERl
ZmVyc0NhbGxiYWNrcygKLSAgICAgICAgLyogW2luXSAqLyBCT09MIGRlZmVyc0NhbGxiYWNrcyk7
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmZXJzQ2FsbGJhY2tz
KAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIEJPT0wqIGRlZmVyc0NhbGxiYWNrcyk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2xvYmFsSGlzdG9yeUl0ZW0o
Ci0gICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSVdlYkhpc3RvcnlJdGVtKiogaXRlbSk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWx3YXlzVXNlc0NvbXBs
ZXhUZXh0Q29kZVBhdGgoCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBjb21wbGV4KTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbHdheXNVc2VzQ29tcGxleFRleHRD
b2RlUGF0aCgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiBjb21wbGV4KTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb29raWVFbmFibGVkKAot
ICAgICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjb29raWVFbmFibGVkKAotICAgICAgICAvKiBbb3V0LCByZXR2YWxd
ICovIEJPT0wqIGVuYWJsZWQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldE1lZGlhVm9sdW1lKAotICAgICAgICAvKiBbaW5dICovIGZsb2F0IHZvbHVtZSk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWVkaWFWb2x1bWUoCi0gICAg
ICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gZmxvYXQqIHZvbHVtZSk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBtaW1lVHlwZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0TWVtb3J5Q2FjaGVEZWxlZ2F0ZUNhbGxzRW5hYmxlZCggCi0g
ICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRKYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQoCi0gICAgICAgIC8q
IFtpbl0gKi8gQk9PTCBhcmVBbGxvd2VkKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRDYW5TdGFydFBsdWdpbnMoCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBj
YW5TdGFydFBsdWdpbnMpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGFkZFVzZXJTY3JpcHRUb0dyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQqLCBC
U1RSIHNvdXJjZSwgQlNUUiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdoaXRlbGlzdENvdW50LCBCU1RSKiB3
aGl0ZWxpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBibGFja2xpc3RDb3VudCwgQlNUUiogYmxhY2tsaXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdl
YlNjcmlwdFdvcmxkKiwgQlNUUiBzb3VyY2UsIEJTVFIgdXJsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2hp
dGVsaXN0Q291bnQsIEJTVFIqIHdoaXRlbGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBibGFja2xpc3RD
b3VudCwgQlNUUiogYmxhY2tsaXN0KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlw
dFdvcmxkKiwgQlNUUiB1cmwpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlw
dFdvcmxkKiwgQlNUUiB1cmwpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVVc2VyU2NyaXB0c0Zyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdv
cmxkKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVVzZXJT
dHlsZVNoZWV0c0Zyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKik7Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUFsbFVzZXJDb250ZW50
RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lKTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwYWludERvY3VtZW50UmVjdFRvQ29udGV4dChSRUNULCBfSW5fIEhEQyk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50U2Nyb2xsVmlld1JlY3RU
b0NvbnRleHRBdFBvaW50KFJFQ1QsIFBPSU5ULCBfSW5fIEhEQyk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJlcG9ydEV4Y2VwdGlvbihfSW5fIEpTQ29udGV4dFJlZiwg
X0luXyBKU1ZhbHVlUmVmIGV4Y2VwdGlvbik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGVsZW1lbnRGcm9tSlMoX0luXyBKU0NvbnRleHRSZWYsIF9Jbl8gSlNWYWx1ZVJl
ZiBub2RlT2JqZWN0LCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZW50KiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURl
bGF5KGRvdWJsZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEN1
c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoaW50KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgYmFja2luZ1N0b3JlKF9EZXJlZl9vcHRfb3V0XyBIQklUTUFQKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRyYW5zcGFyZW50KEJPT0wp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFuc3BhcmVudChfT3V0
XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERlZmVy
c0NhbGxiYWNrcyhCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZGVmZXJzQ2FsbGJhY2tzKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2xvYmFsSGlzdG9yeUl0ZW0oX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9y
eUl0ZW0qKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsd2F5
c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChfT3V0XyBCT09MKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENvb2tpZUVuYWJsZWQo
Qk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvb2tpZUVuYWJs
ZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRNZWRpYVZvbHVtZShmbG9hdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG1lZGlhVm9sdW1lKF9PdXRfIGZsb2F0KiB2b2x1bWUpOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKF9Jbl8gQlNU
Uik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1lbW9yeUNhY2hl
RGVsZWdhdGVDYWxsc0VuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZChCT09MKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q2FuU3RhcnRQbHVnaW5zKEJPT0wpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRVc2VyU2NyaXB0VG9Hcm91cChf
SW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V29ybGQqLCBfSW5fIEJTVFIg
c291cmNlLCBfSW5fIEJTVFIgdXJsLAorICAgICAgICB1bnNpZ25lZCB3aGl0ZWxpc3RDb3VudCwg
X19pbm91dF9lY291bnRfZnVsbCh3aGl0ZWxpc3RDb3VudCkgQlNUUiogd2hpdGVsaXN0LCB1bnNp
Z25lZCBibGFja2xpc3RDb3VudCwKKyAgICAgICAgX19pbm91dF9lY291bnRfZnVsbChibGFja2xp
c3RDb3VudCkgQlNUUiogYmxhY2tsaXN0LCBXZWJVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZFVzZXJTdHlsZVNoZWV0VG9H
cm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V29ybGQqLCBfSW5f
IEJTVFIgc291cmNlLCBfSW5fIEJTVFIgdXJsLAorICAgICAgICB1bnNpZ25lZCB3aGl0ZWxpc3RD
b3VudCwgX19pbm91dF9lY291bnRfZnVsbCh3aGl0ZWxpc3RDb3VudCkgQlNUUiogd2hpdGVsaXN0
LCB1bnNpZ25lZCBibGFja2xpc3RDb3VudCwgX19pbm91dF9lY291bnRfZnVsbChibGFja2xpc3RD
b3VudCkgQlNUUiogYmxhY2tsaXN0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5f
b3B0XyBJV2ViU2NyaXB0V29ybGQqLCBfSW5fIEJTVFIgdXJsKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tR3JvdXAoX0luXyBC
U1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvcmxkKiwgX0luXyBCU1RSIHVybCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVVzZXJTY3JpcHRz
RnJvbUdyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXb3JsZCop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVVc2VyU3R5bGVT
aGVldHNGcm9tR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdv
cmxkKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUFsbFVz
ZXJDb250ZW50RnJvbUdyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUpOwogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQxKCk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHVudXNlZDIoKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKGNvbnN0IFJFQ1QqKTsKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShCU1RSIHNvdXJjZU9yaWdpbiwgQlNUUiBkZXN0aW5hdGlvblByb3RvY29sLCBCU1RSIGRl
c3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KEJTVFIgc291cmNlT3JpZ2luLCBCU1RSIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEJTVFIg
ZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW52YWxpZGF0ZUJhY2tpbmdTdG9yZShf
SW5fb3B0XyBjb25zdCBSRUNUKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KF9Jbl8gQlNUUiBzb3VyY2VPcmlnaW4s
IF9Jbl8gQlNUUiBkZXN0aW5hdGlvblByb3RvY29sLCBfSW5fIEJTVFIgZGVzdGluYXRpb25Ib3N0
LCBCT09MIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoX0luXyBC
U1RSIHNvdXJjZU9yaWdpbiwgX0luXyBCU1RSIGRlc3RpbmF0aW9uUHJvdG9jb2wsIF9Jbl8gQlNU
UiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIaXN0
b3J5RGVsZWdhdGUoSVdlYkhpc3RvcnlEZWxlZ2F0ZSogaGlzdG9yeURlbGVnYXRlKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGlzdG9yeURlbGVnYXRlKElXZWJIaXN0
b3J5RGVsZWdhdGUqKiBoaXN0b3J5RGVsZWdhdGUpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhZGRWaXNpdGVkTGlua3MoQlNUUiogdmlzaXRlZFVSTHMsIHVuc2lnbmVk
IHZpc2l0ZWRVUkxDb3VudCk7Ci0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0SGlzdG9yeURlbGVnYXRlKF9Jbl8gSVdlYkhpc3RvcnlEZWxlZ2F0ZSopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoaXN0b3J5RGVsZWdhdGUoX0NPTV9PdXRw
dHJfb3B0XyBJV2ViSGlzdG9yeURlbGVnYXRlKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhZGRWaXNpdGVkTGlua3MoX19pbm91dF9lY291bnRfZnVsbCh2aXNpdGVk
VVJMQ291bnQpIEJTVFIqIHZpc2l0ZWRVUkxzLCB1bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQpOwog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQzKCk7CiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDQoKTsKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkNSgpOwotCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldEdlb2xvY2F0aW9uUHJvdmlkZXIoSVdlYkdlb2xvY2F0aW9u
UHJvdmlkZXIqIGxvY2F0aW9uUHJvdmlkZXIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBnZW9sb2NhdGlvblByb3ZpZGVyKElXZWJHZW9sb2NhdGlvblByb3ZpZGVyKiog
bG9jYXRpb25Qcm92aWRlcik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGdlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb24oSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBv
c2l0aW9uKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2VvbG9jYXRp
b25EaWRGYWlsV2l0aEVycm9yKElXZWJFcnJvciogZXJyb3IpOwotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxT
Y2hlbWUoQk9PTCBmb3JiaWRkZW4sIEJTVFIgc2NoZW1lKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShCU1RSKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93
aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoQlNUUik7Ci0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0Rh
dGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoQlNUUik7Ci0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0R2VvbG9jYXRpb25Qcm92aWRlcihfSW5fb3B0XyBJV2Vi
R2VvbG9jYXRpb25Qcm92aWRlciopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZW9sb2NhdGlvblByb3ZpZGVyKF9DT01fT3V0cHRyX29wdF8gSVdlYkdlb2xvY2F0aW9u
UHJvdmlkZXIqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdlb2xv
Y2F0aW9uRGlkQ2hhbmdlUG9zaXRpb24oX0luX29wdF8gSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24q
IHBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2VvbG9j
YXRpb25EaWRGYWlsV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKEJPT0wgZm9yYmlkZGVuLCBfSW5fIEJTVFIgc2NoZW1lKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZShfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdp
c3RlclVSTFNjaGVtZUFzQWxsb3dpbmdMb2NhbFN0b3JhZ2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
ZyhfSW5fIEJTVFIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWdp
c3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKF9J
bl8gQlNUUik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHREaXNw
bGF5SXNTeW5jaHJvbm91cygpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBkb3VibGUgKmludGVydmFsKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgKLSAgICAgICAgLyogW2luXSAqLyBkb3Vi
bGUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGh0dHBQaXBlbGlu
aW5nRW5hYmxlZCgKLSAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiBlbmFibGVkKTsK
LQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIVFRQUGlwZWxpbmlu
Z0VuYWJsZWQoCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCk7Ci0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKF9PdXRfIGRv
dWJsZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChkb3VibGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBodHRwUGlwZWxpbmluZ0VuYWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWQoQk9PTCk7CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFVzZXNMYXllcmVkV2luZG93
KEJPT0wpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1c2VzTGF5ZXJl
ZFdpbmRvdyhCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVz
ZXNMYXllcmVkV2luZG93KF9PdXRfIEJPT0wqKTsKIAogICAgIC8vIElXZWJWaWV3UHJpdmF0ZTIK
ICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldExvYWRSZXNvdXJjZXNTZXJpYWxseShC
T09MKTsKICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjYWxlV2ViVmlldyhkb3VibGUg
c2NhbGUsIFBPSU5UIG9yaWdpbik7CiAgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXNw
YXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKGRvdWJsZSk7Ci0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUqKTsK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkVXNlclNjcmlwdFRvR3Jv
dXAoQlNUUiBncm91cE5hbWUsIElXZWJTY3JpcHRXb3JsZCosIEJTVFIgc291cmNlLCBCU1RSIHVy
bCwKLSAgICAgICAgdW5zaWduZWQgd2hpdGVsaXN0Q291bnQsIEJTVFIqIHdoaXRlbGlzdCwgdW5z
aWduZWQgYmxhY2tsaXN0Q291bnQsIEJTVFIqIGJsYWNrbGlzdCwgV2ViVXNlclNjcmlwdEluamVj
dGlvblRpbWUsIFdlYlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAoQlNUUiBncm91
cE5hbWUsIElXZWJTY3JpcHRXb3JsZCosIEJTVFIgc291cmNlLCBCU1RSIHVybCwKLSAgICAgICAg
dW5zaWduZWQgd2hpdGVsaXN0Q291bnQsIEJTVFIqIHdoaXRlbGlzdCwgdW5zaWduZWQgYmxhY2ts
aXN0Q291bnQsIEJTVFIqIGJsYWNrbGlzdCwgV2ViVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJhY2tpbmdTY2FsZUZhY3Rv
cihfT3V0XyBkb3VibGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YWRkVXNlclNjcmlwdFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNj
cmlwdFdvcmxkKiwgX0luXyBCU1RSIHNvdXJjZSwgX0luXyBCU1RSIHVybCwKKyAgICAgICAgdW5z
aWduZWQgd2hpdGVsaXN0Q291bnQsIF9faW5vdXRfZWNvdW50X2Z1bGwod2hpdGVsaXN0Q291bnQp
IEJTVFIqIHdoaXRlbGlzdCwgdW5zaWduZWQgYmxhY2tsaXN0Q291bnQsIF9faW5vdXRfZWNvdW50
X2Z1bGwoYmxhY2tsaXN0Q291bnQpIEJTVFIqIGJsYWNrbGlzdCwgV2ViVXNlclNjcmlwdEluamVj
dGlvblRpbWUsIFdlYlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAoX0luXyBCU1RS
IGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvcmxkKiwgX0luXyBCU1RSIHNvdXJjZSwg
X0luXyBCU1RSIHVybCwKKyAgICAgICAgdW5zaWduZWQgd2hpdGVsaXN0Q291bnQsIF9faW5vdXRf
ZWNvdW50X2Z1bGwod2hpdGVsaXN0Q291bnQpIEJTVFIqIHdoaXRlbGlzdCwgdW5zaWduZWQgYmxh
Y2tsaXN0Q291bnQsIF9faW5vdXRfZWNvdW50X2Z1bGwoYmxhY2tsaXN0Q291bnQpIEJTVFIqIGJs
YWNrbGlzdCwgV2ViVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CiAKICAgICAvLyBXZWJWaWV3
CiAgICAgYm9vbCBzaG91bGRVc2VFbWJlZGRlZFZpZXcoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdDsKQEAgLTk3OSwyNCArNTEzLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGNhblNo
b3dNSU1FVHlwZUFzSFRNTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIFVzZWQg
YnkgVGV4dElucHV0Q29udHJvbGxlciBpbiBEdW1wUmVuZGVyVHJlZQotCi0gICAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBjb21wb3NpdGlvbiwgCi0gICAgICAgIC8qIFtpbl0gKi8gVUlOVCBmcm9tLCAK
LSAgICAgICAgLyogW2luXSAqLyBVSU5UIGxlbmd0aCk7Ci0KLSAgICBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZygvKiBbb3V0LCByZXR2YWxdICovIEJP
T0wqIHJlc3VsdCk7Ci0KLSAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbmZpcm1Db21w
b3NpdGlvbkZvclRlc3RpbmcoLyogW2luXSAqLyBCU1RSIGNvbXBvc2l0aW9uKTsKLQotICAgIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29tcG9zaXRpb25SYW5nZUZvclRlc3RpbmcoLyogW291
dF0gKi8gVUlOVCogc3RhcnRQb3NpdGlvbiwgLyogW291dF0gKi8gVUlOVCogbGVuZ3RoKTsKLQot
ICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VG
b3JUZXN0aW5nKAotICAgIC8qIFtpbl0gKi8gVUlOVCBsb2NhdGlvbiwgCi0gICAgLyogW2luXSAq
LyBVSU5UIGxlbmd0aCwgCi0gICAgLyogW291dCwgcmV0dmFsXSAqLyBSRUNUKiByZXN1bHRSZWN0
KTsKLQotICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VsZWN0ZWRSYW5nZUZvclRlc3Rp
bmcoLyogW291dF0gKi8gVUlOVCogbG9jYXRpb24sIC8qIFtvdXRdICovIFVJTlQqIGxlbmd0aCk7
CisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb21wb3NpdGlvbkZvclRlc3Rpbmco
X0luXyBCU1RSIGNvbXBvc2l0aW9uLCBVSU5UIGZyb20sIFVJTlQgbGVuZ3RoKTsKKyAgICBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZyhfT3V0XyBCT09M
Kik7CisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb25maXJtQ29tcG9zaXRpb25Gb3JU
ZXN0aW5nKF9Jbl8gQlNUUiBjb21wb3NpdGlvbik7CisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBjb21wb3NpdGlvblJhbmdlRm9yVGVzdGluZyhfT3V0XyBVSU5UKiBzdGFydFBvc2l0aW9u
LCBfT3V0XyBVSU5UKiBsZW5ndGgpOworICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VGb3JUZXN0aW5nKFVJTlQgbG9jYXRpb24sIFVJTlQgbGVu
Z3RoLCBfT3V0XyBSRUNUKiByZXN1bHRSZWN0KTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKF9PdXRfIFVJTlQqIGxvY2F0aW9uLCBfT3V0XyBV
SU5UKiBsZW5ndGgpOwogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIApA
QCAtMTAyNiw3ICs1NDgsNyBAQCBwcml2YXRlOgogICAgIC8vIFdlIHNldCB0aGlzIHZhcmlhYmxl
IGluIERyYWdFbnRlciBhbmQgRHJhZ092ZXIgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBEcm9w
IHRvIHNldCB0aGUgY29ycmVjdCBkcm9wIGVmZmVjdC4gCiAgICAgLy8gVGh1cywgb24gcmV0dXJu
IGZyb20gRG9EcmFnRHJvcCB3ZSBoYXZlIHRoZSBjb3JyZWN0IHBkd0VmZmVjdCBmb3IgdGhlIGRy
YWctYW5kLWRyb3Agb3BlcmF0aW9uLgogICAgIC8vIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5MjY0KQotICAgIERXT1JEIG1fbGFzdERyb3BFZmZlY3Q7Cisg
ICAgRFdPUkQgbV9sYXN0RHJvcEVmZmVjdCB7IDAgfTsKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOwpAQCAtMTAzNiw3ICs1NTgsNyBAQCBw
cml2YXRlOgogICAgIC8vIENBQ0ZMYXllclRyZWVIb3N0Q2xpZW50CiAgICAgdmlydHVhbCB2b2lk
IGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzKCk7CiAKLSAgICBib29sIG1fc2hvdWxk
SW52ZXJ0Q29sb3JzOworICAgIGJvb2wgbV9zaG91bGRJbnZlcnRDb2xvcnMgeyBmYWxzZSB9Owog
ICAgIHZvaWQgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wpOwogCiBwcm90ZWN0ZWQ6CkBAIC0x
MDc4LDE1ICs2MDAsMTUgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBmdWxsU2NyZWVu
Q2xpZW50UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAjZW5kaWYKIAotICAgIFVMT05HIG1fcmVm
Q291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICNpZiAhQVNTRVJUX0RJU0FCTEVE
Ci0gICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW47CisgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVn
dW4geyBmYWxzZSB9OwogI2VuZGlmCi0gICAgSFdORCBtX2hvc3RXaW5kb3c7Ci0gICAgSFdORCBt
X3ZpZXdXaW5kb3c7Ci0gICAgV2ViRnJhbWUqIG1fbWFpbkZyYW1lOwotICAgIFdlYkNvcmU6OlBh
Z2UqIG1fcGFnZTsKLSAgICBXZWJJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50Owor
ICAgIEhXTkQgbV9ob3N0V2luZG93IHsgbnVsbHB0ciB9OworICAgIEhXTkQgbV92aWV3V2luZG93
IHsgbnVsbHB0ciB9OworICAgIFdlYkZyYW1lKiBtX21haW5GcmFtZSB7IG51bGxwdHIgfTsKKyAg
ICBXZWJDb3JlOjpQYWdlKiBtX3BhZ2UgeyBudWxscHRyIH07CisgICAgV2ViSW5zcGVjdG9yQ2xp
ZW50KiBtX2luc3BlY3RvckNsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRHRElPYmplY3Q8SEJJVE1BUD4+IG1fYmFja2luZ1N0b3JlQml0bWFwOwogICAgIFNJ
WkUgbV9iYWNraW5nU3RvcmVTaXplOwpAQCAtMTEwNyw0OCArNjI5LDQ4IEBAIHByb3RlY3RlZDoK
ICAgICBDT01QdHI8V2ViSW5zcGVjdG9yPiBtX3dlYkluc3BlY3RvcjsKICAgICBDT01QdHI8SVdl
Ykdlb2xvY2F0aW9uUHJvdmlkZXI+IG1fZ2VvbG9jYXRpb25Qcm92aWRlcjsKIAotICAgIGJvb2wg
bV91c2VyQWdlbnRPdmVycmlkZGVuOwotICAgIGJvb2wgbV91c2VCYWNrRm9yd2FyZExpc3Q7Cisg
ICAgYm9vbCBtX3VzZXJBZ2VudE92ZXJyaWRkZW4geyBmYWxzZSB9OworICAgIGJvb2wgbV91c2VC
YWNrRm9yd2FyZExpc3QgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV91c2VyQWdlbnRDdXN0
b207CiAgICAgV1RGOjpTdHJpbmcgbV91c2VyQWdlbnRTdGFuZGFyZDsKLSAgICBmbG9hdCBtX3pv
b21NdWx0aXBsaWVyOworICAgIGZsb2F0IG1fem9vbU11bHRpcGxpZXIgeyAxLjBmIH07CiAgICAg
ZmxvYXQgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvciB7IDAgfTsKLSAgICBib29sIG1fem9vbXNU
ZXh0T25seTsKKyAgICBib29sIG1fem9vbXNUZXh0T25seSB7IGZhbHNlIH07CiAgICAgV1RGOjpT
dHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25O
YW1lOwotICAgIGJvb2wgbV9tb3VzZUFjdGl2YXRlZDsKKyAgICBib29sIG1fbW91c2VBY3RpdmF0
ZWQgeyBmYWxzZSB9OwogICAgIC8vIFdlYkNvcmUgZHJhZ2dpbmcgbG9naWMgbmVlZHMgdG8gYmUg
YWJsZSB0byBpbnNwZWN0IHRoZSBkcmFnIGRhdGEKICAgICAvLyB0aGlzIGlzIHVwZGF0ZWQgaW4g
RHJhZ0VudGVyL0xlYXZlL0Ryb3AKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IG1fZHJhZ0RhdGE7
CiAgICAgQ09NUHRyPElEcm9wVGFyZ2V0SGVscGVyPiBtX2Ryb3BUYXJnZXRIZWxwZXI7Ci0gICAg
VUNoYXIgbV9jdXJyZW50Q2hhcmFjdGVyQ29kZTsKLSAgICBib29sIG1faXNCZWluZ0Rlc3Ryb3ll
ZDsKLSAgICB1bnNpZ25lZCBtX3BhaW50Q291bnQ7Ci0gICAgYm9vbCBtX2hhc1NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnOwotICAgIGJvb2wgbV9kaWRDbG9zZTsKLSAgICBib29sIG1faGFzQ3VzdG9t
RHJvcFRhcmdldDsKLSAgICB1bnNpZ25lZCBtX2luSU1FQ29tcG9zaXRpb247Ci0gICAgSFdORCBt
X3Rvb2xUaXBId25kOworICAgIFVDaGFyIG1fY3VycmVudENoYXJhY3RlckNvZGUgeyAwIH07Cisg
ICAgYm9vbCBtX2lzQmVpbmdEZXN0cm95ZWQgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fcGFp
bnRDb3VudCB7IDAgfTsKKyAgICBib29sIG1faGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9kaWRDbG9zZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0N1
c3RvbURyb3BUYXJnZXQgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1faW5JTUVDb21wb3NpdGlv
biB7IDAgfTsKKyAgICBIV05EIG1fdG9vbFRpcEh3bmQgeyBudWxscHRyIH07CiAgICAgV1RGOjpT
dHJpbmcgbV90b29sVGlwOwotICAgIGJvb2wgbV9kZWxldGVCYWNraW5nU3RvcmVUaW1lckFjdGl2
ZTsKKyAgICBib29sIG1fZGVsZXRlQmFja2luZ1N0b3JlVGltZXJBY3RpdmUgeyBmYWxzZSB9Owog
Ci0gICAgYm9vbCBtX3RyYW5zcGFyZW50OworICAgIGJvb2wgbV90cmFuc3BhcmVudCB7IGZhbHNl
IH07CiAKICAgICBzdGF0aWMgYm9vbCBzX2FsbG93U2l0ZVNwZWNpZmljSGFja3M7CiAKLSAgICBX
ZWJDb3JlOjpTdXNwZW5kYWJsZVRpbWVyKiBtX2Nsb3NlV2luZG93VGltZXI7CisgICAgV2ViQ29y
ZTo6U3VzcGVuZGFibGVUaW1lciogbV9jbG9zZVdpbmRvd1RpbWVyIHsgbnVsbHB0ciB9OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxUUkFDS01PVVNFRVZFTlQ+IG1fbW91c2VPdXRUcmFja2VyOwogCi0g
ICAgSFdORCBtX3RvcExldmVsUGFyZW50OworICAgIEhXTkQgbV90b3BMZXZlbFBhcmVudCB7IG51
bGxwdHIgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFdURjo6U3RyaW5nPj4gbV9l
bWJlZGRlZFZpZXdNSU1FVHlwZXM7CiAKICAgICAvL1ZhcmlhYmxlcyBuZWVkZWQgdG8gc3RvcmUg
Z2VzdHVyZSBpbmZvcm1hdGlvbgogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2dlc3R1cmVU
YXJnZXROb2RlOwotICAgIGxvbmcgbV9sYXN0UGFuWDsKLSAgICBsb25nIG1fbGFzdFBhblk7Ci0g
ICAgbG9uZyBtX3hPdmVycGFuOwotICAgIGxvbmcgbV95T3ZlcnBhbjsKKyAgICBsb25nIG1fbGFz
dFBhblggeyAwIH07CisgICAgbG9uZyBtX2xhc3RQYW5ZIHsgMCB9OworICAgIGxvbmcgbV94T3Zl
cnBhbiB7IDAgfTsKKyAgICBsb25nIG1feU92ZXJwYW4geyAwIH07CiAKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+IG1fZnVs
bFNjcmVlblZpZGVvQ29udHJvbGxlcjsKQEAgLTExNjIsMTMgKzY4NCwxMyBAQCBwcm90ZWN0ZWQ6
CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OwogI2VuZGlmCi0gICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZzsKKyAgICBib29s
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKIAotICAgIGJvb2wgbV9uZXh0
RGlzcGxheUlzU3luY2hyb25vdXM7Ci0gICAgYm9vbCBtX3VzZXNMYXllcmVkV2luZG93OwotICAg
IGJvb2wgbV9uZWVkc0Rpc3BsYXk7CisgICAgYm9vbCBtX25leHREaXNwbGF5SXNTeW5jaHJvbm91
cyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3VzZXNMYXllcmVkV2luZG93IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbmVlZHNEaXNwbGF5IHsgZmFsc2UgfTsKIAotICAgIEhDVVJTT1IgbV9sYXN0U2V0
Q3Vyc29yOworICAgIEhDVVJTT1IgbV9sYXN0U2V0Q3Vyc29yIHsgbnVsbHB0ciB9OwogCiAgICAg
UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX2dsb2JhbEhpc3RvcnlJdGVtOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCShyZXZpc2lvbiAxODg2Mzgp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDkgKzM1LDExIEBACiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJXb3JrZXJzUHJpdmF0ZTo6UXVlcnlJbnRlcmZhY2UoUkVG
SUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIFdlYldvcmtlcnNQcml2YXRlOjpR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAo
SXNFcXVhbEdVSUQocmlpZCwgX191dWlkb2YoSVdlYldvcmtlcnNQcml2YXRlKSkpCiAgICAgICAg
ICpwcHZPYmplY3QgPSB0aGlzOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9J
VW5rbm93bikpCkBAIC01MSwxMiArNTMsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJXb3JrZXJzUHJpdgogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBXZWJXb3JrZXJzUHJpdmF0ZTo6QWRkUmVmKHZvaWQpCitVTE9ORyBXZWJXb3JrZXJzUHJp
dmF0ZTo6QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBXZWJXb3JrZXJzUHJpdmF0ZTo6UmVsZWFzZSh2b2lkKQorVUxPTkcg
V2ViV29ya2Vyc1ByaXZhdGU6OlJlbGVhc2Uodm9pZCkKIHsKICAgICBVTE9ORyBuZXdSZWYgPSAt
LW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC02Nyw3ICs2OSw3IEBAIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFdlYldvcmtlcnNQcml2YXQKIAogLy8gSVdlYldvcmtlcnNQcml2YXRl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1IUkVTVUxUIFdlYldvcmtlcnNQcml2YXRlOjp3b3JrZXJUaHJlYWRDb3VudChVSU5UKiBu
dW1iZXIpCitIUkVTVUxUIFdlYldvcmtlcnNQcml2YXRlOjp3b3JrZXJUaHJlYWRDb3VudChfT3V0
XyBVSU5UKiBudW1iZXIpCiB7CiAgICAgaWYgKCFudW1iZXIpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CkBAIC04Niw3ICs4OCw2IEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJp
dmF0ZTo6Y3IKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKLSAg
ICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
V29ya2Vyc1ByaXZhdGUuaAkocmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViV29ya2Vyc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDE1IEBAIHBy
aXZhdGU6CiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9i
amVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7
Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJXb3JrZXJzUHJpdmF0ZQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3b3JrZXJUaHJlYWRDb3VudChVSU5U
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdvcmtlclRocmVhZENv
dW50KF9PdXRfIFVJTlQqKTsKIAogcHJpdmF0ZToKLSAgICBVTE9ORyBtX3JlZkNvdW50OworICAg
IFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwogCiAjZW5kaWYgLy8gV2ViV29ya2Vyc1ByaXZh
dGVfaApJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViQXBwbGljYXRpb25D
YWNoZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2Vi
QXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkFwcGxpY2F0aW9uQ2FjaGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw2ICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCittaWRsX3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDIxMTEpCittaWRsX3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDI0MDIpCisK
ICNpZm5kZWYgRE9fTk9fSU1QT1JUUwogaW1wb3J0ICJvYWlkbC5pZGwiOwogaW1wb3J0ICJvY2lk
bC5pZGwiOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwJ
KHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZp
ZXcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHJldmlz
aW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2
YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDcgKzIwNSw3IEBAIGludGVyZmFjZSBJV2Vi
Vmlld1ByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgdW51c2VkMigpOwogCiAgICAgLy8g
SWYgcmVjdCBpcyAwLCB0aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUgd2lsbCBiZSBpbnZhbGlkYXRl
ZC4KLSAgICBIUkVTVUxUIGludmFsaWRhdGVCYWNraW5nU3RvcmUoW2luXSBjb25zdCBSRUNUKiBy
ZWN0KTsKKyAgICBIUkVTVUxUIGludmFsaWRhdGVCYWNraW5nU3RvcmUoW2luLCBvcHRpb25hbF0g
Y29uc3QgUkVDVCogcmVjdCk7CiAKICAgICAvLyBXaGl0ZWxpc3RzIGFjY2VzcyBmcm9tIGFuIG9y
aWdpbiAoc291cmNlT3JpZ2luKSB0byBhIHNldCBvZiBvbmUgb3IgbW9yZSBvcmlnaW5zIGRlc2Ny
aWJlZCBieSB0aGUgcGFyYW1ldGVyczoKICAgICAvLyAtIGRlc3RpbmF0aW9uUHJvdG9jb2w6IFRo
ZSBwcm90b2NvbCB0byBncmFudCBhY2Nlc3MgdG8uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL1dlYktpdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9XZWJLaXQuaWRsCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEwIEBA
IGNwcF9xdW90ZSgiI2VuZGlmIikKIAogI2RlZmluZSBET19OT19JTVBPUlRTCiAKK21pZGxfcHJh
Z21hIHdhcm5pbmcoZGlzYWJsZTogMjExMSkKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTog
MjM5MikKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjQwMikKKwogaW1wb3J0ICJvYWlk
bC5pZGwiOwogaW1wb3J0ICJvY2lkbC5pZGwiOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyLmlkbAkocmV2
aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlMi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0OSw2ICszNDksOSBAQAogCiAq
Ki8KIAorbWlkbF9wcmFnbWEgd2FybmluZyhkaXNhYmxlOiAyMTExKQorbWlkbF9wcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiAyNDAyKQorCiBpbXBvcnQgIm9iamlkbC5pZGwiOwogaW1wb3J0ICJvYWlk
bC5pZGwiOwogaW1wb3J0ICJvbGVhY2MuaWRsIjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJfMi5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMl8yLmlkbAko
cmV2aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlMi9BY2Nlc3NpYmxlMl8yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBAQAog
ICogCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLyAKIAorbWlkbF9wcmFnbWEgd2FybmluZyhkaXNhYmxlOiAy
MTExKQorbWlkbF9wcmFnbWEgd2FybmluZyhkaXNhYmxlOiAyNDAyKQorCiBpbXBvcnQgIm9iamlk
bC5pZGwiOwogaW1wb3J0ICJvYWlkbC5pZGwiOwogaW1wb3J0ICJvbGVhY2MuaWRsIjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZUFwcGxp
Y2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0FjY2Vzc2libGVBcHBsaWNhdGlvbi5pZGwJKHJldmlzaW9uIDE4ODYzOCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZUFwcGxp
Y2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogICogCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLyAKIAorbWlkbF9wcmFnbWEgd2FybmluZyhkaXNhYmxlOiAyMTExKQorbWlkbF9w
cmFnbWEgd2FybmluZyhkaXNhYmxlOiAyNDAyKQogCiBpbXBvcnQgIm9iamlkbC5pZGwiOwogaW1w
b3J0ICJvYWlkbC5pZGwiOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nl
c3NpYmxlMi9BY2Nlc3NpYmxlRWRpdGFibGVUZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVFZGl0YWJsZVRleHQu
aWRsCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0FjY2Vzc2libGVFZGl0YWJsZVRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI2MiArMSwyNjUgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiAgRmlsZSBOYW1lIChB
Y2Nlc3NpYmxlRWRpdGFibGVUZXh0LmlkbCkNCi0gKiANCi0gKiAgSUFjY2Vzc2libGUyIElETCBT
cGVjaWZpY2F0aW9uIA0KLSAqIA0KLSAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTIgTGludXgg
Rm91bmRhdGlvbiANCi0gKiAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiANCi0g
KiAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gDQotICog
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIA0KLSAqICAgDQotICogICANCi0gKiAgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IA0K
LSAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgDQotICogIGFyZSBtZXQ6IA0KLSAqICAgDQotICogICAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCAN
Ci0gKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gDQotICogICANCi0gKiAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgDQotICogICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyANCi0gKiAgICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAN
Ci0gKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gDQotICoNCi0gKiAgIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgDQotICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIA0KLSAqICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIA0KLSAqICAgICAgcGVybWlzc2lvbi4gDQotICog
ICANCi0gKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIA0KLSAqICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCANCi0gKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgDQotICogIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIA0KLSAqICBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiANCi0gKiAgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIA0KLSAqICBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
DQotICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyANCi0gKiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgDQotICogIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiANCi0gKiAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIA0KLSAqICBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCANCi0gKiAg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gDQotICog
ICANCi0gKiAgVGhpcyBCU0QgTGljZW5zZSBjb25mb3JtcyB0byB0aGUgT3BlbiBTb3VyY2UgSW5p
dGlhdGl2ZSAiU2ltcGxpZmllZCANCi0gKiAgQlNEIExpY2Vuc2UiIGFzIHB1Ymxpc2hlZCBhdDog
DQotICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw
IA0KLSAqICAgDQotICogIElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBvZiB0aGUgTGludXgg
Rm91bmRhdGlvbi4gVGhlIElBY2Nlc3NpYmxlMiANCi0gKiAgbWFyayBtYXkgYmUgdXNlZCBpbiBh
Y2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIA0KLSAqICBQb2xp
Y3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3aXRoIHRoZSBJQWNjZXNzaWJsZTIgc3BlY2lmaWNh
dGlvbi4gDQotICogDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gDQotDQotaW1wb3J0ICJvYmppZGwuaWRs
IjsNCi1pbXBvcnQgIm9haWRsLmlkbCI7DQotaW1wb3J0ICJvbGVhY2MuaWRsIjsNCi1pbXBvcnQg
IklBMkNvbW1vblR5cGVzLmlkbCI7DQotDQotLyoqIEBicmllZiBUaGlzIGludGVyZmFjZSBwcm92
aWRlcyBjbGlwYm9hcmQgY2FwYWJpbGl0eSB0byB0ZXh0IG9iamVjdHMuDQotDQotIFRoaXMgaW50
ZXJmYWNlIGlzIHR5cGljYWxseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIElBY2Nlc3Np
YmxlVGV4dCANCi0gIGludGVyZmFjZSBhbmQgY29tcGxlbWVudHMgdGhhdCBpbnRlcmZhY2Ugd2l0
aCB0aGUgYWRkaXRpb25hbCBjYXBhYmlsaXR5IG9mDQotICBjbGlwYm9hcmQgb3BlcmF0aW9ucy4g
IE5vdGUgdGhhdCBldmVuIGEgcmVhZCBvbmx5IHRleHQgb2JqZWN0IGNhbiBzdXBwb3J0DQotICB0
aGUgY29weSBjYXBhYmlsaXR5IHNvIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBsaW1pdGVkIHRvIGVk
aXRhYmxlIG9iamVjdHMuDQotDQotIFRoZSBzdWJzdHJpbmdzIHVzZWQgd2l0aCB0aGlzIGludGVy
ZmFjZSBhcmUgc3BlY2lmaWVkIGFzIGZvbGxvd3M6DQotICBJZiBzdGFydE9mZnNldCBpcyBsZXNz
IHRoYW4gZW5kT2Zmc2V0LCB0aGUgc3Vic3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSANCi0gIGNoYXJh
Y3RlciBhdCBzdGFydE9mZnNldCBhbmQgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXIganVzdCBiZWZv
cmUgZW5kT2Zmc2V0Lg0KLSAgSWYgZW5kT2Zmc2V0IGlzIGxvd2VyIHRoYW4gc3RhcnRPZmZzZXQs
ICB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIGEgY2FsbCANCi0gIHdpdGggdGhlIHR3byBhcmd1
bWVudHMgZXhjaGFuZ2VkLiBUaGUgd2hvbGUgdGV4dCBjYW4gYmUgZGVmaW5lZCBieSBwYXNzaW5n
IA0KLSAgdGhlIGluZGljZXMgemVybyBhbmQgSUFjY2Vzc2libGVUZXh0OjpuQ2hhcmFjdGVycy4g
SWYgYm90aCBpbmRpY2VzIGhhdmUgdGhlIA0KLSAgc2FtZSB2YWx1ZSwgYW4gZW1wdHkgc3RyaW5n
IGlzIGRlZmluZWQuIA0KLQ0KLSBSZWZlciB0byB0aGUgQHJlZiBfc3BlY2lhbE9mZnNldHMNCi0g
ICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNj
ZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0gIGZvciBpbmZvcm1hdGlvbiBhYm91dCBh
IHNwZWNpYWwgb2Zmc2V0IGNvbnN0YW50IHRoYXQgY2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxl
RWRpdGFibGVUZXh0IG1ldGhvZHMuDQotKi8NCi1bb2JqZWN0LCB1dWlkKEE1OUFBMDlBLTcwMTEt
NGI2NS05MzlELTMyQjFGQjU1NDdFMyldDQotaW50ZXJmYWNlIElBY2Nlc3NpYmxlRWRpdGFibGVU
ZXh0IDogSVVua25vd24NCi17DQotDQotICAvKiogQGJyaWVmIENvcGllcyB0aGUgdGV4dCByYW5n
ZSBpbnRvIHRoZSBjbGlwYm9hcmQuDQotICAgIA0KLSAgIFRoZSBzZWxlY3Rpb24gaXMgc2V0IHRv
IHRoZSBzcGVjaWZpZWQgb2Zmc2V0cyBhbmQgdGhlbiBzZWxlY3Rpb24gaXMgY29waWVkIGludG8N
Ci0gICB0aGUgc3lzdGVtIGNsaXBib2FyZC4NCi0gICAgICAgIA0KLSAgIEBwYXJhbSBbaW5dIHN0
YXJ0T2Zmc2V0DQotICAgIFN0YXJ0IGluZGV4IG9mIHRoZSB0ZXh0IHRvIG1vdmVkIGludG8gdGhl
IGNsaXBib2FyZC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4NCi0gICBAcGFy
YW0gW2luXSBlbmRPZmZzZXQNCi0gICAgRW5kIGluZGV4IG9mIHRoZSB0ZXh0IHRvIG1vdmVkIGlu
dG8gdGhlIGNsaXBib2FyZC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4NCi0g
ICBAcmV0dmFsIFNfT0sNCi0gICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNz
ZWQNCi0gICBAbm90ZSBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNp
YWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxl
RWRpdGFibGVUZXh0IE1ldGhvZHMiIA0KLSAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lh
bCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxlRWRpdGFibGVUZXh0DQot
ICAgIG1ldGhvZHMuDQotICAgQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUg
dmlhIHRoZSBhcHBsaWNhdGlvbidzIEdVSS4NCi0gICovDQotICBIUkVTVUxUIGNvcHlUZXh0DQot
ICAgICgNCi0gICAgIFtpbl0gbG9uZyBzdGFydE9mZnNldCwgDQotICAgICBbaW5dIGxvbmcgZW5k
T2Zmc2V0IA0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmllZiBEZWxldGVzIGEgcmFuZ2Ugb2YgdGV4
dC4NCi0gICAgDQotICAgVGhlIHRleHQgYmV0d2VlbiBhbmQgaW5jbHVkaW5nIHRoZSB0d28gZ2l2
ZW4gaW5kaWNlcyBpcyBkZWxldGVkDQotICAgIGZyb20gdGhlIHRleHQgcmVwcmVzZW50ZWQgYnkg
dGhpcyBvYmplY3QuDQotDQotICAgQHBhcmFtIFtpbl0gc3RhcnRPZmZzZXQNCi0gICAgU3RhcnQg
aW5kZXggb2YgdGhlIHRleHQgdG8gYmUgZGVsZXRlZC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlz
IDAuLmxlbmd0aC4NCi0gICBAcGFyYW0gW2luXSBlbmRPZmZzZXQNCi0gICAgRW5kIGluZGV4IG9m
IHRoZSB0ZXh0IHRvIGJlIGRlbGV0ZWQuDQotICAgIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5n
dGguDQotICAgQHJldHZhbCBTX09LDQotICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtp
bl0gcGFzc2VkDQotICAgQG5vdGUgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgDQotICAg
ICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNj
ZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0gICAgZm9yIGluZm9ybWF0aW9uIGFib3V0
IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZUVkaXRhYmxl
VGV4dA0KLSAgICBtZXRob2RzLg0KLSAgKi8NCi0gIEhSRVNVTFQgZGVsZXRlVGV4dA0KLSAgICAo
DQotICAgICBbaW5dIGxvbmcgc3RhcnRPZmZzZXQsIA0KLSAgICAgW2luXSBsb25nIGVuZE9mZnNl
dCANCi0gICAgKTsNCi0gIA0KLSAgLyoqIEBicmllZiBJbnNlcnRzIHRleHQgYXQgdGhlIHNwZWNp
ZmllZCBwb3NpdGlvbi4NCi0gICAgDQotICAgVGhlIHNwZWNpZmllZCBzdHJpbmcgaXMgaW5zZXJ0
ZWQgYXQgdGhlIGdpdmVuIGluZGV4IGludG8gdGhlIHRleHQNCi0gICAgcmVwcmVzZW50ZWQgYnkg
dGhpcyBvYmplY3QuDQotDQotICAgQHBhcmFtIFtpbl0gb2Zmc2V0DQotICAgIEluZGV4IGF0IHdo
aWNoIHRvIGluc2VydCB0aGUgdGV4dC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0
aC4NCi0gICAgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgDQotICAgICJTcGVjaWFsIE9m
ZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRh
YmxlVGV4dCBNZXRob2RzIiANCi0gICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zm
c2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dA0KLSAgICBt
ZXRob2RzLg0KLSAgIEBwYXJhbSBbaW5dIHRleHQNCi0gICAgVGV4dCB0aGF0IGlzIGluc2VydGVk
Lg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5d
IHBhc3NlZA0KLSAgKi8NCi0gIEhSRVNVTFQgaW5zZXJ0VGV4dA0KLSAgICAoDQotICAgICBbaW5d
IGxvbmcgb2Zmc2V0LA0KLSAgICAgW2luXSBCU1RSICp0ZXh0DQotICAgICk7DQotICANCi0gIC8q
KiBAYnJpZWYgRGVsZXRlcyBhIHJhbmdlIG9mIHRleHQgYW5kIGNvcGllcyBpdCB0byB0aGUgY2xp
cGJvYXJkLg0KLSAgICANCi0gICBUaGUgc2VsZWN0aW9uIGlzIHNldCB0byB0aGUgc3BlY2lmaWVk
IG9mZnNldHMsIHRoZSBzZWxlY3Rpb24gaXMgdGhlbiBjb3BpZWQgaW50bw0KLSAgICB0aGUgc3lz
dGVtIGNsaXBib2FyZCwgYW5kIHRoZW4gdGhlIHNlbGVjdGlvbiBpcyBkZWxldGVkLg0KLQ0KLSAg
IEBwYXJhbSBbaW5dIHN0YXJ0T2Zmc2V0DQotICAgIFN0YXJ0IGluZGV4IG9mIHRoZSB0ZXh0IHRv
IGJlIGRlbGV0ZWQuDQotICAgIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5ndGguDQotICAgQHBh
cmFtIFtpbl0gZW5kT2Zmc2V0ICAgICANCi0gICAgRW5kIGluZGV4IG9mIHRoZSB0ZXh0IHRvIGJl
IGRlbGV0ZWQuDQotICAgIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5ndGguDQotICAgQHJldHZh
bCBTX09LDQotICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkDQotICAg
QG5vdGUgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgDQotICAgICJTcGVjaWFsIE9mZnNl
dHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxl
VGV4dCBNZXRob2RzIiANCi0gICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0
cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dA0KLSAgICBtZXRo
b2RzLg0KLSAgIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHZpYSB0aGUg
YXBwbGljYXRpb24ncyBHVUkuDQotICAqLw0KLSAgSFJFU1VMVCBjdXRUZXh0DQotICAgICgNCi0g
ICAgIFtpbl0gbG9uZyBzdGFydE9mZnNldCwNCi0gICAgIFtpbl0gbG9uZyBlbmRPZmZzZXQNCi0g
ICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYgUGFzdGVzIGNvbnRlbnQgZnJvbSB0aGUgY2xpcGJvYXJk
Lg0KLSAgICANCi0gICBBbnkgZXhpc3Rpbmcgc2VsZWN0aW9uIGlzIHJlbW92ZWQsIHRoZSBjbGlw
Ym9hcmQgY29udGVudCBpcyB0aGVuIHBhc3RlZCBpbnRvIA0KLSAgICB0aGlzIG9iamVjdCdzIHRl
eHQgYXQgdGhlIGdpdmVuIG9mZnNldC4gIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gdGhlIGlu
c2VydFRleHQNCi0gICAgbWV0aG9kLiAgSWYgdGhlIGluZGV4IGlzIG5vdCB2YWxpZCB0aGUgc3lz
dGVtIGNsaXBib2FyZCBjb250ZW50IGlzIG5vdCBpbnNlcnRlZC4gVGhlDQotICAgIGJlaGF2aW9y
IGlzIHRoZSBzYW1lIGFzICAgIHdoZW4gQ3RybCtWIGlzIHVzZWQsIGkuZS4gdGhlIHBhc3RlZCBj
b250ZW50cyBhcmUgbm90DQotICAgIG5lY2Vzc2FyaWx5IHBsYWluIHRleHQuDQotICANCi0gICBA
cGFyYW0gW2luXSBvZmZzZXQNCi0gICAgSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjb250
ZW50IGZyb20gdGhlIHN5c3RlbSBjbGlwYm9hcmQgaW50bw0KLSAgICB0aGUgdGV4dCByZXByZXNl
bnRlZCBieSB0aGlzIG9iamVjdC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4N
Ci0gICAgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgDQotICAgICJTcGVjaWFsIE9mZnNl
dHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxl
VGV4dCBNZXRob2RzIiANCi0gICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0
cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dA0KLSAgICBtZXRo
b2RzLg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBb
aW5dIHBhc3NlZA0KLSAgIEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHZp
YSB0aGUgYXBwbGljYXRpb24ncyBHVUkuDQotICAqLw0KLSAgSFJFU1VMVCBwYXN0ZVRleHQNCi0g
ICAgKA0KLSAgICAgW2luXSBsb25nIG9mZnNldA0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmllZiBS
ZXBsYWNlcyB0ZXh0Lg0KLSAgICANCi0gICBUaGUgdGV4dCBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4g
aW5kaWNlcyBpcyByZXBsYWNlZCBieSB0aGUgc3BlY2lmaWVkIA0KLSAgICByZXBsYWNlbWVudCBz
dHJpbmcuIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBmaXJzdA0KLSAgICBJ
QWNjZXNzaWJsZUVkaXRhYmxlVGV4dDo6ZGVsZXRlVGV4dCB3aXRoIHRoZSB0d28gaW5kaWNlcyBh
bmQgdGhlbiANCi0gICAgY2FsbGluZyBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dDo6aW5zZXJ0VGV4
dCB3aXRoIHRoZSByZXBsYWNlbWVudCB0ZXh0DQotICAgIGF0IHRoZSBzdGFydCBpbmRleC4NCi0g
ICAgICAgDQotICAgQHBhcmFtIFtpbl0gc3RhcnRPZmZzZXQNCi0gICAgU3RhcnQgaW5kZXggb2Yg
dGhlIHRleHQgdG8gYmUgcmVwbGFjZWQuDQotICAgIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5n
dGguDQotICAgQHBhcmFtIFtpbl0gZW5kT2Zmc2V0DQotICAgIEVuZCBpbmRleCBvZiB0aGUgdGV4
dCB0byBiZSByZXBsYWNlZC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4NCi0g
ICBAcGFyYW0gW2luXSB0ZXh0DQotICAgIFRoZSBUZXh0IHRoYXQgcmVwbGFjZXMgdGhlIHRleHQg
YmV0d2VlbiB0aGUgZ2l2ZW4gaW5kaWNlcy4NCi0gICBAcmV0dmFsIFNfT0sNCi0gICBAcmV0dmFs
IEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICBAbm90ZSBSZWZlciB0byBAcmVm
IF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRoZSBJ
QWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIA0KLSAg
ICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVzZWQg
aW4gJUlBY2Nlc3NpYmxlRWRpdGFibGVUZXh0DQotICAgIG1ldGhvZHMuDQotICAqLw0KLSAgSFJF
U1VMVCByZXBsYWNlVGV4dA0KLSAgICAoDQotICAgICBbaW5dIGxvbmcgc3RhcnRPZmZzZXQsDQot
ICAgICBbaW5dIGxvbmcgZW5kT2Zmc2V0LA0KLSAgICAgW2luXSBCU1RSICp0ZXh0DQotICAgICk7
DQotDQotICAvKiogQGJyaWVmIFJlcGxhY2VzIHRoZSBhdHRyaWJ1dGVzIG9mIGEgdGV4dCByYW5n
ZSBieSB0aGUgZ2l2ZW4gc2V0IG9mIGF0dHJpYnV0ZXMuDQotICAgIA0KLSAgIFNldHMgdGhlIGF0
dHJpYnV0ZXMgZm9yIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHR3byBnaXZlbiBpbmRpY2VzLiBUaGUg
b2xkDQotICAgIGF0dHJpYnV0ZXMgYXJlIHJlcGxhY2VkIGJ5IHRoZSBuZXcgbGlzdCBvZiBhdHRy
aWJ1dGVzLg0KLSAgICAgICAgDQotICAgQHBhcmFtIFtpbl0gc3RhcnRPZmZzZXQNCi0gICAgU3Rh
cnQgaW5kZXggb2YgdGhlIHRleHQgd2hvc2UgYXR0cmlidXRlcyBhcmUgbW9kaWZpZWQuDQotICAg
IFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5ndGguDQotICAgQHBhcmFtIFtpbl0gZW5kT2Zmc2V0
DQotICAgIEVuZCBpbmRleCBvZiB0aGUgdGV4dCB3aG9zZSBhdHRyaWJ1dGVzIGFyZSBtb2RpZmll
ZC4NCi0gICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4NCi0gICBAcGFyYW0gW2luXSBh
dHRyaWJ1dGVzDQotICAgIFNldCBvZiBhdHRyaWJ1dGVzIHRoYXQgcmVwbGFjZXMgdGhlIG9sZCBs
aXN0IG9mIGF0dHJpYnV0ZXMgb2YNCi0gICAgdGhlIHNwZWNpZmllZCB0ZXh0IHBvcnRpb24uDQot
ICAgQHJldHZhbCBTX09LDQotICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFz
c2VkDQotICAgQG5vdGUgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgDQotICAgICJTcGVj
aWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJs
ZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0gICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNp
YWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dA0K
LSAgICBtZXRob2RzLg0KLSAgKi8NCi0gIEhSRVNVTFQgc2V0QXR0cmlidXRlcw0KLSAgICAoDQot
ICAgICBbaW5dIGxvbmcgc3RhcnRPZmZzZXQsDQotICAgICBbaW5dIGxvbmcgZW5kT2Zmc2V0LA0K
LSAgICAgW2luXSBCU1RSICphdHRyaWJ1dGVzDQotICAgICk7DQotfQ0KLQ0KKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisgKgorICogIEZpbGUgTmFtZSAoQWNjZXNzaWJsZUVkaXRhYmxlVGV4dC5pZGwpCisg
KiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRpb24gCisgKiAKKyAqICBDb3B5cmln
aHQgKGMpIDIwMDcsIDIwMTIgTGludXggRm91bmRhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MDYgSUJNIENvcnBvcmF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBTdW4gTWlj
cm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAorICogICAKKyAqICAg
CisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0IAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAqICBhcmUgbWV0OiAKKyAqICAgCisg
KiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0IAorICogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAKKyAqICAgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
CisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisg
KiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24gbm9yIHRoZSBu
YW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAqICAgICAgcGVybWlzc2lvbi4gCisg
KiAgIAorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqICBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqICBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgKiAgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIAorICog
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAorICogIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIAorICogIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogICAKKyAqICBUaGlz
IEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNvdXJjZSBJbml0aWF0aXZlICJTaW1w
bGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNoZWQgYXQ6IAorICogIGh0dHA6Ly93
d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIAorICogICAKKyAqICBJ
QWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24uIFRoZSBJ
QWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkgYmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhl
IExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIAorICogIFBvbGljeSB0byBpbmRpY2F0ZSBjb21w
bGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZpY2F0aW9uLiAKKyAqIAorICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8gCisKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjExMSkKK21pZGxf
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjQwMikKKworaW1wb3J0ICJvYmppZGwuaWRsIjsKK2lt
cG9ydCAib2FpZGwuaWRsIjsKK2ltcG9ydCAib2xlYWNjLmlkbCI7CitpbXBvcnQgIklBMkNvbW1v
blR5cGVzLmlkbCI7CisKKy8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgY2xpcGJv
YXJkIGNhcGFiaWxpdHkgdG8gdGV4dCBvYmplY3RzLgorCisgVGhpcyBpbnRlcmZhY2UgaXMgdHlw
aWNhbGx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgSUFjY2Vzc2libGVUZXh0IAorICBp
bnRlcmZhY2UgYW5kIGNvbXBsZW1lbnRzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIGFkZGl0aW9u
YWwgY2FwYWJpbGl0eSBvZgorICBjbGlwYm9hcmQgb3BlcmF0aW9ucy4gIE5vdGUgdGhhdCBldmVu
IGEgcmVhZCBvbmx5IHRleHQgb2JqZWN0IGNhbiBzdXBwb3J0CisgIHRoZSBjb3B5IGNhcGFiaWxp
dHkgc28gdGhpcyBpbnRlcmZhY2UgaXMgbm90IGxpbWl0ZWQgdG8gZWRpdGFibGUgb2JqZWN0cy4K
KworIFRoZSBzdWJzdHJpbmdzIHVzZWQgd2l0aCB0aGlzIGludGVyZmFjZSBhcmUgc3BlY2lmaWVk
IGFzIGZvbGxvd3M6CisgIElmIHN0YXJ0T2Zmc2V0IGlzIGxlc3MgdGhhbiBlbmRPZmZzZXQsIHRo
ZSBzdWJzdHJpbmcgc3RhcnRzIHdpdGggdGhlIAorICBjaGFyYWN0ZXIgYXQgc3RhcnRPZmZzZXQg
YW5kIGVuZHMgd2l0aCB0aGUgY2hhcmFjdGVyIGp1c3QgYmVmb3JlIGVuZE9mZnNldC4KKyAgSWYg
ZW5kT2Zmc2V0IGlzIGxvd2VyIHRoYW4gc3RhcnRPZmZzZXQsICB0aGUgcmVzdWx0IGlzIHRoZSBz
YW1lIGFzIGEgY2FsbCAKKyAgd2l0aCB0aGUgdHdvIGFyZ3VtZW50cyBleGNoYW5nZWQuIFRoZSB3
aG9sZSB0ZXh0IGNhbiBiZSBkZWZpbmVkIGJ5IHBhc3NpbmcgCisgIHRoZSBpbmRpY2VzIHplcm8g
YW5kIElBY2Nlc3NpYmxlVGV4dDo6bkNoYXJhY3RlcnMuIElmIGJvdGggaW5kaWNlcyBoYXZlIHRo
ZSAKKyAgc2FtZSB2YWx1ZSwgYW4gZW1wdHkgc3RyaW5nIGlzIGRlZmluZWQuIAorCisgUmVmZXIg
dG8gdGhlIEByZWYgX3NwZWNpYWxPZmZzZXRzCisgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBp
biB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2Rz
IiAKKyAgZm9yIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lhbCBvZmZzZXQgY29uc3RhbnQgdGhh
dCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgbWV0aG9kcy4KKyovCitb
b2JqZWN0LCB1dWlkKEE1OUFBMDlBLTcwMTEtNGI2NS05MzlELTMyQjFGQjU1NDdFMyldCitpbnRl
cmZhY2UgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgOiBJVW5rbm93bgoreworCisgIC8qKiBAYnJp
ZWYgQ29waWVzIHRoZSB0ZXh0IHJhbmdlIGludG8gdGhlIGNsaXBib2FyZC4KKyAgICAKKyAgIFRo
ZSBzZWxlY3Rpb24gaXMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0cyBhbmQgdGhlbiBzZWxl
Y3Rpb24gaXMgY29waWVkIGludG8KKyAgIHRoZSBzeXN0ZW0gY2xpcGJvYXJkLgorICAgICAgICAK
KyAgIEBwYXJhbSBbaW5dIHN0YXJ0T2Zmc2V0CisgICAgU3RhcnQgaW5kZXggb2YgdGhlIHRleHQg
dG8gbW92ZWQgaW50byB0aGUgY2xpcGJvYXJkLgorICAgIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5s
ZW5ndGguCisgICBAcGFyYW0gW2luXSBlbmRPZmZzZXQKKyAgICBFbmQgaW5kZXggb2YgdGhlIHRl
eHQgdG8gbW92ZWQgaW50byB0aGUgY2xpcGJvYXJkLgorICAgIFRoZSB2YWxpZCByYW5nZSBpcyAw
Li5sZW5ndGguCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJh
ZCBbaW5dIHBhc3NlZAorICAgQG5vdGUgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgCisg
ICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElB
Y2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIAorICAgIGZvciBpbmZvcm1hdGlvbiBhYm91
dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVFZGl0YWJs
ZVRleHQKKyAgICBtZXRob2RzLgorICAgQGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyBhdmFp
bGFibGUgdmlhIHRoZSBhcHBsaWNhdGlvbidzIEdVSS4KKyAgKi8KKyAgSFJFU1VMVCBjb3B5VGV4
dAorICAgICgKKyAgICAgW2luXSBsb25nIHN0YXJ0T2Zmc2V0LCAKKyAgICAgW2luXSBsb25nIGVu
ZE9mZnNldCAKKyAgICApOworCisgIC8qKiBAYnJpZWYgRGVsZXRlcyBhIHJhbmdlIG9mIHRleHQu
CisgICAgCisgICBUaGUgdGV4dCBiZXR3ZWVuIGFuZCBpbmNsdWRpbmcgdGhlIHR3byBnaXZlbiBp
bmRpY2VzIGlzIGRlbGV0ZWQKKyAgICBmcm9tIHRoZSB0ZXh0IHJlcHJlc2VudGVkIGJ5IHRoaXMg
b2JqZWN0LgorCisgICBAcGFyYW0gW2luXSBzdGFydE9mZnNldAorICAgIFN0YXJ0IGluZGV4IG9m
IHRoZSB0ZXh0IHRvIGJlIGRlbGV0ZWQuCisgICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0
aC4KKyAgIEBwYXJhbSBbaW5dIGVuZE9mZnNldAorICAgIEVuZCBpbmRleCBvZiB0aGUgdGV4dCB0
byBiZSBkZWxldGVkLgorICAgIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5ndGguCisgICBAcmV0
dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZAorICAg
QG5vdGUgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgCisgICAgIlNwZWNpYWwgT2Zmc2V0
cyBmb3IgdXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVU
ZXh0IE1ldGhvZHMiIAorICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNldHMg
dGhhdCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVFZGl0YWJsZVRleHQKKyAgICBtZXRob2Rz
LgorICAqLworICBIUkVTVUxUIGRlbGV0ZVRleHQKKyAgICAoCisgICAgIFtpbl0gbG9uZyBzdGFy
dE9mZnNldCwgCisgICAgIFtpbl0gbG9uZyBlbmRPZmZzZXQgCisgICAgKTsKKyAgCisgIC8qKiBA
YnJpZWYgSW5zZXJ0cyB0ZXh0IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgCisgICBU
aGUgc3BlY2lmaWVkIHN0cmluZyBpcyBpbnNlcnRlZCBhdCB0aGUgZ2l2ZW4gaW5kZXggaW50byB0
aGUgdGV4dAorICAgIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0LgorCisgICBAcGFyYW0gW2lu
XSBvZmZzZXQKKyAgICBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIHRleHQuCisgICAgVGhl
IHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4KKyAgICBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zm
c2V0cyAKKyAgICAiU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4
dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgICAgZm9yIGluZm9ybWF0
aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJs
ZUVkaXRhYmxlVGV4dAorICAgIG1ldGhvZHMuCisgICBAcGFyYW0gW2luXSB0ZXh0CisgICAgVGV4
dCB0aGF0IGlzIGluc2VydGVkLgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIEVfSU5WQUxJ
REFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAgKi8KKyAgSFJFU1VMVCBpbnNlcnRUZXh0CisgICAg
KAorICAgICBbaW5dIGxvbmcgb2Zmc2V0LAorICAgICBbaW5dIEJTVFIgKnRleHQKKyAgICApOwor
ICAKKyAgLyoqIEBicmllZiBEZWxldGVzIGEgcmFuZ2Ugb2YgdGV4dCBhbmQgY29waWVzIGl0IHRv
IHRoZSBjbGlwYm9hcmQuCisgICAgCisgICBUaGUgc2VsZWN0aW9uIGlzIHNldCB0byB0aGUgc3Bl
Y2lmaWVkIG9mZnNldHMsIHRoZSBzZWxlY3Rpb24gaXMgdGhlbiBjb3BpZWQgaW50bworICAgIHRo
ZSBzeXN0ZW0gY2xpcGJvYXJkLCBhbmQgdGhlbiB0aGUgc2VsZWN0aW9uIGlzIGRlbGV0ZWQuCisK
KyAgIEBwYXJhbSBbaW5dIHN0YXJ0T2Zmc2V0CisgICAgU3RhcnQgaW5kZXggb2YgdGhlIHRleHQg
dG8gYmUgZGVsZXRlZC4KKyAgICBUaGUgdmFsaWQgcmFuZ2UgaXMgMC4ubGVuZ3RoLgorICAgQHBh
cmFtIFtpbl0gZW5kT2Zmc2V0ICAgICAKKyAgICBFbmQgaW5kZXggb2YgdGhlIHRleHQgdG8gYmUg
ZGVsZXRlZC4KKyAgICBUaGUgdmFsaWQgcmFuZ2UgaXMgMC4ubGVuZ3RoLgorICAgQHJldHZhbCBT
X09LCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAgIEBub3Rl
IFJlZmVyIHRvIEByZWYgX3NwZWNpYWxPZmZzZXRzIAorICAgICJTcGVjaWFsIE9mZnNldHMgZm9y
IHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBN
ZXRob2RzIiAKKyAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQg
Y2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxlRWRpdGFibGVUZXh0CisgICAgbWV0aG9kcy4KKyAg
IEBkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHZpYSB0aGUgYXBwbGljYXRp
b24ncyBHVUkuCisgICovCisgIEhSRVNVTFQgY3V0VGV4dAorICAgICgKKyAgICAgW2luXSBsb25n
IHN0YXJ0T2Zmc2V0LAorICAgICBbaW5dIGxvbmcgZW5kT2Zmc2V0CisgICAgKTsKKworICAvKiog
QGJyaWVmIFBhc3RlcyBjb250ZW50IGZyb20gdGhlIGNsaXBib2FyZC4KKyAgICAKKyAgIEFueSBl
eGlzdGluZyBzZWxlY3Rpb24gaXMgcmVtb3ZlZCwgdGhlIGNsaXBib2FyZCBjb250ZW50IGlzIHRo
ZW4gcGFzdGVkIGludG8gCisgICAgdGhpcyBvYmplY3QncyB0ZXh0IGF0IHRoZSBnaXZlbiBvZmZz
ZXQuICBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIHRoZSBpbnNlcnRUZXh0CisgICAgbWV0aG9k
LiAgSWYgdGhlIGluZGV4IGlzIG5vdCB2YWxpZCB0aGUgc3lzdGVtIGNsaXBib2FyZCBjb250ZW50
IGlzIG5vdCBpbnNlcnRlZC4gVGhlCisgICAgYmVoYXZpb3IgaXMgdGhlIHNhbWUgYXMgICAgd2hl
biBDdHJsK1YgaXMgdXNlZCwgaS5lLiB0aGUgcGFzdGVkIGNvbnRlbnRzIGFyZSBub3QKKyAgICBu
ZWNlc3NhcmlseSBwbGFpbiB0ZXh0LgorICAKKyAgIEBwYXJhbSBbaW5dIG9mZnNldAorICAgIElu
ZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY29udGVudCBmcm9tIHRoZSBzeXN0ZW0gY2xpcGJv
YXJkIGludG8KKyAgICB0aGUgdGV4dCByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdC4KKyAgICBU
aGUgdmFsaWQgcmFuZ2UgaXMgMC4ubGVuZ3RoLgorICAgIFJlZmVyIHRvIEByZWYgX3NwZWNpYWxP
ZmZzZXRzIAorICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVU
ZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiAKKyAgICBmb3IgaW5mb3Jt
YXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3Np
YmxlRWRpdGFibGVUZXh0CisgICAgbWV0aG9kcy4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZh
bCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICBAZGVwcmVjYXRlZCBUaGlzIGZ1
bmN0aW9uIGlzIGF2YWlsYWJsZSB2aWEgdGhlIGFwcGxpY2F0aW9uJ3MgR1VJLgorICAqLworICBI
UkVTVUxUIHBhc3RlVGV4dAorICAgICgKKyAgICAgW2luXSBsb25nIG9mZnNldAorICAgICk7CisK
KyAgLyoqIEBicmllZiBSZXBsYWNlcyB0ZXh0LgorICAgIAorICAgVGhlIHRleHQgYmV0d2VlbiB0
aGUgdHdvIGdpdmVuIGluZGljZXMgaXMgcmVwbGFjZWQgYnkgdGhlIHNwZWNpZmllZCAKKyAgICBy
ZXBsYWNlbWVudCBzdHJpbmcuIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBm
aXJzdAorICAgIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0OjpkZWxldGVUZXh0IHdpdGggdGhlIHR3
byBpbmRpY2VzIGFuZCB0aGVuIAorICAgIGNhbGxpbmcgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQ6
Omluc2VydFRleHQgd2l0aCB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICAgIGF0IHRoZSBzdGFydCBp
bmRleC4KKyAgICAgICAKKyAgIEBwYXJhbSBbaW5dIHN0YXJ0T2Zmc2V0CisgICAgU3RhcnQgaW5k
ZXggb2YgdGhlIHRleHQgdG8gYmUgcmVwbGFjZWQuCisgICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAu
Lmxlbmd0aC4KKyAgIEBwYXJhbSBbaW5dIGVuZE9mZnNldAorICAgIEVuZCBpbmRleCBvZiB0aGUg
dGV4dCB0byBiZSByZXBsYWNlZC4KKyAgICBUaGUgdmFsaWQgcmFuZ2UgaXMgMC4ubGVuZ3RoLgor
ICAgQHBhcmFtIFtpbl0gdGV4dAorICAgIFRoZSBUZXh0IHRoYXQgcmVwbGFjZXMgdGhlIHRleHQg
YmV0d2VlbiB0aGUgZ2l2ZW4gaW5kaWNlcy4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBF
X0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICBAbm90ZSBSZWZlciB0byBAcmVmIF9z
cGVjaWFsT2Zmc2V0cyAKKyAgICAiU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nl
c3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgICAgZm9y
IGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJ
QWNjZXNzaWJsZUVkaXRhYmxlVGV4dAorICAgIG1ldGhvZHMuCisgICovCisgIEhSRVNVTFQgcmVw
bGFjZVRleHQKKyAgICAoCisgICAgIFtpbl0gbG9uZyBzdGFydE9mZnNldCwKKyAgICAgW2luXSBs
b25nIGVuZE9mZnNldCwKKyAgICAgW2luXSBCU1RSICp0ZXh0CisgICAgKTsKKworICAvKiogQGJy
aWVmIFJlcGxhY2VzIHRoZSBhdHRyaWJ1dGVzIG9mIGEgdGV4dCByYW5nZSBieSB0aGUgZ2l2ZW4g
c2V0IG9mIGF0dHJpYnV0ZXMuCisgICAgCisgICBTZXRzIHRoZSBhdHRyaWJ1dGVzIGZvciB0aGUg
dGV4dCBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gaW5kaWNlcy4gVGhlIG9sZAorICAgIGF0dHJpYnV0
ZXMgYXJlIHJlcGxhY2VkIGJ5IHRoZSBuZXcgbGlzdCBvZiBhdHRyaWJ1dGVzLgorICAgICAgICAK
KyAgIEBwYXJhbSBbaW5dIHN0YXJ0T2Zmc2V0CisgICAgU3RhcnQgaW5kZXggb2YgdGhlIHRleHQg
d2hvc2UgYXR0cmlidXRlcyBhcmUgbW9kaWZpZWQuCisgICAgVGhlIHZhbGlkIHJhbmdlIGlzIDAu
Lmxlbmd0aC4KKyAgIEBwYXJhbSBbaW5dIGVuZE9mZnNldAorICAgIEVuZCBpbmRleCBvZiB0aGUg
dGV4dCB3aG9zZSBhdHRyaWJ1dGVzIGFyZSBtb2RpZmllZC4KKyAgICBUaGUgdmFsaWQgcmFuZ2Ug
aXMgMC4ubGVuZ3RoLgorICAgQHBhcmFtIFtpbl0gYXR0cmlidXRlcworICAgIFNldCBvZiBhdHRy
aWJ1dGVzIHRoYXQgcmVwbGFjZXMgdGhlIG9sZCBsaXN0IG9mIGF0dHJpYnV0ZXMgb2YKKyAgICB0
aGUgc3BlY2lmaWVkIHRleHQgcG9ydGlvbi4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBF
X0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICBAbm90ZSBSZWZlciB0byBAcmVmIF9z
cGVjaWFsT2Zmc2V0cyAKKyAgICAiU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nl
c3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgICAgZm9y
IGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJ
QWNjZXNzaWJsZUVkaXRhYmxlVGV4dAorICAgIG1ldGhvZHMuCisgICovCisgIEhSRVNVTFQgc2V0
QXR0cmlidXRlcworICAgICgKKyAgICAgW2luXSBsb25nIHN0YXJ0T2Zmc2V0LAorICAgICBbaW5d
IGxvbmcgZW5kT2Zmc2V0LAorICAgICBbaW5dIEJTVFIgKmF0dHJpYnV0ZXMKKyAgICApOworfQor
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2li
bGVSZWxhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsCShyZXZpc2lvbiAxODg2MzgpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVSZWxh
dGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDkgQEAKICAqIAogICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8gCiAKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjExMSkKK21pZGxfcHJh
Z21hIHdhcm5pbmcoZGlzYWJsZTogMjQwMikKKwogaW1wb3J0ICJvYmppZGwuaWRsIjsKIGltcG9y
dCAib2FpZGwuaWRsIjsKIGltcG9ydCAib2xlYWNjLmlkbCI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJs
ZVN0YXRlcy5pZGwJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVy
ZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVN0YXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDkgQEAKICAqIAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gCiAKK21pZGxfcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogMjExMSkKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjQwMikK
KwogaW1wb3J0ICJvYmppZGwuaWRsIjsKIAogdHlwZWRlZiBsb25nIEFjY2Vzc2libGVTdGF0ZXM7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2li
bGVUZXh0Mi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9B
Y2Nlc3NpYmxlMi9BY2Nlc3NpYmxlVGV4dDIuaWRsCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVUZXh0Mi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOTggKzEsMTAxIEBACi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAq
DQotICogIEZpbGUgTmFtZSAoQWNjZXNzaWJsZVRleHQyLmlkbCkNCi0gKiANCi0gKiAgSUFjY2Vz
c2libGUyIElETCBTcGVjaWZpY2F0aW9uIA0KLSAqIA0KLSAqICBDb3B5cmlnaHQgKGMpIDIwMDcs
IDIwMTMgTGludXggRm91bmRhdGlvbiANCi0gKiAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jw
b3JhdGlvbiANCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNyb3N5c3RlbXMs
IEluYy4gDQotICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIA0KLSAqICAgDQotICogICANCi0gKiAg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0IA0KLSAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgDQotICogIGFyZSBtZXQ6IA0KLSAqICAgDQotICog
ICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCANCi0gKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gDQotICogICANCi0gKiAgIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgDQotICogICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyANCi0gKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyANCi0gKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gDQot
ICoNCi0gKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgDQotICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIA0KLSAqICAgICAgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIA0KLSAqICAgICAgcGVybWlz
c2lvbi4gDQotICogICANCi0gKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIA0KLSAqICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCANCi0gKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgDQotICogIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIA0KLSAqICBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiANCi0gKiAgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IA0KLSAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgDQotICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyANCi0gKiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgDQotICogIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiANCi0gKiAgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIA0KLSAqICBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCANCi0gKiAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gDQotICogICANCi0gKiAgVGhpcyBCU0QgTGljZW5zZSBjb25mb3JtcyB0byB0aGUgT3Bl
biBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCANCi0gKiAgQlNEIExpY2Vuc2UiIGFzIHB1
Ymxpc2hlZCBhdDogDQotICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk
LWxpY2Vuc2UucGhwIA0KLSAqICAgDQotICogIElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBv
ZiB0aGUgTGludXggRm91bmRhdGlvbi4gVGhlIElBY2Nlc3NpYmxlMiANCi0gKiAgbWFyayBtYXkg
YmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJr
IA0KLSAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3aXRoIHRoZSBJQWNjZXNzaWJs
ZTIgc3BlY2lmaWNhdGlvbi4gDQotICogDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gDQotDQotaW1wb3J0
ICJvYmppZGwuaWRsIjsNCi1pbXBvcnQgIm9haWRsLmlkbCI7DQotaW1wb3J0ICJvbGVhY2MuaWRs
IjsNCi1pbXBvcnQgIklBMkNvbW1vblR5cGVzLmlkbCI7DQotaW1wb3J0ICJBY2Nlc3NpYmxlVGV4
dC5pZGwiOw0KLQ0KLS8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgZ2l2ZXMgcmVhZC1vbmx5IGFj
Y2VzcyB0byB0ZXh0Lg0KLQ0KLSBUaGUgJUlBY2Nlc3NpYmxlVGV4dDIgaW50ZXJmYWNlIGV4dGVu
ZHMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlDQotICVJQWNjZXNzaWJsZVRleHQgaW50ZXJmYWNl
Lg0KLSovDQotW29iamVjdCwgdXVpZCg5NjkwQTlDQy01QzgwLTRERjUtODUyRS0yRDVBRTQxODlB
NTQpXQ0KLWludGVyZmFjZSBJQWNjZXNzaWJsZVRleHQyIDogSUFjY2Vzc2libGVUZXh0DQotew0K
LQ0KLSAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSByYW5nZSBhbmQgb2YgdGhlIHNwZWNpZmllZCBz
ZXQgb2YgYXR0cmlidXRlcy4NCi0NCi0gICBSZXR1cm4gdGhlIHJhbmdlIChzdGFydCBhbmQgZW5k
IG9mZnNldHMpIGFuZCB0ZXh0IGF0dHJpYnV0ZXMgdGhhdCBjb3JyZXNwb25kDQotICAgIHRvIHRo
ZSBnaXZlbiBhdHRyaWJ1dGVzIGZpbHRlciBhdCB0aGUgZ2l2ZW4gb2Zmc2V0Lg0KLQ0KLSAgIEBw
YXJhbSBbaW5dIG9mZnNldA0KLSAgICBUaGUgb2Zmc2V0IGF0IHdoaWNoIHRvIHNlYXJjaCBmb3Ig
dGhlIGF0dHJpYnV0ZXMgc3BlY2lmaWVkIGluIHRoZSBmaWx0ZXIuDQotICAgQHBhcmFtIFtpbl0g
ZmlsdGVyDQotICAgIFRoZSByZXF1ZXN0ZWQgYXR0cmlidXRlIG5hbWVzLiAgVGhlIGZpbHRlciBm
b3JtYXQgaXMgImF0dHJpYnV0ZTEsIGF0dHJpYnV0ZTIiLg0KLSAgIEBwYXJhbSBbb3V0XSBzdGFy
dE9mZnNldA0KLSAgICBUaGUgc3RhcnRpbmcgKDAtYmFzZWQpIG9mZnNldCBvZiB0aGUgdGV4dCBj
b250YWluaW5nIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlcy4NCi0gICBAcGFyYW0gW291dF0gZW5k
T2Zmc2V0DQotICAgIFRoZSAoMC1iYXNlZCkgb2Zmc2V0IG9uZSBwYXN0IHRoZSBsYXN0IGNoYXJh
Y3RlciBvZiB0aGUgdGV4dCBjb250YWluaW5nIHRoZQ0KLSAgICBzcGVjaWZpZWQgYXR0cmlidXRl
cy4NCi0gICBAcGFyYW0gW291dF0gYXR0cmlidXRlVmFsdWVzDQotICAgIFRoZSB2YWx1ZXMgb2Yg
dGhlIHJlcXVlc3RlZCBhdHRyaWJ1dGVzLg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2YWwg
U19GQUxTRSBpZiBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFsdWVzIGFyZSAtMSwgLTEsIE5V
TEwgcmVzcGVjdGl2ZWx5Lg0KLSAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBh
c3NlZC4NCi0gICAqLw0KLSAgW3Byb3BnZXRdIEhSRVNVTFQgYXR0cmlidXRlUmFuZ2UNCi0gICAg
KA0KLSAgICAgW2luXSBsb25nIG9mZnNldCwNCi0gICAgIFtpbl0gQlNUUiBmaWx0ZXIsDQotICAg
ICBbb3V0XSBsb25nICpzdGFydE9mZnNldCwNCi0gICAgIFtvdXRdIGxvbmcgKmVuZE9mZnNldCwg
ICAgDQotICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKmF0dHJpYnV0ZVZhbHVlcw0KLSAgICApOw0K
LQ0KLX0NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBGaWxlIE5hbWUgKEFjY2Vzc2libGVU
ZXh0Mi5pZGwpCisgKiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRpb24gCisgKiAK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTMgTGludXggRm91bmRhdGlvbiAKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwMCwg
MjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAor
ICogICAKKyAqICAgCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAqICBhcmUgbWV0
OiAKKyAqICAgCisgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAKKyAqICAgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAK
KyAqICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgCisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqCisgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5kYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAgICAgIGRlcml2ZWQgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAqICAgICAgcGVy
bWlzc2lvbi4gCisgKiAgIAorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqICBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqICBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqICBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisg
KiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIAorICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAorICogIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIAorICog
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
ICAKKyAqICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNvdXJjZSBJbml0
aWF0aXZlICJTaW1wbGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNoZWQgYXQ6IAor
ICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIAor
ICogICAKKyAqICBJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIExpbnV4IEZvdW5k
YXRpb24uIFRoZSBJQWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkgYmUgdXNlZCBpbiBhY2NvcmRh
bmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIAorICogIFBvbGljeSB0byBp
bmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZpY2F0aW9uLiAK
KyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8gCisKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTog
MjExMSkKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjQwMikKKworaW1wb3J0ICJvYmpp
ZGwuaWRsIjsKK2ltcG9ydCAib2FpZGwuaWRsIjsKK2ltcG9ydCAib2xlYWNjLmlkbCI7CitpbXBv
cnQgIklBMkNvbW1vblR5cGVzLmlkbCI7CitpbXBvcnQgIkFjY2Vzc2libGVUZXh0LmlkbCI7CisK
Ky8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgZ2l2ZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0ZXh0
LgorCisgVGhlICVJQWNjZXNzaWJsZVRleHQyIGludGVyZmFjZSBleHRlbmRzIHRoZSBmdW5jdGlv
bmFsaXR5IG9mIHRoZQorICVJQWNjZXNzaWJsZVRleHQgaW50ZXJmYWNlLgorKi8KK1tvYmplY3Qs
IHV1aWQoOTY5MEE5Q0MtNUM4MC00REY1LTg1MkUtMkQ1QUU0MTg5QTU0KV0KK2ludGVyZmFjZSBJ
QWNjZXNzaWJsZVRleHQyIDogSUFjY2Vzc2libGVUZXh0Cit7CisKKyAgLyoqIEBicmllZiBSZXR1
cm5zIHRoZSByYW5nZSBhbmQgb2YgdGhlIHNwZWNpZmllZCBzZXQgb2YgYXR0cmlidXRlcy4KKwor
ICAgUmV0dXJuIHRoZSByYW5nZSAoc3RhcnQgYW5kIGVuZCBvZmZzZXRzKSBhbmQgdGV4dCBhdHRy
aWJ1dGVzIHRoYXQgY29ycmVzcG9uZAorICAgIHRvIHRoZSBnaXZlbiBhdHRyaWJ1dGVzIGZpbHRl
ciBhdCB0aGUgZ2l2ZW4gb2Zmc2V0LgorCisgICBAcGFyYW0gW2luXSBvZmZzZXQKKyAgICBUaGUg
b2Zmc2V0IGF0IHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGF0dHJpYnV0ZXMgc3BlY2lmaWVkIGlu
IHRoZSBmaWx0ZXIuCisgICBAcGFyYW0gW2luXSBmaWx0ZXIKKyAgICBUaGUgcmVxdWVzdGVkIGF0
dHJpYnV0ZSBuYW1lcy4gIFRoZSBmaWx0ZXIgZm9ybWF0IGlzICJhdHRyaWJ1dGUxLCBhdHRyaWJ1
dGUyIi4KKyAgIEBwYXJhbSBbb3V0XSBzdGFydE9mZnNldAorICAgIFRoZSBzdGFydGluZyAoMC1i
YXNlZCkgb2Zmc2V0IG9mIHRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBhdHRyaWJ1
dGVzLgorICAgQHBhcmFtIFtvdXRdIGVuZE9mZnNldAorICAgIFRoZSAoMC1iYXNlZCkgb2Zmc2V0
IG9uZSBwYXN0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgdGV4dCBjb250YWluaW5nIHRoZQor
ICAgIHNwZWNpZmllZCBhdHRyaWJ1dGVzLgorICAgQHBhcmFtIFtvdXRdIGF0dHJpYnV0ZVZhbHVl
cworICAgIFRoZSB2YWx1ZXMgb2YgdGhlIHJlcXVlc3RlZCBhdHRyaWJ1dGVzLgorICAgQHJldHZh
bCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZh
bHVlcyBhcmUgLTEsIC0xLCBOVUxMIHJlc3BlY3RpdmVseS4KKyAgIEByZXR2YWwgRV9JTlZBTElE
QVJHIGlmIGJhZCBbaW5dIHBhc3NlZC4KKyAgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGF0dHJp
YnV0ZVJhbmdlCisgICAgKAorICAgICBbaW5dIGxvbmcgb2Zmc2V0LAorICAgICBbaW5dIEJTVFIg
ZmlsdGVyLAorICAgICBbb3V0XSBsb25nICpzdGFydE9mZnNldCwKKyAgICAgW291dF0gbG9uZyAq
ZW5kT2Zmc2V0LCAgICAKKyAgICAgW291dCwgcmV0dmFsXSBCU1RSICphdHRyaWJ1dGVWYWx1ZXMK
KyAgICApOworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2li
bGUyL0FjY2Vzc2libGVUZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVUZXh0LmlkbAkocmV2aXNpb24gMTg4NjM4
KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxl
VGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjg0ICsxLDY4NyBAQAotLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCi0gKg0KLSAqICBGaWxlIE5hbWUgKEFjY2Vzc2libGVUZXh0LmlkbCkNCi0gKiANCi0g
KiAgSUFjY2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uIA0KLSAqIA0KLSAqICBDb3B5cmlnaHQg
KGMpIDIwMDcsIDIwMTMgTGludXggRm91bmRhdGlvbiANCi0gKiAgQ29weXJpZ2h0IChjKSAyMDA2
IElCTSBDb3Jwb3JhdGlvbiANCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNy
b3N5c3RlbXMsIEluYy4gDQotICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIA0KLSAqICAgDQotICog
ICANCi0gKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0IA0KLSAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgDQotICogIGFyZSBtZXQ6IA0KLSAq
ICAgDQotICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCANCi0gKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gDQotICogICANCi0gKiAgIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgDQot
ICogICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyANCi0gKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyANCi0gKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gDQotICoNCi0gKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5k
YXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgDQotICogICAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIA0KLSAqICAgICAgZGVyaXZlZCBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIA0KLSAqICAg
ICAgcGVybWlzc2lvbi4gDQotICogICANCi0gKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIA0KLSAqICBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCANCi0gKiAgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgDQotICogIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIA0KLSAq
ICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAN
Ci0gKiAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIA0KLSAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgDQotICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyANCi0gKiAgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgDQotICogIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiANCi0gKiAgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IA0KLSAqICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCANCi0gKiAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gDQotICogICANCi0gKiAgVGhpcyBCU0QgTGljZW5zZSBjb25mb3JtcyB0
byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCANCi0gKiAgQlNEIExpY2Vu
c2UiIGFzIHB1Ymxpc2hlZCBhdDogDQotICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGlj
ZW5zZXMvYnNkLWxpY2Vuc2UucGhwIA0KLSAqICAgDQotICogIElBY2Nlc3NpYmxlMiBpcyBhIHRy
YWRlbWFyayBvZiB0aGUgTGludXggRm91bmRhdGlvbi4gVGhlIElBY2Nlc3NpYmxlMiANCi0gKiAg
bWFyayBtYXkgYmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24g
VHJhZGVtYXJrIA0KLSAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3aXRoIHRoZSBJ
QWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gDQotICogDQotICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gDQot
DQotaW1wb3J0ICJvYmppZGwuaWRsIjsNCi1pbXBvcnQgIm9haWRsLmlkbCI7DQotaW1wb3J0ICJv
bGVhY2MuaWRsIjsNCi1pbXBvcnQgIklBMkNvbW1vblR5cGVzLmlkbCI7DQotDQotLyoqIEEgc3Ry
dWN0dXJlIGNvbnRhaW5pbmcgYSBzdWJzdHJpbmcgYW5kIHRoZSBzdGFydCBhbmQgZW5kIG9mZnNl
dHMgaW4gdGhlIGVuY2xvc2luZyBzdHJpbmcuDQotIA0KLSBJQWNjZXNzaWJsZVRleHQ6Om5ld1Rl
eHQgYW5kIElBY2Nlc3NpYmxlVGV4dDo6b2xkVGV4dCByZXR1cm4gdGhpcyBzdHJ1Y3QuDQotKi8N
Ci10eXBlZGVmIHN0cnVjdCBJQTJUZXh0U2VnbWVudCB7DQotICBCU1RSIHRleHQ7ICAgIC8vLzwg
QSBjb3B5IG9mIGEgc2VnbWVudCBvZiB0ZXh0IHRha2VuIGZyb20gYW4gZW5jbG9zaW5nIHBhcmFn
cmFwaC4NCi0gIGxvbmcgc3RhcnQ7ICAgIC8vLzwgSW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3Rl
ciBvZiB0aGUgc2VnbWVudCBpbiB0aGUgZW5jbG9zaW5nIHRleHQuICANCi0gIGxvbmcgZW5kOyAg
ICAgICAgLy8vPCBJbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgbGFzdCBjaGFy
YWN0ZXIgb2YgdGhlIHNlZ21lbnQgaW4gdGhlIGVuY2xvc2luZyB0ZXh0LiANCi19IElBMlRleHRT
ZWdtZW50Ow0KLQ0KLS8qKiBUaGlzIGVudW0gZGVmaW5lcyB2YWx1ZXMgd2hpY2ggc3BlY2lmeSBh
IHRleHQgYm91bmRhcnkgdHlwZS4NCi0NCi0gSUEyX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0UgaXMg
b3B0aW9uYWwuICBXaGVuIGEgbWV0aG9kIGRvZXNuJ3QgaW1wbGVtZW50IHRoaXMgDQotIG1ldGhv
ZCBpdCBtdXN0IHJldHVybiBTX0ZBTFNFLiAgVHlwaWNhbGx5IHRoaXMgZmVhdHVyZSB3b3VsZCBu
b3QgYmUgaW1wbGVtZW50ZWQNCi0gYnkgYW4gYXBwbGljYXRpb24uICBIb3dldmVyLCBpZiB0aGUg
YXBwbGljYXRpb24gZGV2ZWxvcGVyIHdhcyBub3Qgc2F0aXNmaWVkIHdpdGgNCi0gaG93IHNjcmVl
biByZWFkZXJzIGhhdmUgaGFuZGxlZCB0aGUgcmVhZGluZyBvZiBzZW50ZW5jZXMgdGhpcyBib3Vu
ZGFyeSB0eXBlDQotIGNvdWxkIGJlIGltcGxlbWVudGVkIGFuZCBzY3JlZW4gcmVhZGVycyBjb3Vs
ZCB1c2UgdGhlIGFwcGxpY2F0aW9uJ3MgdmVyc2lvbiBvZiBhIA0KLSBzZW50ZW5jZSByYXRoZXIg
dGhhbiB0aGUgc2NyZWVuIHJlYWRlcidzLg0KLQ0KLSBUaGUgcmVzdCBvZiB0aGUgYm91bmRhcnkg
dHlwZXMgbXVzdCBiZSBzdXBwb3J0ZWQuDQotDQotIFRoaXMgZW51bSBpcyB1c2VkIGluIElBY2Nl
c3NpYmxlVGV4dDo6dGV4dEJlZm9yZU9mZnNldCwgSUFjY2Vzc2libGVUZXh0Ojp0ZXh0QXRPZmZz
ZXQsDQotIGFuZCBJQWNjZXNzaWJsZVRleHQ6OnRleHRBZnRlck9mZnNldC4NCi0qLw0KLQ0KLWVu
dW0gSUEyVGV4dEJvdW5kYXJ5VHlwZSB7DQotICBJQTJfVEVYVF9CT1VOREFSWV9DSEFSLCAgICAg
ICAvKio8IFR5cGljYWxseSwgYSBzaW5nbGUgY2hhcmFjdGVyIGlzIHJldHVybmVkLiAgSW4gc29t
ZSBjYXNlcyBtb3JlIHRoYW4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmUg
Y2hhcmFjdGVyIGlzIHJldHVybmVkLCBmb3IgZXhhbXBsZSwgd2hlbiBhIGRvY3VtZW50IGNvbnRh
aW5zIGZpZWxkDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBzdWNoIGFz
IGEgZmllbGQgY29udGFpbmluZyBhIGRhdGUsIHRpbWUsIG9yIGZvb3Rub3RlIHJlZmVyZW5jZS4N
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UgdGhlIGNhcmV0
IGNhbiBtb3ZlIG92ZXIgc2V2ZXJhbCBjaGFyYWN0ZXJzIGluIG9uZSBtb3ZlbWVudA0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBjYXJldC4gIE5vdGUgdGhhdCBhZnRl
ciB0aGUgY2FyZXQgbW92ZXMsIHRoZSBjYXJldCBvZmZzZXQgY2hhbmdlcw0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUg
ZmllbGQsIGUuZy4gYnkgOCBjaGFyYWN0ZXJzIGluIHRoZSANCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb2xsb3dpbmcgZGF0ZTogMDMvMjYvMDcuICovDQotICBJQTJfVEVYVF9C
T1VOREFSWV9XT1JELCAgICAgICAvKio8IFRoZSByYW5nZSBwcm92aWRlZCBtYXRjaGVzIHRoZSBy
YW5nZSBvYnNlcnZlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbg0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NlcyB0aGUgQ3RybCArIGxlZnQgYXJyb3cgYW5kIEN0cmwgKyBy
aWdodCBhcnJvdyBrZXkgc2VxdWVuY2VzLg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGljYWxseSB0aGlzIGlzIGZyb20gdGhlIHN0YXJ0IG9mIG9uZSB3b3JkIHRvIHRoZSBz
dGFydCBvZiB0aGUgbmV4dCwgYnV0DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaW91cyBhcHBsaWNhdGlvbnMgYXJlIGluY29uc2lzdGVudCBpbiB0aGUgaGFuZGxpbmcgb2Yg
dGhlIGVuZCBvZiBhIGxpbmUuICovDQotICBJQTJfVEVYVF9CT1VOREFSWV9TRU5URU5DRSwgICAv
Ly88IFJhbmdlIGlzIGZyb20gc3RhcnQgb2Ygb25lIHNlbnRlbmNlIHRvIHRoZSBzdGFydCBvZiBh
bm90aGVyIHNlbnRlbmNlLg0KLSAgSUEyX1RFWFRfQk9VTkRBUllfUEFSQUdSQVBILCAgLy8vPCBS
YW5nZSBpcyBmcm9tIHN0YXJ0IG9mIG9uZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIGFub3Ro
ZXIgcGFyYWdyYXBoLg0KLSAgSUEyX1RFWFRfQk9VTkRBUllfTElORSwgICAgICAgLyoqPCBSYW5n
ZSBpcyBmcm9tIHN0YXJ0IG9mIG9uZSBsaW5lIHRvIHRoZSBzdGFydCBvZiBhbm90aGVyIGxpbmUu
IFRoaXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnRlbiBtZWFucyB0aGF0
IGFuIGVuZC1vZi1saW5lIGNoYXJhY3RlciB3aWxsIGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZQ0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLiBIb3dldmVyIGluIHRoZSBj
YXNlIG9mIHNvbWUgYXBwbGljYXRpb25zIGFuIGVuZC1vZi1saW5lIGNoYXJhY3Rlcg0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB0aGUgZW5kIG9mIGEgcGFyYWdy
YXBoIGFuZCB0aGUgbGluZXMgY29tcG9zaW5nIHRoZSBwYXJhZ3JhcGgsDQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGhhbiB0aGUgbGFzdCBsaW5lLCBkbyBub3QgY29u
dGFpbiBhbiBlbmQgb2YgbGluZSBjaGFyYWN0ZXIuICovDQotICBJQTJfVEVYVF9CT1VOREFSWV9B
TEwgICAgICAgICAvLy88IFVzaW5nIHRoaXMgdmFsdWUgd2lsbCBjYXVzZSBhbGwgdGV4dCB0byBi
ZSByZXR1cm5lZC4NCi19Ow0KLQ0KLS8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgZ2l2ZXMgcmVh
ZC1vbmx5IGFjY2VzcyB0byB0ZXh0Lg0KLQ0KLSBUaGUgJUlBY2Nlc3NpYmxlVGV4dCBpbnRlcmZh
Y2Ugc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGFsbCBjb21wb25lbnRzIA0KLSAgdGhhdCBwcmVz
ZW50IHRleHR1YWwgaW5mb3JtYXRpb24gb24gdGhlIGRpc3BsYXkgbGlrZSAgYnV0dG9ucywgDQot
ICB0ZXh0IGVudHJ5IGZpZWxkcywgb3IgdGV4dCBwb3J0aW9ucyBvZiB0aGUgZG9jdW1lbnQgd2lu
ZG93LiAgVGhlIGludGVyZmFjZSANCi0gIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdGV4dCdzIGNv
bnRlbnQsIGF0dHJpYnV0ZXMsIGFuZCBzcGF0aWFsIGxvY2F0aW9uLiAgDQotICBIb3dldmVyLCB0
ZXh0IGNhbiBub3QgYmUgbW9kaWZpZWQgd2l0aCB0aGlzIGludGVyZmFjZS4gIFRoYXQgaXMgdGhl
IHRhc2sgDQotICBvZiB0aGUgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgaW50ZXJmYWNlLg0KLSAg
ICAgICAgDQotIFRoZSB0ZXh0IGxlbmd0aCwgaS5lLiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg
aW4gdGhlIHRleHQsIGlzDQotICByZXR1cm5lZCBieSBJQWNjZXNzaWJsZVRleHQ6Om5DaGFyYWN0
ZXJzLiBBbGwgbWV0aG9kcyB0aGF0IG9wZXJhdGUgDQotICBvbiBwYXJ0aWN1bGFyIGNoYXJhY3Rl
cnMgKGUuZy4gSUFjY2Vzc2libGVUZXh0Ojp0ZXh0QXRPZmZzZXQpIHVzZSBjaGFyYWN0ZXIgDQot
ICBpbmRpY2VzIGZyb20gMCB0byBsZW5ndGgtMS4gQWxsIG1ldGhvZHMgdGhhdCBvcGVyYXRlIG9u
IGNoYXJhY3RlciBwb3NpdGlvbnMgDQotICAoZS5nLiBJQWNjZXNzaWJsZVRleHQ6OnRleHQpIHVz
ZSBpbmRpY2VzIGZyb20gMCB0byBsZW5ndGguDQotDQotIFBsZWFzZSBub3RlIHRoYXQgYWNjZXNz
aWJsZSB0ZXh0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IHN1cHBvcnQgc2VsZWN0aW9uLiAgDQotICBJ
biB0aGlzIGNhc2UgaXQgc2hvdWxkIGJlaGF2ZSBhcyBpZiB0aGVyZSB3aGVyZSBubyBzZWxlY3Rp
b24uICBBbiBlbXB0eSANCi0gIHNlbGVjdGlvbiBpcyB1c2VkIGZvciBleGFtcGxlIHRvIGV4cHJl
c3MgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLg0KLQ0KLSBSZWZlciB0byBAcmVmIF9zcGVj
aWFsT2Zmc2V0cyANCi0gICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2li
bGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0gIGZvciBpbmZv
cm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vz
c2libGVUZXh0IG1ldGhvZHMuDQotDQotIEVfRkFJTCBpcyByZXR1cm5lZCBpbiB0aGUgZm9sbG93
aW5nIGNhc2VzDQotIEBsaSBlbmRPZmZzZXQgPCBzdGFydE9mZnNldA0KLSBAbGkgZW5kb2Zmc2V0
ID4gbGVuZ3RoDQotKi8NCi1bb2JqZWN0LCB1dWlkKDI0RkQyRkZCLTNBQUQtNGEwOC04MzM1LUEz
QUQ4OUMwRkI0QildDQotaW50ZXJmYWNlIElBY2Nlc3NpYmxlVGV4dCA6IElVbmtub3duDQotew0K
LQ0KLSAgLyoqIEBicmllZiBBZGRzIGEgdGV4dCBzZWxlY3Rpb24NCi0gICBAcGFyYW0gW2luXSBz
dGFydE9mZnNldA0KLSAgICBTdGFydGluZyBvZmZzZXQgKCAwIGJhc2VkKS4NCi0gICBAcGFyYW0g
W2luXSBlbmRPZmZzZXQNCi0gICAgT2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciBhZnRlciBuZXcg
c2VsZWN0aW9uICgwIGJhc2VkKS4NCi0gICBAcmV0dmFsIFNfT0sNCi0gICBAcmV0dmFsIEVfSU5W
QUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICBAbm90ZSAgUmVmZXIgdG8gQHJlZiBfc3Bl
Y2lhbE9mZnNldHMgDQotICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vz
c2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0gICAgZm9y
IGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJ
QWNjZXNzaWJsZVRleHQgbWV0aG9kcy4NCi0gICovDQotICBIUkVTVUxUIGFkZFNlbGVjdGlvbg0K
LSAgICAoDQotICAgICBbaW5dIGxvbmcgc3RhcnRPZmZzZXQsDQotICAgICBbaW5dIGxvbmcgZW5k
T2Zmc2V0DQotICAgICk7DQotDQotICAvKiogQGJyaWVmIFJldHVybnMgdGV4dCBhdHRyaWJ1dGVz
Lg0KLSAgIEBwYXJhbSBbaW5dIG9mZnNldA0KLSAgICBUZXh0IG9mZnNldCAoMCBiYXNlZCkuICBS
ZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3Ig
dXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1l
dGhvZHMiIA0KLSAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQg
Y2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxlVGV4dCBtZXRob2RzLg0KLSAgIEBwYXJhbSBbb3V0
XSBzdGFydE9mZnNldCAgICANCi0gICAgVGhlIHN0YXJ0aW5nIG9mZnNldCBvZiB0aGUgY2hhcmFj
dGVyIHJhbmdlIG92ZXIgd2hpY2ggYWxsIHRleHQgYXR0cmlidXRlcyBtYXRjaCANCi0gICAgdGhv
c2Ugb2Ygb2Zmc2V0LiAoMCBiYXNlZCkNCi0gICBAcGFyYW0gW291dF0gZW5kT2Zmc2V0ICAgIA0K
LSAgICBUaGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcGFzdCB0aGUgY2hhcmFjdGVy
IHJhbmdlIG92ZXIgd2hpY2ggYWxsIHRleHQgDQotICAgIGF0dHJpYnV0ZXMgbWF0Y2ggdGhvc2Ug
b2Ygb2Zmc2V0LiAoMCBiYXNlZCkNCi0gICBAcGFyYW0gW291dF0gdGV4dEF0dHJpYnV0ZXMgIA0K
LSAgICBBIHN0cmluZyBvZiBhdHRyaWJ1dGVzIGRlc2NyaWJpbmcgdGhlIHRleHQuICBUaGUgYXR0
cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluIHRoZQ0KLSAgICA8YSBocmVmPSJodHRwOi8vd3d3Lmxp
bnV4Zm91bmRhdGlvbi5vcmcvZW4vQWNjZXNzaWJpbGl0eS9JQWNjZXNzaWJsZTIvVGV4dEF0dHJp
YnV0ZXMiPg0KLSAgICB0ZXh0IGF0dHJpYnV0ZXMgc3BlY2lmaWNhdGlvbjwvYT4gb24gdGhlICVJ
QWNjZXNzaWJsZTIgd2ViIHNpdGUuDQotICAgQHJldHZhbCBTX09LDQotICAgQHJldHZhbCBTX0ZB
TFNFIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZXMgYXJlIDBzIGFu
ZCBOVUxMIHJlc3BlY3RpdmVseSANCi0gICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2lu
XSBwYXNzZWQNCi0gICovDQotICBbcHJvcGdldF0gSFJFU1VMVCBhdHRyaWJ1dGVzDQotICAgICgN
Ci0gICAgIFtpbl0gbG9uZyBvZmZzZXQsICAgIA0KLSAgICAgW291dF0gbG9uZyAqc3RhcnRPZmZz
ZXQsDQotICAgICBbb3V0XSBsb25nICplbmRPZmZzZXQsICAgIA0KLSAgICAgW291dCwgcmV0dmFs
XSBCU1RSICp0ZXh0QXR0cmlidXRlcw0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmllZiBSZXR1cm5z
IHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQuDQotDQotICAgUmV0dXJucyB0aGUgMC1iYXNlZCBv
ZmZzZXQgb2YgdGhlIGNhcmV0IHdpdGhpbiB0aGUgdGV4dC4gIElmIHRoZSB0ZXh0IGlzIA0KLSAg
IGltcGxlbWVudGVkIGFzIGEgdHJlZSBvZiB0ZXh0IG9iamVjdHMgd2l0aCBlbWJlZCBjaGFyYWN0
ZXJzIGluIGhpZ2hlciBsZXZlbHMNCi0gICByZXByZXNlbnRpbmcgc3Vic3RyaW5ncyBvZiBjaGls
ZCB0ZXh0IG9iamVjdHMgYW5kIHRoZSBjYXJldCBpcyBpbiBvbmUgb2YgdGhlIA0KLSAgIGNoaWxk
IHRleHQgb2JqZWN0cywgdGhlbiB0aGUgb2Zmc2V0IGluIHRoZSBoaWdoZXIgbGV2ZWwgdGV4dCBv
YmplY3Qgd291bGQgYmUNCi0gICBhdCB0aGUgZW1iZWQgY2hhcmFjdGVyIHJlcHJlc2VudGluZyBj
aGlsZCB0ZXh0IG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBjYXJldC4NCi0NCi0gICBGb3IgZXhh
bXBsZSwgaWYgdGhlIHN0cmluZyAib25lIHR3byB0aHJlZSIgaXMgaW1wbGVtZW50ZWQgYXMgYSB0
d28gdGV4dCBvYmplY3RzLA0KLSAgIHdpdGggYSB0b3AgbGV2ZWwgdGV4dCBvYmplY3QgY29udGFp
bmluZyBhbiBlbWJlZCBjaGFyYWN0ZXIgIm9uZSA/IHRocmVlIiBhbmQgYQ0KLSAgIGNoaWxkIHRl
eHQgb2JqZWN0IGNvbnRhaW5pbmcgInR3byIgYW5kIGlmIHRoZSBjYXJldCBpcyBpbiB0aGUgZGVz
Y2VuZGFudCBvYmplY3QNCi0gICBqdXN0IGJlZm9yZSB0aGUgJ28nIGluICJ0d28iLCB0aGVuOg0K
LSAgIDx1bD4NCi0gICA8bGk+dGhlIGNhcmV0T2Zmc2V0IGZvciB0aGUgIm9uZSA/IHRocmVlIiBv
YmplY3Qgd291bGQgYmUgNCwgbWF0Y2hpbmcgdGhlIGVtYmVkIGNoYXJhY3RlcjwvbGk+DQotICAg
PGxpPnRoZSBjYXJldE9mZnNldCBmb3IgInR3byIgd291bGQgYmUgMiwgbWF0Y2hpbmcgdGhlICJv
IjwvbGk+DQotICAgPC91bD4NCi0gICBUaGUgY2FyZXQgcG9zaXRpb24vb2Zmc2V0IGlzIHRoYXQg
b2YgdGhlIGNoYXJhY3RlciBsb2dpY2FsbHkgZm9sbG93aW5nIGl0LCBlLmcuDQotICAgdG8gdGhl
IHJpZ2h0IG9mIGl0IGluIGEgbGVmdCB0byByaWdodCBsYW5ndWFnZSwgb3IgdG8gdGhlIGxlZnQg
b2YgaXQgaW4gYSByaWdodA0KLSAgIHRvIGxlZnQgbGFuZ3VhZ2UuDQotICAgQHBhcmFtIFtvdXRd
IG9mZnNldA0KLSAgICBUaGUgcmV0dXJuZWQgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSB0ZXh0
IHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0Lg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2
YWwgU19GQUxTRSBpZiB0aGUgY2FyZXQgaXMgbm90IGN1cnJlbnRseSBhY3RpdmUgb24gdGhpcyBv
YmplY3QsIGkuZS4gdGhlDQotICAgIGNhcmV0IGlzIGxvY2F0ZWQgb24gc29tZSBvdGhlciBvYmpl
Y3QuICBUaGUgcmV0dXJuZWQgb2Zmc2V0IHZhbHVlIHdpbGwgYmUgLTEuDQotICAgQG5vdGUgU19G
QUxTRSAoYW5kIGFuIG9mZnNldCBvZiAtMSkgd2lsbCBub3QgYmUgcmV0dXJuZWQgaWYgdGhlIGNh
cmV0IGlzIHNvbWV3aGVyZQ0KLSAgIGluIHRoZSB0ZXh0IG9iamVjdCBvciBvbmUgb2YgaXRzIGRl
c2NlbmRhbnRzLiANCi0gICovDQotICBbcHJvcGdldF0gSFJFU1VMVCBjYXJldE9mZnNldA0KLSAg
ICAoDQotICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm9mZnNldA0KLSAgICApOw0KLQ0KLQ0KLSAg
LyoqIEBicmllZiBSZXR1cm5zIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIHNwZWNpZmllZCBwb3Np
dGlvbi4NCi0gICAgICAgIA0KLSAgIFRoZSB2aXJ0dWFsIGNoYXJhY3RlciBhZnRlciB0aGUgbGFz
dCBjaGFyYWN0ZXIgb2YgdGhlIHJlcHJlc2VudGVkDQotICAgIHRleHQsIGkuZS4gdGhlIG9uZSBh
dCBwb3NpdGlvbiBsZW5ndGggaXMgYSBzcGVjaWFsIGNhc2UuIEl0IHJlcHJlc2VudHMgdGhlIA0K
LSAgICBjdXJyZW50IGlucHV0IHBvc2l0aW9uIGFuZCB3aWxsIHRoZXJlZm9yZSB0eXBpY2FsbHkg
YmUgcXVlcmllZCBieSBBVCBtb3JlIA0KLSAgICBvZnRlbiB0aGFuIG90aGVyIHBvc2l0aW9ucy4g
IEJlY2F1c2UgaXQgZG9lcyBub3QgcmVwcmVzZW50IGFuIGV4aXN0aW5nIGNoYXJhY3RlciANCi0g
ICAgaXRzIGJvdW5kaW5nIGJveCBpcyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHByZWNlZGluZyBj
aGFyYWN0ZXJzLiAgSXQgc2hvdWxkIGJlIA0KLSAgICByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhl
IGJvdW5kaW5nIGJveCBvZiBzb21lIGNoYXJhY3RlciB3aGVuIGluc2VydGVkIGF0IHRoZSANCi0g
ICAgZW5kIG9mIHRoZSB0ZXh0LiAgSXRzIGhlaWdodCB0eXBpY2FsbHkgYmVpbmcgdGhlIG1heGlt
YWwgaGVpZ2h0IG9mIGFsbCB0aGUNCi0gICAgY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBvciB0aGUg
aGVpZ2h0IG9mIHRoZSBwcmVjZWRpbmcgY2hhcmFjdGVyLCBpdHMgd2lkdGggYmVpbmcgDQotICAg
IGF0IGxlYXN0IG9uZSBwaXhlbCBzbyB0aGF0IHRoZSBib3VuZGluZyBib3ggaXMgbm90IGRlZ2Vu
ZXJhdGUuDQotDQotICAgTm90ZSB0aGF0IHRoZSBpbmRleCAnbGVuZ3RoJyBpcyBub3QgYWx3YXlz
IHZhbGlkLiAgV2hldGhlciBpdCBpcyBvciBub3QgaXMgDQotICAgIGltcGxlbWVudGF0aW9uIGRl
cGVuZGVudC4gIEl0IHR5cGljYWxseSBpcyB3aGVuIHRleHQgaXMgZWRpdGFibGUgb3Igb3RoZXJ3
aXNlIA0KLSAgICB3aGVuIG9uIHRoZSBzY3JlZW4gdGhlIGNhcmV0IGNhbiBiZSBwbGFjZWQgYmVo
aW5kIHRoZSB0ZXh0LiAgWW91IGNhbiBiZSBzdXJlIA0KLSAgICB0aGF0IHRoZSBpbmRleCBpcyB2
YWxpZCBhZnRlciB5b3UgaGF2ZSByZWNlaXZlZCBhIDo6SUEyX0VWRU5UX1RFWFRfQ0FSRVRfTU9W
RUQNCi0gICAgZXZlbnQgZm9yIHRoaXMgaW5kZXguDQotICAgQHBhcmFtIFtpbl0gb2Zmc2V0DQot
ICAgIEluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHJldHVybiBpdHMgYm91bmRp
bmcgYm94LiBUaGUgdmFsaWQgcmFuZ2UgDQotICAgIGlzIDAuLmxlbmd0aC4gIFJlZmVyIHRvIEBy
ZWYgX3NwZWNpYWxPZmZzZXRzIA0KLSAgICAiU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhl
IElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgDQot
ICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiAlSUFjY2Vzc2libGVUZXh0IG1ldGhvZHMuDQotICAgQHBhcmFtIFtpbl0gY29vcmRUeXBl
DQotICAgIFNwZWNpZmllcyBpZiB0aGUgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBz
Y3JlZW4gb3IgdG8gdGhlIHBhcmVudCB3aW5kb3cuDQotICAgQHBhcmFtIFtvdXRdIHgNCi0gICAg
WCBjb29yZGluYXRlIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIGJveCBv
ZiB0aGUgcmVmZXJlbmNlZCBjaGFyYWN0ZXIuIA0KLSAgIEBwYXJhbSBbb3V0XSB5DQotICAgIFkg
Y29vcmRpbmF0ZSBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyBib3ggb2Yg
dGhlIHJlZmVyZW5jZWQgY2hhcmFjdGVyLiANCi0gICBAcGFyYW0gW291dF0gd2lkdGgNCi0gICAg
V2lkdGggb2YgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgcmVmZXJlbmNlZCBjaGFyYWN0ZXIuIA0K
LSAgIEBwYXJhbSBbb3V0XSBoZWlnaHQNCi0gICAgSGVpZ2h0IG9mIHRoZSBib3VuZGluZyBib3gg
b2YgdGhlIHJlZmVyZW5jZWQgY2hhcmFjdGVyLiANCi0gICBAcmV0dmFsIFNfT0sNCi0gICBAcmV0
dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICovDQotICBbcHJvcGdldF0g
SFJFU1VMVCBjaGFyYWN0ZXJFeHRlbnRzDQotICAgICgNCi0gICAgIFtpbl0gbG9uZyBvZmZzZXQs
DQotICAgICBbaW5dIGVudW0gSUEyQ29vcmRpbmF0ZVR5cGUgY29vcmRUeXBlLA0KLSAgICAgW291
dF0gbG9uZyAqeCwNCi0gICAgIFtvdXRdIGxvbmcgKnksDQotICAgICBbb3V0XSBsb25nICp3aWR0
aCwNCi0gICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqaGVpZ2h0DQotICAgICk7DQotDQotDQotICAv
KiogQGJyaWVmIFJldHVybnMgdGhlIG51bWJlciBvZiBhY3RpdmUgbm9uLWNvbnRpZ3VvdXMgc2Vs
ZWN0aW9ucw0KLSAgIEBwYXJhbSBbb3V0XSBuU2VsZWN0aW9ucw0KLSAgIEByZXR2YWwgU19PSw0K
LSAgKi8NCi0gIFtwcm9wZ2V0XSBIUkVTVUxUIG5TZWxlY3Rpb25zDQotICAgICgNCi0gICAgIFtv
dXQsIHJldHZhbF0gbG9uZyAqblNlbGVjdGlvbnMNCi0gICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYg
UmV0dXJucyB0aGUgdGV4dCBwb3NpdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBzY3JlZW4gcG9zaXRp
b24uDQotICAgIA0KLSAgIEdpdmVuIGEgcG9pbnQgcmV0dXJuIHRoZSB6ZXJvLWJhc2VkIGluZGV4
IG9mIHRoZSBjaGFyYWN0ZXIgdW5kZXIgdGhhdA0KLSAgIHBvaW50LiAgVGhlIHNhbWUgZnVuY3Rp
b25hbGl0eSBjb3VsZCBiZSBhY2hpZXZlZCBieSB1c2luZyB0aGUgYm91bmRpbmcNCi0gICBib3hl
cyBmb3IgZWFjaCBjaGFyYWN0ZXIgYXMgcmV0dXJuZWQgYnkgSUFjY2Vzc2libGVUZXh0OjpjaGFy
YWN0ZXJFeHRlbnRzLg0KLSAgIFRoZSBtZXRob2QgSUFjY2Vzc2libGVUZXh0OjpvZmZzZXRBdFBv
aW50LCBob3dldmVyLCBjYW4gYmUgaW1wbGVtZW50ZWQgDQotICAgbW9yZSBlZmZpY2llbnRseS4N
Ci0gICAgICAgICAgICANCi0gICBAcGFyYW0gW2luXSB4DQotICAgIFRoZSBwb3NpdGlvbidzIHgg
dmFsdWUgZm9yIHdoaWNoIHRvIGxvb2sgdXAgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdGhh
dA0KLSAgICBpcyByZW5kZXJlZCBvbiB0byB0aGUgZGlzcGxheSBhdCB0aGF0IHBvaW50Lg0KLSAg
IEBwYXJhbSBbaW5dIHkNCi0gICAgVGhlIHBvc2l0aW9uJ3MgeSB2YWx1ZSBmb3Igd2hpY2ggdG8g
bG9vayB1cCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciB0aGF0DQotICAgIGlzIHJlbmRlcmVk
IG9uIHRvIHRoZSBkaXNwbGF5IGF0IHRoYXQgcG9pbnQuICAgICAgICAgICAgDQotICAgQHBhcmFt
IFtpbl0gY29vcmRUeXBlDQotICAgIFNjcmVlbiBjb29yZGluYXRlcyBvciB3aW5kb3cgY29vcmRp
bmF0ZXMuDQotICAgQHBhcmFtIFtvdXRdIG9mZnNldA0KLSAgICBJbmRleCBvZiB0aGUgY2hhcmFj
dGVyIHVuZGVyIHRoZSBnaXZlbiBwb2ludCBvciAtMSBpZiB0aGUgcG9pbnQNCi0gICAgaXMgaW52
YWxpZCBvciB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgdW5kZXIgdGhlIHBvaW50Lg0KLSAgIEByZXR2
YWwgU19PSw0KLSAgIEByZXR2YWwgU19GQUxTRSBpZiBub3RoaW5nIHRvIHJldHVybiwgW291dF0g
dmFsdWUgaXMgLTENCi0NCi0gICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNz
ZWQNCi0gICAgKi8NCi0gIFtwcm9wZ2V0XSBIUkVTVUxUIG9mZnNldEF0UG9pbnQNCi0gICAgKA0K
LSAgICAgW2luXSBsb25nIHgsDQotICAgICBbaW5dIGxvbmcgeSwNCi0gICAgIFtpbl0gZW51bSBJ
QTJDb29yZGluYXRlVHlwZSBjb29yZFR5cGUsDQotICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm9m
ZnNldA0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgb2Zm
c2V0cyBvZiBOdGggYWN0aXZlIHRleHQgc2VsZWN0aW9uDQotDQotICAgUmV0dXJucyB0aGUgMC1i
YXNlZCBzdGFydGluZyBhbmQgZW5kaW5nIG9mZnNldHMgb2YgdGhlIE50aCBzZWxlY3Rpb24uICBJ
ZiB0aGUNCi0gICB0ZXh0IGlzIGltcGxlbWVudGVkIGFzIGEgdHJlZSBvZiB0ZXh0IG9iamVjdHMg
d2l0aCBlbWJlZCBjaGFyYWN0ZXJzIGluIGhpZ2hlcg0KLSAgIGxldmVscyByZXByZXNlbnRpbmcg
c3Vic3RyaW5ncyBvZiBjaGlsZCB0ZXh0IG9iamVjdHMsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcu
DQotICAgSWYgdGhlIHN0YXJ0aW5nIHNlbGVjdGlvbiBvZmZzZXQgaXMgaW4gb25lIG9mIHRoZSBj
aGlsZCB0ZXh0IG9iamVjdHMsIHRoZW4gdGhlDQotICAgc3RhcnRpbmcgb2Zmc2V0IGluIHRoZSBo
aWdoZXIgbGV2ZWwgdGV4dCBvYmplY3Qgd291bGQgYmUgYXQgdGhlIGVtYmVkIGNoYXJhY3Rlcg0K
LSAgIHJlcHJlc2VudGluZyB0aGUgY2hpbGQgdGV4dCBvYmplY3QgdGhhdCBjb250YWlucyB0aGUg
c3RhcnRpbmcgc2VsZWN0aW9uIG9mZnNldC4NCi0gICBJZiB0aGUgZW5kaW5nIHNlbGVjdGlvbiBv
ZmZzZXQgaXMgaW4gb25lIG9mIHRoZSBjaGlsZCB0ZXh0IG9iamVjdHMsIHRoZW4gdGhlDQotICAg
ZW5kaW5nIG9mZnNldCBpbiB0aGUgaGlnaGVyIGxldmVsIHRleHQgb2JqZWN0IHdvdWxkIGJlIGp1
c3QgYWZ0ZXIgdGhlIGVtYmVkDQotICAgY2hhcmFjdGVyIHJlcHJlc2VudGluZyB0aGUgY2hpbGQg
dGV4dCBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgZW5kaW5nIHNlbGVjdGlvbg0KLSAgIG9mZnNl
dC4NCi0NCi0gICBGb3IgZXhhbXBsZSwgaWYgdGhlIHN0cmluZyAib25lIHR3byB0aHJlZSIgaXMg
aW1wbGVtZW50ZWQgYXMgYSB0d28gdGV4dCBvYmplY3RzLA0KLSAgIHdpdGggYSB0b3AgbGV2ZWwg
dGV4dCBvYmplY3QgY29udGFpbmluZyBhbiBlbWJlZCBjaGFyYWN0ZXIgIm9uZSA/IHRocmVlIiBh
bmQgYQ0KLSAgIGNoaWxkIHRleHQgb2JqZWN0IGNvbnRhaW5pbmcgInR3byIgYW5kIGlmIHRoZSBz
ZWxlY3Rpb24gaXMgdGhlIHN0cmluZyAidHdvIiB0aGVuOg0KLSAgIDx1bD4NCi0gICA8bGk+dGhl
IHN0YXJ0T2Zmc2V0IGZvciB0aGUgIm9uZSA/IHRocmVlIiBvYmplY3Qgd291bGQgYmUgNCwgbWF0
Y2hpbmcgdGhlIGVtYmVkIGNoYXJhY3RlciBhbmQgdGhlIGVuZE9mZnNldCB3b3VsZCBiZSA1Ljwv
bGk+DQotICAgPGxpPnRoZSBzdGFydE9mZnNldCBmb3IgdGhlICJ0d28iIG9iamVjdCB3b3VsZCBi
ZSAwLCBhbmQgdGhlIGVuZE9mZnNldCB3b3VsZCBiZSAzPC9saT4NCi0gICA8L3VsPg0KLSAgIFNl
bGVjdGlvbiBvZmZzZXRzIGFyZSB0aGF0IG9mIHRoZSBjaGFyYWN0ZXIgbG9naWNhbGx5IGZvbGxv
d2luZyBpdCwgZS5nLg0KLSAgIHRvIHRoZSByaWdodCBvZiBpdCBpbiBhIGxlZnQgdG8gcmlnaHQg
bGFuZ3VhZ2Ugb3IgdG8gdGhlIGxlZnQgb2YgaXQgaW4gYSByaWdodCB0byBsZWZ0IGxhbmd1YWdl
Lg0KLSAgIEBwYXJhbSBbaW5dIHNlbGVjdGlvbkluZGV4DQotICAgIEluZGV4IG9mIHNlbGVjdGlv
biAoMCBiYXNlZCkuDQotICAgQHBhcmFtIFtvdXRdIHN0YXJ0T2Zmc2V0DQotICAgIDAgYmFzZWQg
b2Zmc2V0IG9mIGZpcnN0IHNlbGVjdGVkIGNoYXJhY3Rlcg0KLSAgIEBwYXJhbSBbb3V0XSBlbmRP
ZmZzZXQNCi0gICAgMCBiYXNlZCBvZmZzZXQgb2Ygb25lIHBhc3QgdGhlIGxhc3Qgc2VsZWN0ZWQg
Y2hhcmFjdGVyLg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlm
IGJhZCBbaW5dIHBhc3NlZA0KLSAgKi8NCi0gIFtwcm9wZ2V0XSBIUkVTVUxUIHNlbGVjdGlvbg0K
LSAgICAoDQotICAgICBbaW5dIGxvbmcgc2VsZWN0aW9uSW5kZXgsDQotICAgICBbb3V0XSBsb25n
ICpzdGFydE9mZnNldCwNCi0gICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqZW5kT2Zmc2V0DQotICAg
ICk7DQotDQotICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHN1YnN0cmluZyBiZXR3ZWVuIHRoZSB0
d28gZ2l2ZW4gaW5kaWNlcy4NCi0NCi0gICBUaGUgc3Vic3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBj
aGFyYWN0ZXIgYXQgc3RhcnRPZmZzZXQgKGluY2x1c2l2ZSkgYW5kIHVwIHRvIA0KLSAgICB0aGUg
Y2hhcmFjdGVyIGF0IGVuZE9mZnNldCAoZXhjbHVzaXZlKSwgaWYgc3RhcnRPZmZzZXQgaXMgbGVz
cyBvciBlcXVhbCANCi0gICAgZW5kT2Zmc2V0LiAgSWYgZW5kT2Zmc2V0IGlzIGxvd2VyIHRoYW4g
c3RhcnRPZmZzZXQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgDQotICAgIGFzIGEgY2FsbCB3aXRo
IHRoZSB0d28gYXJndW1lbnRzIGJlaW5nIGV4Y2hhbmdlZC4NCi0NCi0gICBUaGUgd2hvbGUgdGV4
dCBjYW4gYmUgcmVxdWVzdGVkIGJ5IHBhc3NpbmcgdGhlIGluZGljZXMgemVybyBhbmQgDQotICAg
IElBY2Nlc3NpYmxlVGV4dDo6bkNoYXJhY3RlcnMuIElmIGJvdGggaW5kaWNlcyBoYXZlIHRoZSBz
YW1lIHZhbHVlLCBhbiBlbXB0eSANCi0gICAgc3RyaW5nIGlzIHJldHVybmVkLg0KLSAgIEBwYXJh
bSBbaW5dIHN0YXJ0T2Zmc2V0DQotICAgIEluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8g
aW5jbHVkZSBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLiBUaGUgdmFsaWQgcmFuZ2UgDQotICAgIGlz
IDAuLmxlbmd0aC4NCi0gICBAcGFyYW0gW2luXSBlbmRPZmZzZXQNCi0gICAgSW5kZXggb2YgdGhl
IGxhc3QgY2hhcmFjdGVyIHRvIGV4Y2x1ZGUgaW4gdGhlIHJldHVybmVkIHN0cmluZy4gVGhlIHZh
bGlkIHJhbmdlIA0KLSAgICBpcyAwLi5sZW5ndGguDQotICAgQHBhcmFtIFtvdXRdIHRleHQNCi0g
ICAgUmV0dXJucyB0aGUgc3Vic3RyaW5nIHN0YXJ0aW5nIHdpdGggdGhlIGNoYXJhY3RlciBhdCBz
dGFydE9mZnNldCAoaW5jbHVzaXZlKSANCi0gICAgYW5kIHVwIHRvIHRoZSBjaGFyYWN0ZXIgYXQg
ZW5kT2Zmc2V0IChleGNsdXNpdmUpLCBpZiBzdGFydE9mZnNldCBpcyBsZXNzIHRoYW4gDQotICAg
IG9yIGVxdWFsIHRvIGVuZE9mZnNldC4NCi0gICBAcmV0dmFsIFNfT0sNCi0gICBAcmV0dmFsIEVf
SU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICBAbm90ZQ0KLSAgIEBsaSBUaGUgcmV0
dXJuZWQgc3RyaW5nIG1heSBiZSBsb25nZXIgdGhhbiBlbmRPZmZzZXQtc3RhcnRPZmZzZXQgYnl0
ZXMgaWYgdGV4dCANCi0gICAgY29udGFpbnMgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLg0KLSAgIEBs
aSBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNpYWwgT2Zmc2V0cyBm
b3IgdXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0
IE1ldGhvZHMiIA0KLSAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRo
YXQgY2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxlVGV4dCBtZXRob2RzLg0KLSAgKi8NCi0gIFtw
cm9wZ2V0XSBIUkVTVUxUIHRleHQNCi0gICAgKA0KLSAgICAgW2luXSBsb25nIHN0YXJ0T2Zmc2V0
LA0KLSAgICAgW2luXSBsb25nIGVuZE9mZnNldCwNCi0gICAgIFtvdXQsIHJldHZhbF0gQlNUUiAq
dGV4dA0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmllZiBSZXR1cm5zIGEgdGV4dCBwb3J0aW9uIGJl
Zm9yZSB0aGUgZ2l2ZW4gcG9zaXRpb24uDQotICAgIA0KLSAgIFJldHVybnMgdGhlIHN1YnN0cmlu
ZyBvZiB0aGUgc3BlY2lmaWVkIHRleHQgdHlwZSB0aGF0IGlzIGxvY2F0ZWQgYmVmb3JlIHRoZSAN
Ci0gICAgZ2l2ZW4gY2hhcmFjdGVyIGFuZCBkb2VzIG5vdCBpbmNsdWRlIGl0LiBUaGUgcmVzdWx0
IG9mIHRoaXMgbWV0aG9kIHNob3VsZCBiZSANCi0gICAgc2FtZSBhcyBhIHJlc3VsdCBmb3IgSUFj
Y2Vzc2libGVUZXh0Ojp0ZXh0QXRPZmZzZXQgd2l0aCBhIHN1aXRhYmx5IGRlY3JlYXNlZCANCi0g
ICAgaW5kZXggdmFsdWUuDQotDQotICAgRm9yIGV4YW1wbGUsIGlmIHRleHQgdHlwZSBpcyA6OklB
Ml9URVhUX0JPVU5EQVJZX1dPUkQsIHRoZW4gdGhlIGNvbXBsZXRlIA0KLSAgICB3b3JkIHRoYXQg
aXMgY2xvc2VzdCB0byBhbmQgbG9jYXRlZCBiZWZvcmUgb2Zmc2V0IGlzIHJldHVybmVkLg0KLQ0K
LSAgIElmIHRoZSBpbmRleCBpcyB2YWxpZCwgYnV0IG5vIHRleHQgaXMgZm91bmQsIFNfRkFMU0Ug
aXMgcmV0dXJuZWQgYWxvbmcgd2l0aCBvdXQNCi0gICAgdmFsdWVzIG9mIDAsIDAsIGFuZCBhIE5V
TEwgcG9pbnRlci4gIFRoaXMgd291bGQgaGFwcGVuIGZvciBib3VuZGFyeSB0eXBlcyBvdGhlcg0K
LSAgICB0aGFuIGNoYXJhY3RlciB3aGVuIHRoZSB0ZXh0IGNvbnNpc3RzIGVudGlyZWx5IG9mIHdo
aXRlc3BhY2UuDQotDQotICAgQHBhcmFtIFtpbl0gb2Zmc2V0DQotICAgIEluZGV4IG9mIHRoZSBj
aGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgdGV4dCBwYXJ0IGJlZm9yZSBpdC4gIFRo
ZSBpbmRleCANCi0gICAgY2hhcmFjdGVyIHdpbGwgbm90IGJlIHBhcnQgb2YgdGhlIHJldHVybmVk
IHN0cmluZy4gVGhlIHZhbGlkIHJhbmdlIGlzIDAuLmxlbmd0aC4NCi0gICAgUmVmZXIgdG8gQHJl
ZiBfc3BlY2lhbE9mZnNldHMgDQotICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUg
SUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0g
ICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2Vk
IGluICVJQWNjZXNzaWJsZVRleHQgbWV0aG9kcy4NCi0gICBAcGFyYW0gW2luXSBib3VuZGFyeVR5
cGUNCi0gICAgVGhlIHR5cGUgb2YgdGhlIHRleHQgcG9ydGlvbiB0byByZXR1cm4uICBTZWUgOjpJ
QTJUZXh0Qm91bmRhcnlUeXBlIGZvciB0aGUgDQotICAgIGNvbXBsZXRlIGxpc3QuDQotICAgQHBh
cmFtIFtvdXRdIHN0YXJ0T2Zmc2V0DQotICAgIDAgYmFzZWQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJh
Y3Rlci4NCi0gICBAcGFyYW0gW291dF0gZW5kT2Zmc2V0DQotICAgIDAgYmFzZWQgb2Zmc2V0IG9m
IG9uZSBwYXN0IHRoZSBsYXN0IGNoYXJhY3Rlci4NCi0gICBAcGFyYW0gW291dF0gdGV4dA0KLSAg
ICBSZXR1cm5zIHRoZSByZXF1ZXN0ZWQgdGV4dCBwb3J0aW9uLiAgVGhpcyBwb3J0aW9uIG1heSBi
ZSBlbXB0eSBvciBpbnZhbGlkIHdoZW4gDQotICAgIG5vIGFwcHJvcHJpYXRlIHRleHQgcG9ydGlv
biBpcyBmb3VuZCBvciB0ZXh0IHR5cGUgaXMgaW52YWxpZC4NCi0gICBAcmV0dmFsIFNfT0sNCi0g
ICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlIHJlcXVlc3RlZCBib3VuZGFyeSB0eXBlIGlzIG5vdCBp
bXBsZW1lbnRlZCwgc3VjaCBhcyANCi0gICAgOjpJQTJfVEVYVF9CT1VOREFSWV9TRU5URU5DRSwg
b3IgaWYgdGhlcmUgaXMgbm90aGluZyB0byByZXR1cm47IA0KLSAgICBbb3V0XSB2YWx1ZXMgYXJl
IDBzIGFuZCBOVUxMIHJlc3BlY3RpdmVseSANCi0gICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBi
YWQgW2luXSBwYXNzZWQNCi0gICovDQotICBbcHJvcGdldF0gSFJFU1VMVCB0ZXh0QmVmb3JlT2Zm
c2V0DQotICAgICgNCi0gICAgIFtpbl0gbG9uZyBvZmZzZXQsDQotICAgICBbaW5dIGVudW0gSUEy
VGV4dEJvdW5kYXJ5VHlwZSBib3VuZGFyeVR5cGUsDQotICAgICBbb3V0XSBsb25nICpzdGFydE9m
ZnNldCwNCi0gICAgIFtvdXRdIGxvbmcgKmVuZE9mZnNldCwNCi0gICAgIFtvdXQsIHJldHZhbF0g
QlNUUiAqdGV4dA0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmllZiBSZXR1cm5zIGEgdGV4dCBwb3J0
aW9uIGFmdGVyIHRoZSBnaXZlbiBwb3NpdGlvbi4NCi0gICAgDQotICAgUmV0dXJucyB0aGUgc3Vi
c3RyaW5nIG9mIHRoZSBzcGVjaWZpZWQgdGV4dCB0eXBlIHRoYXQgaXMgbG9jYXRlZCBhZnRlciB0
aGUgDQotICAgIGdpdmVuIGNoYXJhY3RlciBhbmQgZG9lcyBub3QgaW5jbHVkZSBpdC4gVGhlIHJl
c3VsdCBvZiB0aGlzIG1ldGhvZCBzaG91bGQgYmUgDQotICAgIHNhbWUgYXMgYSByZXN1bHQgZm9y
IElBY2Nlc3NpYmxlVGV4dDo6dGV4dEF0T2Zmc2V0IHdpdGggYSBzdWl0YWJseSBpbmNyZWFzZWQg
DQotICAgIGluZGV4IHZhbHVlLg0KLQ0KLSAgIEZvciBleGFtcGxlLCBpZiB0ZXh0IHR5cGUgaXMg
OjpJQTJfVEVYVF9CT1VOREFSWV9XT1JELCB0aGVuIHRoZSBjb21wbGV0ZSANCi0gICAgd29yZCB0
aGF0IGlzIGNsb3Nlc3QgdG8gYW5kIGxvY2F0ZWQgYWZ0ZXIgb2Zmc2V0IGlzIHJldHVybmVkLg0K
LQ0KLSAgIElmIHRoZSBpbmRleCBpcyB2YWxpZCwgYnV0IG5vIHRleHQgaXMgZm91bmQsIFNfRkFM
U0UgaXMgcmV0dXJuZWQgYWxvbmcgd2l0aCBvdXQNCi0gICAgdmFsdWVzIG9mIDAsIDAsIGFuZCBh
IE5VTEwgcG9pbnRlci4gIFRoaXMgd291bGQgaGFwcGVuIGZvciBib3VuZGFyeSB0eXBlcyBvdGhl
cg0KLSAgICB0aGFuIGNoYXJhY3RlciB3aGVuIHRoZSB0ZXh0IGNvbnNpc3RzIGVudGlyZWx5IG9m
IHdoaXRlc3BhY2UuDQotDQotICAgQHBhcmFtIFtpbl0gb2Zmc2V0DQotICAgIEluZGV4IG9mIHRo
ZSBjaGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgdGV4dCBwYXJ0IGFmdGVyIGl0LiAg
VGhlIGluZGV4IA0KLSAgICBjaGFyYWN0ZXIgd2lsbCBub3QgYmUgcGFydCBvZiB0aGUgcmV0dXJu
ZWQgc3RyaW5nLiBUaGUgdmFsaWQgcmFuZ2UgaXMgMC4ubGVuZ3RoLg0KLSAgICBSZWZlciB0byBA
cmVmIF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRo
ZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIA0K
LSAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVz
ZWQgaW4gJUlBY2Nlc3NpYmxlVGV4dCBtZXRob2RzLg0KLSAgIEBwYXJhbSBbaW5dIGJvdW5kYXJ5
VHlwZQ0KLSAgICBUaGUgdHlwZSBvZiB0aGUgdGV4dCBwb3J0aW9uIHRvIHJldHVybi4gIFNlZSA6
OklBMlRleHRCb3VuZGFyeVR5cGUgZm9yIHRoZSBjb21wbGV0ZSANCi0gICAgbGlzdC4NCi0gICBA
cGFyYW0gW291dF0gc3RhcnRPZmZzZXQNCi0gICAgMCBiYXNlZCBvZmZzZXQgb2YgZmlyc3QgY2hh
cmFjdGVyLg0KLSAgIEBwYXJhbSBbb3V0XSBlbmRPZmZzZXQNCi0gICAgMCBiYXNlZCBvZmZzZXQg
b2Ygb25lIHBhc3QgdGhlIGxhc3QgY2hhcmFjdGVyLg0KLSAgIEBwYXJhbSBbb3V0XSB0ZXh0DQot
ICAgIFJldHVybnMgdGhlIHJlcXVlc3RlZCB0ZXh0IHBvcnRpb24uICBUaGlzIHBvcnRpb24gbWF5
IGJlIGVtcHR5IG9yIGludmFsaWQgd2hlbiANCi0gICAgbm8gYXBwcm9wcmlhdGUgdGV4dCBwb3J0
aW9uIGlzIGZvdW5kIG9yIHRleHQgdHlwZSBpcyBpbnZhbGlkLg0KLSAgIEByZXR2YWwgU19PSw0K
LSAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGUgcmVxdWVzdGVkIGJvdW5kYXJ5IHR5cGUgaXMgbm90
IGltcGxlbWVudGVkLCBzdWNoIGFzIA0KLSAgICA6OklBMl9URVhUX0JPVU5EQVJZX1NFTlRFTkNF
LCBvciBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybjsgDQotICAgIFtvdXRdIHZhbHVlcyBh
cmUgMHMgYW5kIE5VTEwgcmVzcGVjdGl2ZWx5IA0KLSAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlm
IGJhZCBbaW5dIHBhc3NlZA0KLSAgKi8NCi0gIFtwcm9wZ2V0XSBIUkVTVUxUIHRleHRBZnRlck9m
ZnNldA0KLSAgICAoDQotICAgICBbaW5dIGxvbmcgb2Zmc2V0LA0KLSAgICAgW2luXSBlbnVtIElB
MlRleHRCb3VuZGFyeVR5cGUgYm91bmRhcnlUeXBlLA0KLSAgICAgW291dF0gbG9uZyAqc3RhcnRP
ZmZzZXQsDQotICAgICBbb3V0XSBsb25nICplbmRPZmZzZXQsDQotICAgICBbb3V0LCByZXR2YWxd
IEJTVFIgKnRleHQNCi0gICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYgUmV0dXJucyBhIHRleHQgcG9y
dGlvbiB0aGF0IHNwYW5zIHRoZSBnaXZlbiBwb3NpdGlvbi4NCi0NCi0gICBSZXR1cm5zIHRoZSBz
dWJzdHJpbmcgZGVmaW5lZCBieSB0aGUgc3BlY2lmaWVkIGJvdW5kYXJ5IHR5cGUgYXQgdGhlIHNw
ZWNpZmllZA0KLSAgICBvZmZzZXQuICBSZWZlciB0byBJQTJUZXh0Qm91bmRhcnlUeXBlIGZvciBt
b3JlIGRldGFpbHMuDQotDQotICAgRm9yIHRoZSB3b3JkIGJvdW5kYXJ5IHR5cGUgdGhlIHJldHVy
bmVkIHN0cmluZyB3aWxsIGNvbnRhaW4gdGhlIHdvcmQgYXQgdGhlDQotICAgIG9mZnNldCBpZiB0
aGUgb2Zmc2V0IGlzIGluc2lkZSBhIHdvcmQgYW5kIHdpbGwgY29udGFpbiB0aGUgd29yZCBiZWZv
cmUgdGhlDQotICAgIG9mZnNldCBpZiB0aGUgb2Zmc2V0IGlzIG5vdCBpbnNpZGUgYSB3b3JkLiAg
QWxsIG9mZnNldHMgZnJvbSB0aGUgZmlyc3QgdG8gdGhlDQotICAgIGxhc3QgY2hhcmFjdGVycyBv
ZiBhIHdvcmQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoZSB3b3JkLiAgQm91bmRhcnkgdHlwZXMg
b2YNCi0gICAgc2VudGVuY2UgYW5kIHBhcmFncmFwaCBzaG91bGQgZXhoaWJpdCBzaW1pbGFyIGJl
aGF2aW9yLg0KLQ0KLSAgIElmIHRoZSBpbmRleCBpcyB2YWxpZCwgYnV0IG5vIHRleHQgaXMgZm91
bmQsIFNfRkFMU0UgaXMgcmV0dXJuZWQgYWxvbmcgd2l0aCBvdXQNCi0gICAgdmFsdWVzIG9mIDAs
IDAsIGFuZCBhIE5VTEwgcG9pbnRlci4gIFRoaXMgd291bGQgaGFwcGVuIGZvciBib3VuZGFyeSB0
eXBlcyBvdGhlcg0KLSAgICB0aGFuIGNoYXJhY3RlciB3aGVuIHRoZSB0ZXh0IGNvbnNpc3RzIGVu
dGlyZWx5IG9mIHdoaXRlc3BhY2UuDQotDQotICAgQHBhcmFtIFtpbl0gb2Zmc2V0DQotICAgIElu
ZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgdGV4dCBwYXJ0IGl0
IGJlbG9uZ3MgdG8uICBUaGUgdmFsaWQNCi0gICAgcmFuZ2UgaXMgMC4ubGVuZ3RoLg0KLSAgICBS
ZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3Ig
dXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1l
dGhvZHMiIA0KLSAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQg
Y2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxlVGV4dCBtZXRob2RzLg0KLSAgIEBwYXJhbSBbaW5d
IGJvdW5kYXJ5VHlwZQ0KLSAgICBUaGUgdHlwZSBvZiB0aGUgdGV4dCBwb3J0aW9uIHRvIHJldHVy
bi4gIFNlZSA6OklBMlRleHRCb3VuZGFyeVR5cGUgZm9yIHRoZSBjb21wbGV0ZSANCi0gICAgbGlz
dC4NCi0gICBAcGFyYW0gW291dF0gc3RhcnRPZmZzZXQNCi0gICAgMCBiYXNlZCBvZmZzZXQgb2Yg
Zmlyc3QgY2hhcmFjdGVyLg0KLSAgIEBwYXJhbSBbb3V0XSBlbmRPZmZzZXQNCi0gICAgMCBiYXNl
ZCBvZmZzZXQgb2Ygb25lIHBhc3QgdGhlIGxhc3QgY2hhcmFjdGVyLg0KLSAgIEBwYXJhbSBbb3V0
XSB0ZXh0DQotICAgIFJldHVybnMgdGhlIHJlcXVlc3RlZCB0ZXh0IHBvcnRpb24uICBUaGlzIHBv
cnRpb24gbWF5IGJlIGVtcHR5IG9yIGludmFsaWQgd2hlbiANCi0gICAgbm8gYXBwcm9wcmlhdGUg
dGV4dCBwb3J0aW9uIGlzIGZvdW5kIG9yIHRleHQgdHlwZSBpcyBpbnZhbGlkLg0KLSAgIEByZXR2
YWwgU19PSw0KLSAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGUgcmVxdWVzdGVkIGJvdW5kYXJ5IHR5
cGUgaXMgbm90IGltcGxlbWVudGVkLCBzdWNoIGFzIA0KLSAgICA6OklBMl9URVhUX0JPVU5EQVJZ
X1NFTlRFTkNFLCBvciBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybjsgDQotICAgIFtvdXRd
IHZhbHVlcyBhcmUgMHMgYW5kIE5VTEwgcmVzcGVjdGl2ZWx5IA0KLSAgIEByZXR2YWwgRV9JTlZB
TElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZA0KLSAgKi8NCi0gIFtwcm9wZ2V0XSBIUkVTVUxUIHRl
eHRBdE9mZnNldA0KLSAgICAoDQotICAgICBbaW5dIGxvbmcgb2Zmc2V0LA0KLSAgICAgW2luXSBl
bnVtIElBMlRleHRCb3VuZGFyeVR5cGUgYm91bmRhcnlUeXBlLA0KLSAgICAgW291dF0gbG9uZyAq
c3RhcnRPZmZzZXQsDQotICAgICBbb3V0XSBsb25nICplbmRPZmZzZXQsDQotICAgICBbb3V0LCBy
ZXR2YWxdIEJTVFIgKnRleHQNCi0gICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYgVW5zZWxlY3RzIGEg
cmFuZ2Ugb2YgdGV4dC4NCi0gICBAcGFyYW0gW2luXSBzZWxlY3Rpb25JbmRleA0KLSAgICBJbmRl
eCBvZiBzZWxlY3Rpb24gdG8gcmVtb3ZlICgwIGJhc2VkKS4NCi0gICBAcmV0dmFsIFNfT0sNCi0g
ICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICovDQotICBIUkVT
VUxUIHJlbW92ZVNlbGVjdGlvbg0KLSAgICAoDQotICAgICBbaW5dIGxvbmcgc2VsZWN0aW9uSW5k
ZXgNCi0gICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYgU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGNh
cmV0Lg0KLQ0KLSAgIFRoZSBjYXJldCBwb3NpdGlvbi9vZmZzZXQgaXMgdGhhdCBvZiB0aGUgY2hh
cmFjdGVyIGxvZ2ljYWxseSBmb2xsb3dpbmcgaXQsDQotICAgZS5nLiB0byB0aGUgcmlnaHQgb2Yg
aXQgaW4gYSBsZWZ0IHRvIHJpZ2h0IGxhbmd1YWdlLg0KLQ0KLSAgIFNldHRpbmcgdGhlIGNhcmV0
IHBvc2l0aW9uIG1heSBvciBtYXkgbm90IGFsdGVyIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4gIEEg
DQotICAgIGNoYW5nZSBvZiB0aGUgc2VsZWN0aW9uIGlzIG5vdGlmaWVkIHRvIHRoZSBhY2Nlc3Np
YmlsaXR5IGV2ZW50IGxpc3RlbmVycyB3aXRoIA0KLSAgICBhbiA6OklBMl9FVkVOVF9URVhUX1NF
TEVDVElPTl9DSEFOR0VEIGV2ZW50Lg0KLQ0KLSAgIFdoZW4gdGhlIG5ldyBjYXJldCBwb3NpdGlv
biBkaWZmZXJzIGZyb20gdGhlIG9sZCBvbmUgKHdoaWNoLCBvZiBjb3Vyc2UsIGlzIHRoZSANCi0g
ICAgc3RhbmRhcmQgY2FzZSkgdGhpcyBpcyBub3RpZmllZCB0byB0aGUgYWNjZXNzaWJpbGl0eSBl
dmVudCBsaXN0ZW5lcnMgd2l0aCBhbg0KLSAgICA6OklBMl9FVkVOVF9URVhUX0NBUkVUX01PVkVE
IGV2ZW50Lg0KLSAgIEBwYXJhbSBbaW5dIG9mZnNldA0KLSAgICBUaGUgbmV3IGluZGV4IG9mIHRo
ZSBjYXJldC4gIFRoaXMgY2FyZXQgaXMgYWN0dWFsbHkgcGxhY2VkIHRvIHRoZSBsZWZ0IHNpZGUg
b2YgDQotICAgIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGF0IGluZGV4LiAgQW4gaW5kZXggb2YgMCBw
bGFjZXMgdGhlIGNhcmV0IHNvIHRoYXQgdGhlIG5leHQgDQotICAgIGluc2VydGlvbiBnb2VzIGJl
Zm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgQW4gaW5kZXggb2YgSUFjY2Vzc2libGVUZXh0Ojpu
Q2hhcmFjdGVycyANCi0gICAgbGVhZHMgdG8gaW5zZXJ0aW9uIGFmdGVyIHRoZSBsYXN0IGNoYXJh
Y3Rlci4gIFJlZmVyIHRvIEByZWYgX3NwZWNpYWxPZmZzZXRzIA0KLSAgICAiU3BlY2lhbCBPZmZz
ZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJs
ZVRleHQgTWV0aG9kcyIgDQotICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNl
dHMgdGhhdCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVUZXh0IG1ldGhvZHMuDQotICAgQHJl
dHZhbCBTX09LDQotICAgQHJldHZhbCBFX0ZBSUwgaWYgdGhlIGNhcmV0IGNhbm5vdCBiZSBzZXQN
Ci0gICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICovDQotICBI
UkVTVUxUIHNldENhcmV0T2Zmc2V0DQotICAgICgNCi0gICAgIFtpbl0gbG9uZyBvZmZzZXQNCi0g
ICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYgQ2hhbmdlcyB0aGUgYm91bmRzIG9mIGFuIGV4aXN0aW5n
IHNlbGVjdGlvbi4NCi0gICBAcGFyYW0gW2luXSBzZWxlY3Rpb25JbmRleA0KLSAgICBJbmRleCBv
ZiBzZWxlY3Rpb24gdG8gY2hhbmdlICgwIGJhc2VkKQ0KLSAgIEBwYXJhbSBbaW5dIHN0YXJ0T2Zm
c2V0DQotICAgIE5ldyBzdGFydGluZyBvZmZzZXQgKDAgYmFzZWQpDQotICAgQHBhcmFtIFtpbl0g
ZW5kT2Zmc2V0DQotICAgIE5ldyBlbmRpbmcgb2Zmc2V0ICgwIGJhc2VkKSAtIHRoZSBvZmZzZXQg
b2YgdGhlIGNoYXJhY3RlciBqdXN0IHBhc3QgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWxl
Y3Rpb24uDQotICAgQHJldHZhbCBTX09LDQotICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFk
IFtpbl0gcGFzc2VkDQotICAgQG5vdGUgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgDQot
ICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJ
QWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiANCi0gICAgZm9yIGluZm9ybWF0aW9uIGFi
b3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZVRleHQg
bWV0aG9kcy4NCi0gICovDQotICBIUkVTVUxUIHNldFNlbGVjdGlvbg0KLSAgICAoDQotICAgICBb
aW5dIGxvbmcgc2VsZWN0aW9uSW5kZXgsDQotICAgICBbaW5dIGxvbmcgc3RhcnRPZmZzZXQsDQot
ICAgICBbaW5dIGxvbmcgZW5kT2Zmc2V0DQotICAgICk7DQotDQotICAvKiogQGJyaWVmIFJldHVy
bnMgdG90YWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMuDQotDQotICAgTm90ZSB0aGF0IHRoaXMgbWF5
IGJlIGRpZmZlcmVudCB0aGFuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8g
c3RvcmUgdGhlIA0KLSAgICB0ZXh0LCBpZiB0aGUgdGV4dCBjb250YWlucyBtdWx0aS1ieXRlIGNo
YXJhY3RlcnMuDQotICAgQHBhcmFtIFtvdXRdIG5DaGFyYWN0ZXJzDQotICAgQHJldHZhbCBTX09L
DQotICAqLw0KLSAgW3Byb3BnZXRdIEhSRVNVTFQgbkNoYXJhY3RlcnMNCi0gICAgKA0KLSAgICAg
W291dCwgcmV0dmFsXSBsb25nICpuQ2hhcmFjdGVycw0KLSAgICApOw0KLQ0KLSAgLyoqIEBicmll
ZiBNYWtlcyBhIHNwZWNpZmljIHBhcnQgb2Ygc3RyaW5nIHZpc2libGUgb24gc2NyZWVuLg0KLSAg
IEBwYXJhbSBbaW5dIHN0YXJ0SW5kZXgNCi0gICAgMCBiYXNlZCBjaGFyYWN0ZXIgb2Zmc2V0Lg0K
LSAgIEBwYXJhbSBbaW5dIGVuZEluZGV4DQotICAgIDAgYmFzZWQgY2hhcmFjdGVyIG9mZnNldCAt
IHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBqdXN0IHBhc3QgdGhlIGxhc3QgY2hhcmFjdGVy
IG9mIHRoZSBzdHJpbmcuDQotICAgQHBhcmFtIFtpbl0gc2Nyb2xsVHlwZQ0KLSAgICBEZWZpbmVz
IHdoZXJlIHRoZSBvYmplY3Qgc2hvdWxkIGJlIHBsYWNlZCBvbiB0aGUgc2NyZWVuLg0KLSAgIEBy
ZXR2YWwgU19PSw0KLSAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZA0K
LSAgIEBub3RlIFJlZmVyIHRvIEByZWYgX3NwZWNpYWxPZmZzZXRzIA0KLSAgICAiU3BlY2lhbCBP
ZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0
YWJsZVRleHQgTWV0aG9kcyIgDQotICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9m
ZnNldHMgdGhhdCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVUZXh0IG1ldGhvZHMuDQotICAq
Lw0KLSAgSFJFU1VMVCBzY3JvbGxTdWJzdHJpbmdUbw0KLSAgICAoDQotICAgICBbaW5dIGxvbmcg
c3RhcnRJbmRleCwNCi0gICAgIFtpbl0gbG9uZyBlbmRJbmRleCwNCi0gICAgIFtpbl0gZW51bSBJ
QTJTY3JvbGxUeXBlIHNjcm9sbFR5cGUNCi0gICAgKTsNCi0NCi0gIC8qKiBAYnJpZWYgTW92ZXMg
dGhlIHRvcCBsZWZ0IG9mIGEgc3Vic3RyaW5nIHRvIGEgc3BlY2lmaWVkIGxvY2F0aW9uLg0KLQ0K
LSAgIEBwYXJhbSBbaW5dIHN0YXJ0SW5kZXgNCi0gICAgMCBiYXNlZCBjaGFyYWN0ZXIgb2Zmc2V0
Lg0KLSAgIEBwYXJhbSBbaW5dIGVuZEluZGV4DQotICAgIDAgYmFzZWQgY2hhcmFjdGVyIG9mZnNl
dCAtIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBqdXN0IHBhc3QgdGhlIGxhc3QgY2hhcmFj
dGVyIG9mIHRoZSBzdHJpbmcuDQotICAgQHBhcmFtIFtpbl0gY29vcmRpbmF0ZVR5cGUNCi0gICAg
U3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgc2Ny
ZWVuIG9yIHRoZSBwYXJlbnQgb2JqZWN0Lg0KLSAgIEBwYXJhbSBbaW5dIHgNCi0gICAgRGVmaW5l
cyB0aGUgeCBjb29yZGluYXRlLg0KLSAgIEBwYXJhbSBbaW5dIHkNCi0gICAgRGVmaW5lcyB0aGUg
eSBjb29yZGluYXRlLg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2YWwgU19GQUxTRSBpZiB0
aGUgb2JqZWN0IGlzIGFscmVhZHkgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4NCi0gICBAcmV0
dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQNCi0gICBAbm90ZSBSZWZlciB0byBA
cmVmIF9zcGVjaWFsT2Zmc2V0cyANCi0gICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRo
ZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIA0K
LSAgICBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVz
ZWQgaW4gJUlBY2Nlc3NpYmxlVGV4dCBtZXRob2RzLg0KLSAgKi8NCi0gIEhSRVNVTFQgc2Nyb2xs
U3Vic3RyaW5nVG9Qb2ludA0KLSAgICAoDQotICAgICBbaW5dIGxvbmcgc3RhcnRJbmRleCwNCi0g
ICAgIFtpbl0gbG9uZyBlbmRJbmRleCwNCi0gICAgIFtpbl0gZW51bSBJQTJDb29yZGluYXRlVHlw
ZSBjb29yZGluYXRlVHlwZSwNCi0gICAgIFtpbl0gbG9uZyB4LA0KLSAgICAgW2luXSBsb25nIHkg
DQotICAgICk7DQotDQotICAvKiogQGJyaWVmIFJldHVybnMgYW55IGluc2VydGVkIHRleHQuDQot
DQotICAgUHJvdmlkZWQgZm9yIHVzZSBieSB0aGUgOjpJQTJfRVZFTlRfVEVYVF9JTlNFUlRFRCBh
bmQgOjpJQTJfRVZFTlRfVEVYVF9VUERBVEVEIA0KLSAgICBldmVudCBoYW5kbGVycy4NCi0NCi0g
ICBUaGlzIGRhdGEgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHdoaWxlIHRoZSB0aHJl
YWQgbm90aWZ5aW5nIHRoZSBldmVudCANCi0gICBjb250aW51ZXMuIE9uY2UgdGhlIGhhbmRsZXIg
aGFzIHJldHVybmVkLCB0aGUgdmFsaWRpdHkgb2YgdGhlIGRhdGEgZGVwZW5kcyBvbiANCi0gICBo
b3cgdGhlIHNlcnZlciBtYW5hZ2VzIHRoZSBsaWZlIGN5Y2xlIG9mIGl0cyBvYmplY3RzLiBBbHNv
LCBub3RlIHRoYXQgdGhlIHNlcnZlciANCi0gICBtYXkgaGF2ZSBkaWZmZXJlbnQgbGlmZSBjeWNs
ZSBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgZm9yIGNvbnRyb2xzIGRlcGVuZGluZyBvbiANCi0gICB3
aGV0aGVyIG9yIG5vdCBhIGNvbnRyb2wgbWFuYWdlcyBpdHMgY2hpbGRyZW4uIExpc3RzLCB0cmVl
cywgYW5kIHRhYmxlcyBjYW4gaGF2ZSANCi0gICBhIGxhcmdlIG51bWJlciBvZiBjaGlsZHJlbiBh
bmQgdGh1cyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNoaWxkIG9iamVjdHMgZm9yIHRob3NlIA0K
LSAgIGNvbnRyb2xzIHdvdWxkIG9ubHkgYmUgY3JlYXRlZCBhcyBuZWVkZWQuIFNlcnZlcnMgc2hv
dWxkIGRvY3VtZW50IHRoZWlyIGxpZmUgY3ljbGUgDQotICAgc3RyYXRlZ3kgYXMgdGhpcyB3aWxs
IGJlIG9mIGludGVyZXN0IHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IG9yIHNjcmlwdCBlbmdpbmVz
IA0KLSAgIGFjY2Vzc2luZyBkYXRhIG91dCBvZiBwcm9jZXNzIG9yIGZyb20gb3RoZXIgdGhyZWFk
cy4gU2VydmVycyBvbmx5IG5lZWQgdG8gc2F2ZSB0aGUgDQotICAgbGFzdCBpbnNlcnRlZCBibG9j
ayBvZiB0ZXh0IGFuZCBhIHNjb3BlIG9mIHRoZSBlbnRpcmUgYXBwbGljYXRpb24gaXMgYWRlcXVh
dGUuDQotDQotICAgQHBhcmFtIFtvdXRdIG5ld1RleHQNCi0gICAgVGhlIHRleHQgdGhhdCB3YXMg
anVzdCBpbnNlcnRlZC4NCi0gICBAcmV0dmFsIFNfT0sNCi0gICBAcmV0dmFsIFNfRkFMU0UgSWYg
dGhlcmUgaXMgbm90aGluZyB0byByZXR1cm4sIHRoZSB2YWx1ZXMgb2YgSUEyVGV4dFNlZ21lbnQN
Ci0gICAgc3RydWN0IGFyZSBzZXQgYXMgZm9sbG93czogIHRleHQgPSBOVUxMLCBzdGFydCA9IDAs
IGVuZCA9IDAuDQotDQotICAqLw0KLSAgW3Byb3BnZXRdIEhSRVNVTFQgbmV3VGV4dA0KLSAgICAo
DQotICAgICBbb3V0LCByZXR2YWxdIElBMlRleHRTZWdtZW50ICpuZXdUZXh0DQotICAgICk7DQot
DQotICAvKiogQGJyaWVmIFJldHVybnMgYW55IHJlbW92ZWQgdGV4dC4NCi0NCi0gICBQcm92aWRl
ZCBmb3IgdXNlIGJ5IHRoZSBJQTJfRVZFTlRfVEVYVF9SRU1PVkVEL1VQREFURUQgZXZlbnQgaGFu
ZGxlcnMuDQotICAgDQotICAgVGhpcyBkYXRhIGlzIG9ubHkgZ3VhcmFudGVlZCB0byBiZSB2YWxp
ZCB3aGlsZSB0aGUgdGhyZWFkIG5vdGlmeWluZyB0aGUgZXZlbnQgDQotICAgY29udGludWVzLiBP
bmNlIHRoZSBoYW5kbGVyIGhhcyByZXR1cm5lZCwgdGhlIHZhbGlkaXR5IG9mIHRoZSBkYXRhIGRl
cGVuZHMgb24gDQotICAgaG93IHRoZSBzZXJ2ZXIgbWFuYWdlcyB0aGUgbGlmZSBjeWNsZSBvZiBp
dHMgb2JqZWN0cy4gQWxzbywgbm90ZSB0aGF0IHRoZSBzZXJ2ZXIgDQotICAgbWF5IGhhdmUgZGlm
ZmVyZW50IGxpZmUgY3ljbGUgbWFuYWdlbWVudCBzdHJhdGVnaWVzIGZvciBjb250cm9scyBkZXBl
bmRpbmcgb24gDQotICAgd2hldGhlciBvciBub3QgYSBjb250cm9sIG1hbmFnZXMgaXRzIGNoaWxk
cmVuLiBMaXN0cywgdHJlZXMsIGFuZCB0YWJsZXMgY2FuIGhhdmUgDQotICAgYSBsYXJnZSBudW1i
ZXIgb2YgY2hpbGRyZW4gYW5kIHRodXMgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjaGlsZCBvYmpl
Y3RzIGZvciB0aG9zZSANCi0gICBjb250cm9scyB3b3VsZCBvbmx5IGJlIGNyZWF0ZWQgYXMgbmVl
ZGVkLiBTZXJ2ZXJzIHNob3VsZCBkb2N1bWVudCB0aGVpciBsaWZlIGN5Y2xlIA0KLSAgIHN0cmF0
ZWd5IGFzIHRoaXMgd2lsbCBiZSBvZiBpbnRlcmVzdCB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSBv
ciBzY3JpcHQgZW5naW5lcyANCi0gICBhY2Nlc3NpbmcgZGF0YSBvdXQgb2YgcHJvY2VzcyBvciBm
cm9tIG90aGVyIHRocmVhZHMuIFNlcnZlcnMgb25seSBuZWVkIHRvIHNhdmUgdGhlIA0KLSAgIGxh
c3QgcmVtb3ZlZCBibG9jayBvZiB0ZXh0IGFuZCBhIHNjb3BlIG9mIHRoZSBlbnRpcmUgYXBwbGlj
YXRpb24gaXMgYWRlcXVhdGUuDQotDQotICAgQHBhcmFtIFtvdXRdIG9sZFRleHQNCi0gICAgVGhl
IHRleHQgdGhhdCB3YXMganVzdCByZW1vdmVkLg0KLSAgIEByZXR2YWwgU19PSw0KLSAgIEByZXR2
YWwgU19GQUxTRSBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiwgdGhlIHZhbHVlcyBvZiBJ
QTJUZXh0U2VnbWVudA0KLSAgICBzdHJ1Y3QgYXJlIHNldCBhcyBmb2xsb3dzOiAgdGV4dCA9IE5V
TEwsIHN0YXJ0ID0gMCwgZW5kID0gMC4NCi0gICovDQotICBbcHJvcGdldF0gSFJFU1VMVCBvbGRU
ZXh0DQotICAgICgNCi0gICAgIFtvdXQsIHJldHZhbF0gSUEyVGV4dFNlZ21lbnQgKm9sZFRleHQN
Ci0gICAgKTsNCi0NCi19DQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgRmlsZSBOYW1lIChB
Y2Nlc3NpYmxlVGV4dC5pZGwpCisgKiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRp
b24gCisgKiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTMgTGludXggRm91bmRhdGlvbiAK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIAorICogIENvcHlyaWdodCAo
YykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIAorICogICAKKyAqICAgCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAq
ICBhcmUgbWV0OiAKKyAqICAgCisgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAK
KyAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSAKKyAqICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqCisgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4
IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAgICAgIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAq
ICAgICAgcGVybWlzc2lvbi4gCisgKiAgIAorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqICBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqICBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAq
ICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIAorICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAorICogIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIAorICogIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogICAKKyAqICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNv
dXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNo
ZWQgYXQ6IAorICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vu
c2UucGhwIAorICogICAKKyAqICBJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIExp
bnV4IEZvdW5kYXRpb24uIFRoZSBJQWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkgYmUgdXNlZCBp
biBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIAorICogIFBv
bGljeSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZp
Y2F0aW9uLiAKKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gCisKK21pZGxfcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogMjExMSkKK21pZGxfcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogMjQwMikKKworaW1w
b3J0ICJvYmppZGwuaWRsIjsKK2ltcG9ydCAib2FpZGwuaWRsIjsKK2ltcG9ydCAib2xlYWNjLmlk
bCI7CitpbXBvcnQgIklBMkNvbW1vblR5cGVzLmlkbCI7CisKKy8qKiBBIHN0cnVjdHVyZSBjb250
YWluaW5nIGEgc3Vic3RyaW5nIGFuZCB0aGUgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIGluIHRoZSBl
bmNsb3Npbmcgc3RyaW5nLgorIAorIElBY2Nlc3NpYmxlVGV4dDo6bmV3VGV4dCBhbmQgSUFjY2Vz
c2libGVUZXh0OjpvbGRUZXh0IHJldHVybiB0aGlzIHN0cnVjdC4KKyovCit0eXBlZGVmIHN0cnVj
dCBJQTJUZXh0U2VnbWVudCB7CisgIEJTVFIgdGV4dDsgICAgLy8vPCBBIGNvcHkgb2YgYSBzZWdt
ZW50IG9mIHRleHQgdGFrZW4gZnJvbSBhbiBlbmNsb3NpbmcgcGFyYWdyYXBoLgorICBsb25nIHN0
YXJ0OyAgICAvLy88IEluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlZ21lbnQg
aW4gdGhlIGVuY2xvc2luZyB0ZXh0LiAgCisgIGxvbmcgZW5kOyAgICAgICAgLy8vPCBJbmRleCBv
ZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlZ21l
bnQgaW4gdGhlIGVuY2xvc2luZyB0ZXh0LiAKK30gSUEyVGV4dFNlZ21lbnQ7CisKKy8qKiBUaGlz
IGVudW0gZGVmaW5lcyB2YWx1ZXMgd2hpY2ggc3BlY2lmeSBhIHRleHQgYm91bmRhcnkgdHlwZS4K
KworIElBMl9URVhUX0JPVU5EQVJZX1NFTlRFTkNFIGlzIG9wdGlvbmFsLiAgV2hlbiBhIG1ldGhv
ZCBkb2Vzbid0IGltcGxlbWVudCB0aGlzIAorIG1ldGhvZCBpdCBtdXN0IHJldHVybiBTX0ZBTFNF
LiAgVHlwaWNhbGx5IHRoaXMgZmVhdHVyZSB3b3VsZCBub3QgYmUgaW1wbGVtZW50ZWQKKyBieSBh
biBhcHBsaWNhdGlvbi4gIEhvd2V2ZXIsIGlmIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgd2Fz
IG5vdCBzYXRpc2ZpZWQgd2l0aAorIGhvdyBzY3JlZW4gcmVhZGVycyBoYXZlIGhhbmRsZWQgdGhl
IHJlYWRpbmcgb2Ygc2VudGVuY2VzIHRoaXMgYm91bmRhcnkgdHlwZQorIGNvdWxkIGJlIGltcGxl
bWVudGVkIGFuZCBzY3JlZW4gcmVhZGVycyBjb3VsZCB1c2UgdGhlIGFwcGxpY2F0aW9uJ3MgdmVy
c2lvbiBvZiBhIAorIHNlbnRlbmNlIHJhdGhlciB0aGFuIHRoZSBzY3JlZW4gcmVhZGVyJ3MuCisK
KyBUaGUgcmVzdCBvZiB0aGUgYm91bmRhcnkgdHlwZXMgbXVzdCBiZSBzdXBwb3J0ZWQuCisKKyBU
aGlzIGVudW0gaXMgdXNlZCBpbiBJQWNjZXNzaWJsZVRleHQ6OnRleHRCZWZvcmVPZmZzZXQsIElB
Y2Nlc3NpYmxlVGV4dDo6dGV4dEF0T2Zmc2V0LAorIGFuZCBJQWNjZXNzaWJsZVRleHQ6OnRleHRB
ZnRlck9mZnNldC4KKyovCisKK2VudW0gSUEyVGV4dEJvdW5kYXJ5VHlwZSB7CisgIElBMl9URVhU
X0JPVU5EQVJZX0NIQVIsICAgICAgIC8qKjwgVHlwaWNhbGx5LCBhIHNpbmdsZSBjaGFyYWN0ZXIg
aXMgcmV0dXJuZWQuICBJbiBzb21lIGNhc2VzIG1vcmUgdGhhbgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb25lIGNoYXJhY3RlciBpcyByZXR1cm5lZCwgZm9yIGV4YW1wbGUsIHdo
ZW4gYSBkb2N1bWVudCBjb250YWlucyBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YSBzdWNoIGFzIGEgZmllbGQgY29udGFpbmluZyBhIGRhdGUsIHRpbWUsIG9yIGZv
b3Rub3RlIHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRo
aXMgY2FzZSB0aGUgY2FyZXQgY2FuIG1vdmUgb3ZlciBzZXZlcmFsIGNoYXJhY3RlcnMgaW4gb25l
IG1vdmVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY2FyZXQu
ICBOb3RlIHRoYXQgYWZ0ZXIgdGhlIGNhcmV0IG1vdmVzLCB0aGUgY2FyZXQgb2Zmc2V0IGNoYW5n
ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiB0aGUgZmllbGQsIGUuZy4gYnkgOCBjaGFyYWN0ZXJzIGluIHRoZSAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBkYXRlOiAwMy8yNi8wNy4gKi8K
KyAgSUEyX1RFWFRfQk9VTkRBUllfV09SRCwgICAgICAgLyoqPCBUaGUgcmFuZ2UgcHJvdmlkZWQg
bWF0Y2hlcyB0aGUgcmFuZ2Ugb2JzZXJ2ZWQgd2hlbiB0aGUgYXBwbGljYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlcyB0aGUgQ3RybCArIGxlZnQgYXJyb3cg
YW5kIEN0cmwgKyByaWdodCBhcnJvdyBrZXkgc2VxdWVuY2VzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwaWNhbGx5IHRoaXMgaXMgZnJvbSB0aGUgc3RhcnQgb2Ygb25lIHdv
cmQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0LCBidXQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlvdXMgYXBwbGljYXRpb25zIGFyZSBpbmNvbnNpc3RlbnQgaW4gdGhlIGhh
bmRsaW5nIG9mIHRoZSBlbmQgb2YgYSBsaW5lLiAqLworICBJQTJfVEVYVF9CT1VOREFSWV9TRU5U
RU5DRSwgICAvLy88IFJhbmdlIGlzIGZyb20gc3RhcnQgb2Ygb25lIHNlbnRlbmNlIHRvIHRoZSBz
dGFydCBvZiBhbm90aGVyIHNlbnRlbmNlLgorICBJQTJfVEVYVF9CT1VOREFSWV9QQVJBR1JBUEgs
ICAvLy88IFJhbmdlIGlzIGZyb20gc3RhcnQgb2Ygb25lIHBhcmFncmFwaCB0byB0aGUgc3RhcnQg
b2YgYW5vdGhlciBwYXJhZ3JhcGguCisgIElBMl9URVhUX0JPVU5EQVJZX0xJTkUsICAgICAgIC8q
KjwgUmFuZ2UgaXMgZnJvbSBzdGFydCBvZiBvbmUgbGluZSB0byB0aGUgc3RhcnQgb2YgYW5vdGhl
ciBsaW5lLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnRlbiBtZWFu
cyB0aGF0IGFuIGVuZC1vZi1saW5lIGNoYXJhY3RlciB3aWxsIGFwcGVhciBhdCB0aGUgZW5kIG9m
IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuIEhvd2V2ZXIgaW4g
dGhlIGNhc2Ugb2Ygc29tZSBhcHBsaWNhdGlvbnMgYW4gZW5kLW9mLWxpbmUgY2hhcmFjdGVyCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0ZXMgdGhlIGVuZCBvZiBhIHBh
cmFncmFwaCBhbmQgdGhlIGxpbmVzIGNvbXBvc2luZyB0aGUgcGFyYWdyYXBoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGhhbiB0aGUgbGFzdCBsaW5lLCBkbyBub3Qg
Y29udGFpbiBhbiBlbmQgb2YgbGluZSBjaGFyYWN0ZXIuICovCisgIElBMl9URVhUX0JPVU5EQVJZ
X0FMTCAgICAgICAgIC8vLzwgVXNpbmcgdGhpcyB2YWx1ZSB3aWxsIGNhdXNlIGFsbCB0ZXh0IHRv
IGJlIHJldHVybmVkLgorfTsKKworLyoqIEBicmllZiBUaGlzIGludGVyZmFjZSBnaXZlcyByZWFk
LW9ubHkgYWNjZXNzIHRvIHRleHQuCisKKyBUaGUgJUlBY2Nlc3NpYmxlVGV4dCBpbnRlcmZhY2Ug
c2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGFsbCBjb21wb25lbnRzIAorICB0aGF0IHByZXNlbnQg
dGV4dHVhbCBpbmZvcm1hdGlvbiBvbiB0aGUgZGlzcGxheSBsaWtlICBidXR0b25zLCAKKyAgdGV4
dCBlbnRyeSBmaWVsZHMsIG9yIHRleHQgcG9ydGlvbnMgb2YgdGhlIGRvY3VtZW50IHdpbmRvdy4g
IFRoZSBpbnRlcmZhY2UgCisgIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdGV4dCdzIGNvbnRlbnQs
IGF0dHJpYnV0ZXMsIGFuZCBzcGF0aWFsIGxvY2F0aW9uLiAgCisgIEhvd2V2ZXIsIHRleHQgY2Fu
IG5vdCBiZSBtb2RpZmllZCB3aXRoIHRoaXMgaW50ZXJmYWNlLiAgVGhhdCBpcyB0aGUgdGFzayAK
KyAgb2YgdGhlIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IGludGVyZmFjZS4KKyAgICAgICAgCisg
VGhlIHRleHQgbGVuZ3RoLCBpLmUuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGV4
dCwgaXMKKyAgcmV0dXJuZWQgYnkgSUFjY2Vzc2libGVUZXh0OjpuQ2hhcmFjdGVycy4gQWxsIG1l
dGhvZHMgdGhhdCBvcGVyYXRlIAorICBvbiBwYXJ0aWN1bGFyIGNoYXJhY3RlcnMgKGUuZy4gSUFj
Y2Vzc2libGVUZXh0Ojp0ZXh0QXRPZmZzZXQpIHVzZSBjaGFyYWN0ZXIgCisgIGluZGljZXMgZnJv
bSAwIHRvIGxlbmd0aC0xLiBBbGwgbWV0aG9kcyB0aGF0IG9wZXJhdGUgb24gY2hhcmFjdGVyIHBv
c2l0aW9ucyAKKyAgKGUuZy4gSUFjY2Vzc2libGVUZXh0Ojp0ZXh0KSB1c2UgaW5kaWNlcyBmcm9t
IDAgdG8gbGVuZ3RoLgorCisgUGxlYXNlIG5vdGUgdGhhdCBhY2Nlc3NpYmxlIHRleHQgZG9lcyBu
b3QgbmVjZXNzYXJpbHkgc3VwcG9ydCBzZWxlY3Rpb24uICAKKyAgSW4gdGhpcyBjYXNlIGl0IHNo
b3VsZCBiZWhhdmUgYXMgaWYgdGhlcmUgd2hlcmUgbm8gc2VsZWN0aW9uLiAgQW4gZW1wdHkgCisg
IHNlbGVjdGlvbiBpcyB1c2VkIGZvciBleGFtcGxlIHRvIGV4cHJlc3MgdGhlIGN1cnJlbnQgY3Vy
c29yIHBvc2l0aW9uLgorCisgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgCisgICJTcGVj
aWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJs
ZUVkaXRhYmxlVGV4dCBNZXRob2RzIiAKKyAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwg
b2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZVRleHQgbWV0aG9kcy4KKwor
IEVfRkFJTCBpcyByZXR1cm5lZCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzCisgQGxpIGVuZE9mZnNl
dCA8IHN0YXJ0T2Zmc2V0CisgQGxpIGVuZG9mZnNldCA+IGxlbmd0aAorKi8KK1tvYmplY3QsIHV1
aWQoMjRGRDJGRkItM0FBRC00YTA4LTgzMzUtQTNBRDg5QzBGQjRCKV0KK2ludGVyZmFjZSBJQWNj
ZXNzaWJsZVRleHQgOiBJVW5rbm93bgoreworCisgIC8qKiBAYnJpZWYgQWRkcyBhIHRleHQgc2Vs
ZWN0aW9uCisgICBAcGFyYW0gW2luXSBzdGFydE9mZnNldAorICAgIFN0YXJ0aW5nIG9mZnNldCAo
IDAgYmFzZWQpLgorICAgQHBhcmFtIFtpbl0gZW5kT2Zmc2V0CisgICAgT2Zmc2V0IG9mIGZpcnN0
IGNoYXJhY3RlciBhZnRlciBuZXcgc2VsZWN0aW9uICgwIGJhc2VkKS4KKyAgIEByZXR2YWwgU19P
SworICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICBAbm90ZSAg
UmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgCisgICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3Ig
dXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1l
dGhvZHMiIAorICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBj
YW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVUZXh0IG1ldGhvZHMuCisgICovCisgIEhSRVNVTFQg
YWRkU2VsZWN0aW9uCisgICAgKAorICAgICBbaW5dIGxvbmcgc3RhcnRPZmZzZXQsCisgICAgIFtp
bl0gbG9uZyBlbmRPZmZzZXQKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0ZXh0IGF0
dHJpYnV0ZXMuCisgICBAcGFyYW0gW2luXSBvZmZzZXQKKyAgICBUZXh0IG9mZnNldCAoMCBiYXNl
ZCkuICBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyAKKyAgICAiU3BlY2lhbCBPZmZzZXRz
IGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRl
eHQgTWV0aG9kcyIgCisgICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0
aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZVRleHQgbWV0aG9kcy4KKyAgIEBwYXJhbSBb
b3V0XSBzdGFydE9mZnNldCAgICAKKyAgICBUaGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBjaGFy
YWN0ZXIgcmFuZ2Ugb3ZlciB3aGljaCBhbGwgdGV4dCBhdHRyaWJ1dGVzIG1hdGNoIAorICAgIHRo
b3NlIG9mIG9mZnNldC4gKDAgYmFzZWQpCisgICBAcGFyYW0gW291dF0gZW5kT2Zmc2V0ICAgIAor
ICAgIFRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBwYXN0IHRoZSBjaGFyYWN0ZXIg
cmFuZ2Ugb3ZlciB3aGljaCBhbGwgdGV4dCAKKyAgICBhdHRyaWJ1dGVzIG1hdGNoIHRob3NlIG9m
IG9mZnNldC4gKDAgYmFzZWQpCisgICBAcGFyYW0gW291dF0gdGV4dEF0dHJpYnV0ZXMgIAorICAg
IEEgc3RyaW5nIG9mIGF0dHJpYnV0ZXMgZGVzY3JpYmluZyB0aGUgdGV4dC4gIFRoZSBhdHRyaWJ1
dGVzIGFyZSBkZXNjcmliZWQgaW4gdGhlCisgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5saW51eGZv
dW5kYXRpb24ub3JnL2VuL0FjY2Vzc2liaWxpdHkvSUFjY2Vzc2libGUyL1RleHRBdHRyaWJ1dGVz
Ij4KKyAgICB0ZXh0IGF0dHJpYnV0ZXMgc3BlY2lmaWNhdGlvbjwvYT4gb24gdGhlICVJQWNjZXNz
aWJsZTIgd2ViIHNpdGUuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0
aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFsdWVzIGFyZSAwcyBhbmQgTlVMTCBy
ZXNwZWN0aXZlbHkgCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQK
KyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgYXR0cmlidXRlcworICAgICgKKyAgICAgW2luXSBs
b25nIG9mZnNldCwgICAgCisgICAgIFtvdXRdIGxvbmcgKnN0YXJ0T2Zmc2V0LAorICAgICBbb3V0
XSBsb25nICplbmRPZmZzZXQsICAgIAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKnRleHRBdHRy
aWJ1dGVzCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBjYXJldC4KKworICAgUmV0dXJucyB0aGUgMC1iYXNlZCBvZmZzZXQgb2YgdGhlIGNhcmV0IHdp
dGhpbiB0aGUgdGV4dC4gIElmIHRoZSB0ZXh0IGlzIAorICAgaW1wbGVtZW50ZWQgYXMgYSB0cmVl
IG9mIHRleHQgb2JqZWN0cyB3aXRoIGVtYmVkIGNoYXJhY3RlcnMgaW4gaGlnaGVyIGxldmVscwor
ICAgcmVwcmVzZW50aW5nIHN1YnN0cmluZ3Mgb2YgY2hpbGQgdGV4dCBvYmplY3RzIGFuZCB0aGUg
Y2FyZXQgaXMgaW4gb25lIG9mIHRoZSAKKyAgIGNoaWxkIHRleHQgb2JqZWN0cywgdGhlbiB0aGUg
b2Zmc2V0IGluIHRoZSBoaWdoZXIgbGV2ZWwgdGV4dCBvYmplY3Qgd291bGQgYmUKKyAgIGF0IHRo
ZSBlbWJlZCBjaGFyYWN0ZXIgcmVwcmVzZW50aW5nIGNoaWxkIHRleHQgb2JqZWN0IHRoYXQgY29u
dGFpbnMgdGhlIGNhcmV0LgorCisgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHN0cmluZyAib25lIHR3
byB0aHJlZSIgaXMgaW1wbGVtZW50ZWQgYXMgYSB0d28gdGV4dCBvYmplY3RzLAorICAgd2l0aCBh
IHRvcCBsZXZlbCB0ZXh0IG9iamVjdCBjb250YWluaW5nIGFuIGVtYmVkIGNoYXJhY3RlciAib25l
ID8gdGhyZWUiIGFuZCBhCisgICBjaGlsZCB0ZXh0IG9iamVjdCBjb250YWluaW5nICJ0d28iIGFu
ZCBpZiB0aGUgY2FyZXQgaXMgaW4gdGhlIGRlc2NlbmRhbnQgb2JqZWN0CisgICBqdXN0IGJlZm9y
ZSB0aGUgJ28nIGluICJ0d28iLCB0aGVuOgorICAgPHVsPgorICAgPGxpPnRoZSBjYXJldE9mZnNl
dCBmb3IgdGhlICJvbmUgPyB0aHJlZSIgb2JqZWN0IHdvdWxkIGJlIDQsIG1hdGNoaW5nIHRoZSBl
bWJlZCBjaGFyYWN0ZXI8L2xpPgorICAgPGxpPnRoZSBjYXJldE9mZnNldCBmb3IgInR3byIgd291
bGQgYmUgMiwgbWF0Y2hpbmcgdGhlICJvIjwvbGk+CisgICA8L3VsPgorICAgVGhlIGNhcmV0IHBv
c2l0aW9uL29mZnNldCBpcyB0aGF0IG9mIHRoZSBjaGFyYWN0ZXIgbG9naWNhbGx5IGZvbGxvd2lu
ZyBpdCwgZS5nLgorICAgdG8gdGhlIHJpZ2h0IG9mIGl0IGluIGEgbGVmdCB0byByaWdodCBsYW5n
dWFnZSwgb3IgdG8gdGhlIGxlZnQgb2YgaXQgaW4gYSByaWdodAorICAgdG8gbGVmdCBsYW5ndWFn
ZS4KKyAgIEBwYXJhbSBbb3V0XSBvZmZzZXQKKyAgICBUaGUgcmV0dXJuZWQgb2Zmc2V0IGlzIHJl
bGF0aXZlIHRvIHRoZSB0ZXh0IHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0LgorICAgQHJldHZh
bCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlIGNhcmV0IGlzIG5vdCBjdXJyZW50bHkg
YWN0aXZlIG9uIHRoaXMgb2JqZWN0LCBpLmUuIHRoZQorICAgIGNhcmV0IGlzIGxvY2F0ZWQgb24g
c29tZSBvdGhlciBvYmplY3QuICBUaGUgcmV0dXJuZWQgb2Zmc2V0IHZhbHVlIHdpbGwgYmUgLTEu
CisgICBAbm90ZSBTX0ZBTFNFIChhbmQgYW4gb2Zmc2V0IG9mIC0xKSB3aWxsIG5vdCBiZSByZXR1
cm5lZCBpZiB0aGUgY2FyZXQgaXMgc29tZXdoZXJlCisgICBpbiB0aGUgdGV4dCBvYmplY3Qgb3Ig
b25lIG9mIGl0cyBkZXNjZW5kYW50cy4gCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGNhcmV0
T2Zmc2V0CisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm9mZnNldAorICAgICk7CisK
KworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgc3BlY2lmaWVk
IHBvc2l0aW9uLgorICAgICAgICAKKyAgIFRoZSB2aXJ0dWFsIGNoYXJhY3RlciBhZnRlciB0aGUg
bGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHJlcHJlc2VudGVkCisgICAgdGV4dCwgaS5lLiB0aGUgb25l
IGF0IHBvc2l0aW9uIGxlbmd0aCBpcyBhIHNwZWNpYWwgY2FzZS4gSXQgcmVwcmVzZW50cyB0aGUg
CisgICAgY3VycmVudCBpbnB1dCBwb3NpdGlvbiBhbmQgd2lsbCB0aGVyZWZvcmUgdHlwaWNhbGx5
IGJlIHF1ZXJpZWQgYnkgQVQgbW9yZSAKKyAgICBvZnRlbiB0aGFuIG90aGVyIHBvc2l0aW9ucy4g
IEJlY2F1c2UgaXQgZG9lcyBub3QgcmVwcmVzZW50IGFuIGV4aXN0aW5nIGNoYXJhY3RlciAKKyAg
ICBpdHMgYm91bmRpbmcgYm94IGlzIGRlZmluZWQgaW4gcmVsYXRpb24gdG8gcHJlY2VkaW5nIGNo
YXJhY3RlcnMuICBJdCBzaG91bGQgYmUgCisgICAgcm91Z2hseSBlcXVpdmFsZW50IHRvIHRoZSBi
b3VuZGluZyBib3ggb2Ygc29tZSBjaGFyYWN0ZXIgd2hlbiBpbnNlcnRlZCBhdCB0aGUgCisgICAg
ZW5kIG9mIHRoZSB0ZXh0LiAgSXRzIGhlaWdodCB0eXBpY2FsbHkgYmVpbmcgdGhlIG1heGltYWwg
aGVpZ2h0IG9mIGFsbCB0aGUKKyAgICBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IG9yIHRoZSBoZWln
aHQgb2YgdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIsIGl0cyB3aWR0aCBiZWluZyAKKyAgICBhdCBs
ZWFzdCBvbmUgcGl4ZWwgc28gdGhhdCB0aGUgYm91bmRpbmcgYm94IGlzIG5vdCBkZWdlbmVyYXRl
LgorCisgICBOb3RlIHRoYXQgdGhlIGluZGV4ICdsZW5ndGgnIGlzIG5vdCBhbHdheXMgdmFsaWQu
ICBXaGV0aGVyIGl0IGlzIG9yIG5vdCBpcyAKKyAgICBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQu
ICBJdCB0eXBpY2FsbHkgaXMgd2hlbiB0ZXh0IGlzIGVkaXRhYmxlIG9yIG90aGVyd2lzZSAKKyAg
ICB3aGVuIG9uIHRoZSBzY3JlZW4gdGhlIGNhcmV0IGNhbiBiZSBwbGFjZWQgYmVoaW5kIHRoZSB0
ZXh0LiAgWW91IGNhbiBiZSBzdXJlIAorICAgIHRoYXQgdGhlIGluZGV4IGlzIHZhbGlkIGFmdGVy
IHlvdSBoYXZlIHJlY2VpdmVkIGEgOjpJQTJfRVZFTlRfVEVYVF9DQVJFVF9NT1ZFRAorICAgIGV2
ZW50IGZvciB0aGlzIGluZGV4LgorICAgQHBhcmFtIFtpbl0gb2Zmc2V0CisgICAgSW5kZXggb2Yg
dGhlIGNoYXJhY3RlciBmb3Igd2hpY2ggdG8gcmV0dXJuIGl0cyBib3VuZGluZyBib3guIFRoZSB2
YWxpZCByYW5nZSAKKyAgICBpcyAwLi5sZW5ndGguICBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zm
c2V0cyAKKyAgICAiU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4
dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgICAgZm9yIGluZm9ybWF0
aW9uIGFib3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJs
ZVRleHQgbWV0aG9kcy4KKyAgIEBwYXJhbSBbaW5dIGNvb3JkVHlwZQorICAgIFNwZWNpZmllcyBp
ZiB0aGUgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBzY3JlZW4gb3IgdG8gdGhlIHBh
cmVudCB3aW5kb3cuCisgICBAcGFyYW0gW291dF0geAorICAgIFggY29vcmRpbmF0ZSBvZiB0aGUg
dG9wIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIHJlZmVyZW5jZWQgY2hh
cmFjdGVyLiAKKyAgIEBwYXJhbSBbb3V0XSB5CisgICAgWSBjb29yZGluYXRlIG9mIHRoZSB0b3Ag
bGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgcmVmZXJlbmNlZCBjaGFyYWN0
ZXIuIAorICAgQHBhcmFtIFtvdXRdIHdpZHRoCisgICAgV2lkdGggb2YgdGhlIGJvdW5kaW5nIGJv
eCBvZiB0aGUgcmVmZXJlbmNlZCBjaGFyYWN0ZXIuIAorICAgQHBhcmFtIFtvdXRdIGhlaWdodAor
ICAgIEhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSByZWZlcmVuY2VkIGNoYXJhY3Rl
ci4gCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5d
IHBhc3NlZAorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBjaGFyYWN0ZXJFeHRlbnRzCisgICAg
KAorICAgICBbaW5dIGxvbmcgb2Zmc2V0LAorICAgICBbaW5dIGVudW0gSUEyQ29vcmRpbmF0ZVR5
cGUgY29vcmRUeXBlLAorICAgICBbb3V0XSBsb25nICp4LAorICAgICBbb3V0XSBsb25nICp5LAor
ICAgICBbb3V0XSBsb25nICp3aWR0aCwKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpoZWlnaHQK
KyAgICApOworCisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWN0aXZlIG5v
bi1jb250aWd1b3VzIHNlbGVjdGlvbnMKKyAgIEBwYXJhbSBbb3V0XSBuU2VsZWN0aW9ucworICAg
QHJldHZhbCBTX09LCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIG5TZWxlY3Rpb25zCisgICAg
KAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm5TZWxlY3Rpb25zCisgICAgKTsKKworICAvKiog
QGJyaWVmIFJldHVybnMgdGhlIHRleHQgcG9zaXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgc2NyZWVu
IHBvc2l0aW9uLgorICAgIAorICAgR2l2ZW4gYSBwb2ludCByZXR1cm4gdGhlIHplcm8tYmFzZWQg
aW5kZXggb2YgdGhlIGNoYXJhY3RlciB1bmRlciB0aGF0CisgICBwb2ludC4gIFRoZSBzYW1lIGZ1
bmN0aW9uYWxpdHkgY291bGQgYmUgYWNoaWV2ZWQgYnkgdXNpbmcgdGhlIGJvdW5kaW5nCisgICBi
b3hlcyBmb3IgZWFjaCBjaGFyYWN0ZXIgYXMgcmV0dXJuZWQgYnkgSUFjY2Vzc2libGVUZXh0Ojpj
aGFyYWN0ZXJFeHRlbnRzLgorICAgVGhlIG1ldGhvZCBJQWNjZXNzaWJsZVRleHQ6Om9mZnNldEF0
UG9pbnQsIGhvd2V2ZXIsIGNhbiBiZSBpbXBsZW1lbnRlZCAKKyAgIG1vcmUgZWZmaWNpZW50bHku
CisgICAgICAgICAgICAKKyAgIEBwYXJhbSBbaW5dIHgKKyAgICBUaGUgcG9zaXRpb24ncyB4IHZh
bHVlIGZvciB3aGljaCB0byBsb29rIHVwIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHRoYXQK
KyAgICBpcyByZW5kZXJlZCBvbiB0byB0aGUgZGlzcGxheSBhdCB0aGF0IHBvaW50LgorICAgQHBh
cmFtIFtpbl0geQorICAgIFRoZSBwb3NpdGlvbidzIHkgdmFsdWUgZm9yIHdoaWNoIHRvIGxvb2sg
dXAgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdGhhdAorICAgIGlzIHJlbmRlcmVkIG9uIHRv
IHRoZSBkaXNwbGF5IGF0IHRoYXQgcG9pbnQuICAgICAgICAgICAgCisgICBAcGFyYW0gW2luXSBj
b29yZFR5cGUKKyAgICBTY3JlZW4gY29vcmRpbmF0ZXMgb3Igd2luZG93IGNvb3JkaW5hdGVzLgor
ICAgQHBhcmFtIFtvdXRdIG9mZnNldAorICAgIEluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgdW5kZXIg
dGhlIGdpdmVuIHBvaW50IG9yIC0xIGlmIHRoZSBwb2ludAorICAgIGlzIGludmFsaWQgb3IgdGhl
cmUgaXMgbm8gY2hhcmFjdGVyIHVuZGVyIHRoZSBwb2ludC4KKyAgIEByZXR2YWwgU19PSworICAg
QHJldHZhbCBTX0ZBTFNFIGlmIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBpcyAtMQor
CisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAgICAqLworICBb
cHJvcGdldF0gSFJFU1VMVCBvZmZzZXRBdFBvaW50CisgICAgKAorICAgICBbaW5dIGxvbmcgeCwK
KyAgICAgW2luXSBsb25nIHksCisgICAgIFtpbl0gZW51bSBJQTJDb29yZGluYXRlVHlwZSBjb29y
ZFR5cGUsCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqb2Zmc2V0CisgICAgKTsKKworICAvKiog
QGJyaWVmIFJldHVybnMgdGhlIGNoYXJhY3RlciBvZmZzZXRzIG9mIE50aCBhY3RpdmUgdGV4dCBz
ZWxlY3Rpb24KKworICAgUmV0dXJucyB0aGUgMC1iYXNlZCBzdGFydGluZyBhbmQgZW5kaW5nIG9m
ZnNldHMgb2YgdGhlIE50aCBzZWxlY3Rpb24uICBJZiB0aGUKKyAgIHRleHQgaXMgaW1wbGVtZW50
ZWQgYXMgYSB0cmVlIG9mIHRleHQgb2JqZWN0cyB3aXRoIGVtYmVkIGNoYXJhY3RlcnMgaW4gaGln
aGVyCisgICBsZXZlbHMgcmVwcmVzZW50aW5nIHN1YnN0cmluZ3Mgb2YgY2hpbGQgdGV4dCBvYmpl
Y3RzLCBjb25zaWRlciB0aGUgZm9sbG93aW5nLgorICAgSWYgdGhlIHN0YXJ0aW5nIHNlbGVjdGlv
biBvZmZzZXQgaXMgaW4gb25lIG9mIHRoZSBjaGlsZCB0ZXh0IG9iamVjdHMsIHRoZW4gdGhlCisg
ICBzdGFydGluZyBvZmZzZXQgaW4gdGhlIGhpZ2hlciBsZXZlbCB0ZXh0IG9iamVjdCB3b3VsZCBi
ZSBhdCB0aGUgZW1iZWQgY2hhcmFjdGVyCisgICByZXByZXNlbnRpbmcgdGhlIGNoaWxkIHRleHQg
b2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHN0YXJ0aW5nIHNlbGVjdGlvbiBvZmZzZXQuCisgICBJ
ZiB0aGUgZW5kaW5nIHNlbGVjdGlvbiBvZmZzZXQgaXMgaW4gb25lIG9mIHRoZSBjaGlsZCB0ZXh0
IG9iamVjdHMsIHRoZW4gdGhlCisgICBlbmRpbmcgb2Zmc2V0IGluIHRoZSBoaWdoZXIgbGV2ZWwg
dGV4dCBvYmplY3Qgd291bGQgYmUganVzdCBhZnRlciB0aGUgZW1iZWQKKyAgIGNoYXJhY3RlciBy
ZXByZXNlbnRpbmcgdGhlIGNoaWxkIHRleHQgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGVuZGlu
ZyBzZWxlY3Rpb24KKyAgIG9mZnNldC4KKworICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcg
Im9uZSB0d28gdGhyZWUiIGlzIGltcGxlbWVudGVkIGFzIGEgdHdvIHRleHQgb2JqZWN0cywKKyAg
IHdpdGggYSB0b3AgbGV2ZWwgdGV4dCBvYmplY3QgY29udGFpbmluZyBhbiBlbWJlZCBjaGFyYWN0
ZXIgIm9uZSA/IHRocmVlIiBhbmQgYQorICAgY2hpbGQgdGV4dCBvYmplY3QgY29udGFpbmluZyAi
dHdvIiBhbmQgaWYgdGhlIHNlbGVjdGlvbiBpcyB0aGUgc3RyaW5nICJ0d28iIHRoZW46CisgICA8
dWw+CisgICA8bGk+dGhlIHN0YXJ0T2Zmc2V0IGZvciB0aGUgIm9uZSA/IHRocmVlIiBvYmplY3Qg
d291bGQgYmUgNCwgbWF0Y2hpbmcgdGhlIGVtYmVkIGNoYXJhY3RlciBhbmQgdGhlIGVuZE9mZnNl
dCB3b3VsZCBiZSA1LjwvbGk+CisgICA8bGk+dGhlIHN0YXJ0T2Zmc2V0IGZvciB0aGUgInR3byIg
b2JqZWN0IHdvdWxkIGJlIDAsIGFuZCB0aGUgZW5kT2Zmc2V0IHdvdWxkIGJlIDM8L2xpPgorICAg
PC91bD4KKyAgIFNlbGVjdGlvbiBvZmZzZXRzIGFyZSB0aGF0IG9mIHRoZSBjaGFyYWN0ZXIgbG9n
aWNhbGx5IGZvbGxvd2luZyBpdCwgZS5nLgorICAgdG8gdGhlIHJpZ2h0IG9mIGl0IGluIGEgbGVm
dCB0byByaWdodCBsYW5ndWFnZSBvciB0byB0aGUgbGVmdCBvZiBpdCBpbiBhIHJpZ2h0IHRvIGxl
ZnQgbGFuZ3VhZ2UuCisgICBAcGFyYW0gW2luXSBzZWxlY3Rpb25JbmRleAorICAgIEluZGV4IG9m
IHNlbGVjdGlvbiAoMCBiYXNlZCkuCisgICBAcGFyYW0gW291dF0gc3RhcnRPZmZzZXQKKyAgICAw
IGJhc2VkIG9mZnNldCBvZiBmaXJzdCBzZWxlY3RlZCBjaGFyYWN0ZXIKKyAgIEBwYXJhbSBbb3V0
XSBlbmRPZmZzZXQKKyAgICAwIGJhc2VkIG9mZnNldCBvZiBvbmUgcGFzdCB0aGUgbGFzdCBzZWxl
Y3RlZCBjaGFyYWN0ZXIuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJH
IGlmIGJhZCBbaW5dIHBhc3NlZAorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBzZWxlY3Rpb24K
KyAgICAoCisgICAgIFtpbl0gbG9uZyBzZWxlY3Rpb25JbmRleCwKKyAgICAgW291dF0gbG9uZyAq
c3RhcnRPZmZzZXQsCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqZW5kT2Zmc2V0CisgICAgKTsK
KworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHN1YnN0cmluZyBiZXR3ZWVuIHRoZSB0d28gZ2l2
ZW4gaW5kaWNlcy4KKworICAgVGhlIHN1YnN0cmluZyBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVy
IGF0IHN0YXJ0T2Zmc2V0IChpbmNsdXNpdmUpIGFuZCB1cCB0byAKKyAgICB0aGUgY2hhcmFjdGVy
IGF0IGVuZE9mZnNldCAoZXhjbHVzaXZlKSwgaWYgc3RhcnRPZmZzZXQgaXMgbGVzcyBvciBlcXVh
bCAKKyAgICBlbmRPZmZzZXQuICBJZiBlbmRPZmZzZXQgaXMgbG93ZXIgdGhhbiBzdGFydE9mZnNl
dCwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSAKKyAgICBhcyBhIGNhbGwgd2l0aCB0aGUgdHdvIGFy
Z3VtZW50cyBiZWluZyBleGNoYW5nZWQuCisKKyAgIFRoZSB3aG9sZSB0ZXh0IGNhbiBiZSByZXF1
ZXN0ZWQgYnkgcGFzc2luZyB0aGUgaW5kaWNlcyB6ZXJvIGFuZCAKKyAgICBJQWNjZXNzaWJsZVRl
eHQ6Om5DaGFyYWN0ZXJzLiBJZiBib3RoIGluZGljZXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgYW4g
ZW1wdHkgCisgICAgc3RyaW5nIGlzIHJldHVybmVkLgorICAgQHBhcmFtIFtpbl0gc3RhcnRPZmZz
ZXQKKyAgICBJbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIGluY2x1ZGUgaW4gdGhlIHJl
dHVybmVkIHN0cmluZy4gVGhlIHZhbGlkIHJhbmdlIAorICAgIGlzIDAuLmxlbmd0aC4KKyAgIEBw
YXJhbSBbaW5dIGVuZE9mZnNldAorICAgIEluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciB0byBl
eGNsdWRlIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuIFRoZSB2YWxpZCByYW5nZSAKKyAgICBpcyAw
Li5sZW5ndGguCisgICBAcGFyYW0gW291dF0gdGV4dAorICAgIFJldHVybnMgdGhlIHN1YnN0cmlu
ZyBzdGFydGluZyB3aXRoIHRoZSBjaGFyYWN0ZXIgYXQgc3RhcnRPZmZzZXQgKGluY2x1c2l2ZSkg
CisgICAgYW5kIHVwIHRvIHRoZSBjaGFyYWN0ZXIgYXQgZW5kT2Zmc2V0IChleGNsdXNpdmUpLCBp
ZiBzdGFydE9mZnNldCBpcyBsZXNzIHRoYW4gCisgICAgb3IgZXF1YWwgdG8gZW5kT2Zmc2V0Lgor
ICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNz
ZWQKKyAgIEBub3RlCisgICBAbGkgVGhlIHJldHVybmVkIHN0cmluZyBtYXkgYmUgbG9uZ2VyIHRo
YW4gZW5kT2Zmc2V0LXN0YXJ0T2Zmc2V0IGJ5dGVzIGlmIHRleHQgCisgICAgY29udGFpbnMgbXVs
dGktYnl0ZSBjaGFyYWN0ZXJzLgorICAgQGxpIFJlZmVyIHRvIEByZWYgX3NwZWNpYWxPZmZzZXRz
IAorICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFu
ZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiAKKyAgICBmb3IgaW5mb3JtYXRpb24g
YWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVzZWQgaW4gJUlBY2Nlc3NpYmxlVGV4
dCBtZXRob2RzLgorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCB0ZXh0CisgICAgKAorICAgICBb
aW5dIGxvbmcgc3RhcnRPZmZzZXQsCisgICAgIFtpbl0gbG9uZyBlbmRPZmZzZXQsCisgICAgIFtv
dXQsIHJldHZhbF0gQlNUUiAqdGV4dAorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIGEg
dGV4dCBwb3J0aW9uIGJlZm9yZSB0aGUgZ2l2ZW4gcG9zaXRpb24uCisgICAgCisgICBSZXR1cm5z
IHRoZSBzdWJzdHJpbmcgb2YgdGhlIHNwZWNpZmllZCB0ZXh0IHR5cGUgdGhhdCBpcyBsb2NhdGVk
IGJlZm9yZSB0aGUgCisgICAgZ2l2ZW4gY2hhcmFjdGVyIGFuZCBkb2VzIG5vdCBpbmNsdWRlIGl0
LiBUaGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kIHNob3VsZCBiZSAKKyAgICBzYW1lIGFzIGEgcmVz
dWx0IGZvciBJQWNjZXNzaWJsZVRleHQ6OnRleHRBdE9mZnNldCB3aXRoIGEgc3VpdGFibHkgZGVj
cmVhc2VkIAorICAgIGluZGV4IHZhbHVlLgorCisgICBGb3IgZXhhbXBsZSwgaWYgdGV4dCB0eXBl
IGlzIDo6SUEyX1RFWFRfQk9VTkRBUllfV09SRCwgdGhlbiB0aGUgY29tcGxldGUgCisgICAgd29y
ZCB0aGF0IGlzIGNsb3Nlc3QgdG8gYW5kIGxvY2F0ZWQgYmVmb3JlIG9mZnNldCBpcyByZXR1cm5l
ZC4KKworICAgSWYgdGhlIGluZGV4IGlzIHZhbGlkLCBidXQgbm8gdGV4dCBpcyBmb3VuZCwgU19G
QUxTRSBpcyByZXR1cm5lZCBhbG9uZyB3aXRoIG91dAorICAgIHZhbHVlcyBvZiAwLCAwLCBhbmQg
YSBOVUxMIHBvaW50ZXIuICBUaGlzIHdvdWxkIGhhcHBlbiBmb3IgYm91bmRhcnkgdHlwZXMgb3Ro
ZXIKKyAgICB0aGFuIGNoYXJhY3RlciB3aGVuIHRoZSB0ZXh0IGNvbnNpc3RzIGVudGlyZWx5IG9m
IHdoaXRlc3BhY2UuCisKKyAgIEBwYXJhbSBbaW5dIG9mZnNldAorICAgIEluZGV4IG9mIHRoZSBj
aGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgdGV4dCBwYXJ0IGJlZm9yZSBpdC4gIFRo
ZSBpbmRleCAKKyAgICBjaGFyYWN0ZXIgd2lsbCBub3QgYmUgcGFydCBvZiB0aGUgcmV0dXJuZWQg
c3RyaW5nLiBUaGUgdmFsaWQgcmFuZ2UgaXMgMC4ubGVuZ3RoLgorICAgIFJlZmVyIHRvIEByZWYg
X3NwZWNpYWxPZmZzZXRzIAorICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFj
Y2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiAKKyAgICBm
b3IgaW5mb3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVzZWQgaW4g
JUlBY2Nlc3NpYmxlVGV4dCBtZXRob2RzLgorICAgQHBhcmFtIFtpbl0gYm91bmRhcnlUeXBlCisg
ICAgVGhlIHR5cGUgb2YgdGhlIHRleHQgcG9ydGlvbiB0byByZXR1cm4uICBTZWUgOjpJQTJUZXh0
Qm91bmRhcnlUeXBlIGZvciB0aGUgCisgICAgY29tcGxldGUgbGlzdC4KKyAgIEBwYXJhbSBbb3V0
XSBzdGFydE9mZnNldAorICAgIDAgYmFzZWQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3Rlci4KKyAg
IEBwYXJhbSBbb3V0XSBlbmRPZmZzZXQKKyAgICAwIGJhc2VkIG9mZnNldCBvZiBvbmUgcGFzdCB0
aGUgbGFzdCBjaGFyYWN0ZXIuCisgICBAcGFyYW0gW291dF0gdGV4dAorICAgIFJldHVybnMgdGhl
IHJlcXVlc3RlZCB0ZXh0IHBvcnRpb24uICBUaGlzIHBvcnRpb24gbWF5IGJlIGVtcHR5IG9yIGlu
dmFsaWQgd2hlbiAKKyAgICBubyBhcHByb3ByaWF0ZSB0ZXh0IHBvcnRpb24gaXMgZm91bmQgb3Ig
dGV4dCB0eXBlIGlzIGludmFsaWQuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxT
RSBpZiB0aGUgcmVxdWVzdGVkIGJvdW5kYXJ5IHR5cGUgaXMgbm90IGltcGxlbWVudGVkLCBzdWNo
IGFzIAorICAgIDo6SUEyX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0UsIG9yIGlmIHRoZXJlIGlzIG5v
dGhpbmcgdG8gcmV0dXJuOyAKKyAgICBbb3V0XSB2YWx1ZXMgYXJlIDBzIGFuZCBOVUxMIHJlc3Bl
Y3RpdmVseSAKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZAorICAq
LworICBbcHJvcGdldF0gSFJFU1VMVCB0ZXh0QmVmb3JlT2Zmc2V0CisgICAgKAorICAgICBbaW5d
IGxvbmcgb2Zmc2V0LAorICAgICBbaW5dIGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwZSBib3VuZGFy
eVR5cGUsCisgICAgIFtvdXRdIGxvbmcgKnN0YXJ0T2Zmc2V0LAorICAgICBbb3V0XSBsb25nICpl
bmRPZmZzZXQsCisgICAgIFtvdXQsIHJldHZhbF0gQlNUUiAqdGV4dAorICAgICk7CisKKyAgLyoq
IEBicmllZiBSZXR1cm5zIGEgdGV4dCBwb3J0aW9uIGFmdGVyIHRoZSBnaXZlbiBwb3NpdGlvbi4K
KyAgICAKKyAgIFJldHVybnMgdGhlIHN1YnN0cmluZyBvZiB0aGUgc3BlY2lmaWVkIHRleHQgdHlw
ZSB0aGF0IGlzIGxvY2F0ZWQgYWZ0ZXIgdGhlIAorICAgIGdpdmVuIGNoYXJhY3RlciBhbmQgZG9l
cyBub3QgaW5jbHVkZSBpdC4gVGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBzaG91bGQgYmUgCisg
ICAgc2FtZSBhcyBhIHJlc3VsdCBmb3IgSUFjY2Vzc2libGVUZXh0Ojp0ZXh0QXRPZmZzZXQgd2l0
aCBhIHN1aXRhYmx5IGluY3JlYXNlZCAKKyAgICBpbmRleCB2YWx1ZS4KKworICAgRm9yIGV4YW1w
bGUsIGlmIHRleHQgdHlwZSBpcyA6OklBMl9URVhUX0JPVU5EQVJZX1dPUkQsIHRoZW4gdGhlIGNv
bXBsZXRlIAorICAgIHdvcmQgdGhhdCBpcyBjbG9zZXN0IHRvIGFuZCBsb2NhdGVkIGFmdGVyIG9m
ZnNldCBpcyByZXR1cm5lZC4KKworICAgSWYgdGhlIGluZGV4IGlzIHZhbGlkLCBidXQgbm8gdGV4
dCBpcyBmb3VuZCwgU19GQUxTRSBpcyByZXR1cm5lZCBhbG9uZyB3aXRoIG91dAorICAgIHZhbHVl
cyBvZiAwLCAwLCBhbmQgYSBOVUxMIHBvaW50ZXIuICBUaGlzIHdvdWxkIGhhcHBlbiBmb3IgYm91
bmRhcnkgdHlwZXMgb3RoZXIKKyAgICB0aGFuIGNoYXJhY3RlciB3aGVuIHRoZSB0ZXh0IGNvbnNp
c3RzIGVudGlyZWx5IG9mIHdoaXRlc3BhY2UuCisKKyAgIEBwYXJhbSBbaW5dIG9mZnNldAorICAg
IEluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgdGV4dCBwYXJ0
IGFmdGVyIGl0LiAgVGhlIGluZGV4IAorICAgIGNoYXJhY3RlciB3aWxsIG5vdCBiZSBwYXJ0IG9m
IHRoZSByZXR1cm5lZCBzdHJpbmcuIFRoZSB2YWxpZCByYW5nZSBpcyAwLi5sZW5ndGguCisgICAg
UmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgCisgICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3Ig
dXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1l
dGhvZHMiIAorICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBj
YW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVUZXh0IG1ldGhvZHMuCisgICBAcGFyYW0gW2luXSBi
b3VuZGFyeVR5cGUKKyAgICBUaGUgdHlwZSBvZiB0aGUgdGV4dCBwb3J0aW9uIHRvIHJldHVybi4g
IFNlZSA6OklBMlRleHRCb3VuZGFyeVR5cGUgZm9yIHRoZSBjb21wbGV0ZSAKKyAgICBsaXN0Lgor
ICAgQHBhcmFtIFtvdXRdIHN0YXJ0T2Zmc2V0CisgICAgMCBiYXNlZCBvZmZzZXQgb2YgZmlyc3Qg
Y2hhcmFjdGVyLgorICAgQHBhcmFtIFtvdXRdIGVuZE9mZnNldAorICAgIDAgYmFzZWQgb2Zmc2V0
IG9mIG9uZSBwYXN0IHRoZSBsYXN0IGNoYXJhY3Rlci4KKyAgIEBwYXJhbSBbb3V0XSB0ZXh0Cisg
ICAgUmV0dXJucyB0aGUgcmVxdWVzdGVkIHRleHQgcG9ydGlvbi4gIFRoaXMgcG9ydGlvbiBtYXkg
YmUgZW1wdHkgb3IgaW52YWxpZCB3aGVuIAorICAgIG5vIGFwcHJvcHJpYXRlIHRleHQgcG9ydGlv
biBpcyBmb3VuZCBvciB0ZXh0IHR5cGUgaXMgaW52YWxpZC4KKyAgIEByZXR2YWwgU19PSworICAg
QHJldHZhbCBTX0ZBTFNFIGlmIHRoZSByZXF1ZXN0ZWQgYm91bmRhcnkgdHlwZSBpcyBub3QgaW1w
bGVtZW50ZWQsIHN1Y2ggYXMgCisgICAgOjpJQTJfVEVYVF9CT1VOREFSWV9TRU5URU5DRSwgb3Ig
aWYgdGhlcmUgaXMgbm90aGluZyB0byByZXR1cm47IAorICAgIFtvdXRdIHZhbHVlcyBhcmUgMHMg
YW5kIE5VTEwgcmVzcGVjdGl2ZWx5IAorICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtp
bl0gcGFzc2VkCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHRleHRBZnRlck9mZnNldAorICAg
ICgKKyAgICAgW2luXSBsb25nIG9mZnNldCwKKyAgICAgW2luXSBlbnVtIElBMlRleHRCb3VuZGFy
eVR5cGUgYm91bmRhcnlUeXBlLAorICAgICBbb3V0XSBsb25nICpzdGFydE9mZnNldCwKKyAgICAg
W291dF0gbG9uZyAqZW5kT2Zmc2V0LAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKnRleHQKKyAg
ICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyBhIHRleHQgcG9ydGlvbiB0aGF0IHNwYW5zIHRo
ZSBnaXZlbiBwb3NpdGlvbi4KKworICAgUmV0dXJucyB0aGUgc3Vic3RyaW5nIGRlZmluZWQgYnkg
dGhlIHNwZWNpZmllZCBib3VuZGFyeSB0eXBlIGF0IHRoZSBzcGVjaWZpZWQKKyAgICBvZmZzZXQu
ICBSZWZlciB0byBJQTJUZXh0Qm91bmRhcnlUeXBlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIEZv
ciB0aGUgd29yZCBib3VuZGFyeSB0eXBlIHRoZSByZXR1cm5lZCBzdHJpbmcgd2lsbCBjb250YWlu
IHRoZSB3b3JkIGF0IHRoZQorICAgIG9mZnNldCBpZiB0aGUgb2Zmc2V0IGlzIGluc2lkZSBhIHdv
cmQgYW5kIHdpbGwgY29udGFpbiB0aGUgd29yZCBiZWZvcmUgdGhlCisgICAgb2Zmc2V0IGlmIHRo
ZSBvZmZzZXQgaXMgbm90IGluc2lkZSBhIHdvcmQuICBBbGwgb2Zmc2V0cyBmcm9tIHRoZSBmaXJz
dCB0byB0aGUKKyAgICBsYXN0IGNoYXJhY3RlcnMgb2YgYSB3b3JkIGFyZSBjb25zaWRlcmVkIGlu
c2lkZSB0aGUgd29yZC4gIEJvdW5kYXJ5IHR5cGVzIG9mCisgICAgc2VudGVuY2UgYW5kIHBhcmFn
cmFwaCBzaG91bGQgZXhoaWJpdCBzaW1pbGFyIGJlaGF2aW9yLgorCisgICBJZiB0aGUgaW5kZXgg
aXMgdmFsaWQsIGJ1dCBubyB0ZXh0IGlzIGZvdW5kLCBTX0ZBTFNFIGlzIHJldHVybmVkIGFsb25n
IHdpdGggb3V0CisgICAgdmFsdWVzIG9mIDAsIDAsIGFuZCBhIE5VTEwgcG9pbnRlci4gIFRoaXMg
d291bGQgaGFwcGVuIGZvciBib3VuZGFyeSB0eXBlcyBvdGhlcgorICAgIHRoYW4gY2hhcmFjdGVy
IHdoZW4gdGhlIHRleHQgY29uc2lzdHMgZW50aXJlbHkgb2Ygd2hpdGVzcGFjZS4KKworICAgQHBh
cmFtIFtpbl0gb2Zmc2V0CisgICAgSW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb3Igd2hpY2ggdG8g
cmV0dXJuIHRoZSB0ZXh0IHBhcnQgaXQgYmVsb25ncyB0by4gIFRoZSB2YWxpZAorICAgIHJhbmdl
IGlzIDAuLmxlbmd0aC4KKyAgICBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyAKKyAgICAi
U3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vz
c2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNw
ZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZVRleHQgbWV0aG9k
cy4KKyAgIEBwYXJhbSBbaW5dIGJvdW5kYXJ5VHlwZQorICAgIFRoZSB0eXBlIG9mIHRoZSB0ZXh0
IHBvcnRpb24gdG8gcmV0dXJuLiAgU2VlIDo6SUEyVGV4dEJvdW5kYXJ5VHlwZSBmb3IgdGhlIGNv
bXBsZXRlIAorICAgIGxpc3QuCisgICBAcGFyYW0gW291dF0gc3RhcnRPZmZzZXQKKyAgICAwIGJh
c2VkIG9mZnNldCBvZiBmaXJzdCBjaGFyYWN0ZXIuCisgICBAcGFyYW0gW291dF0gZW5kT2Zmc2V0
CisgICAgMCBiYXNlZCBvZmZzZXQgb2Ygb25lIHBhc3QgdGhlIGxhc3QgY2hhcmFjdGVyLgorICAg
QHBhcmFtIFtvdXRdIHRleHQKKyAgICBSZXR1cm5zIHRoZSByZXF1ZXN0ZWQgdGV4dCBwb3J0aW9u
LiAgVGhpcyBwb3J0aW9uIG1heSBiZSBlbXB0eSBvciBpbnZhbGlkIHdoZW4gCisgICAgbm8gYXBw
cm9wcmlhdGUgdGV4dCBwb3J0aW9uIGlzIGZvdW5kIG9yIHRleHQgdHlwZSBpcyBpbnZhbGlkLgor
ICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlIHJlcXVlc3RlZCBib3Vu
ZGFyeSB0eXBlIGlzIG5vdCBpbXBsZW1lbnRlZCwgc3VjaCBhcyAKKyAgICA6OklBMl9URVhUX0JP
VU5EQVJZX1NFTlRFTkNFLCBvciBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybjsgCisgICAg
W291dF0gdmFsdWVzIGFyZSAwcyBhbmQgTlVMTCByZXNwZWN0aXZlbHkgCisgICBAcmV0dmFsIEVf
SU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQg
dGV4dEF0T2Zmc2V0CisgICAgKAorICAgICBbaW5dIGxvbmcgb2Zmc2V0LAorICAgICBbaW5dIGVu
dW0gSUEyVGV4dEJvdW5kYXJ5VHlwZSBib3VuZGFyeVR5cGUsCisgICAgIFtvdXRdIGxvbmcgKnN0
YXJ0T2Zmc2V0LAorICAgICBbb3V0XSBsb25nICplbmRPZmZzZXQsCisgICAgIFtvdXQsIHJldHZh
bF0gQlNUUiAqdGV4dAorICAgICk7CisKKyAgLyoqIEBicmllZiBVbnNlbGVjdHMgYSByYW5nZSBv
ZiB0ZXh0LgorICAgQHBhcmFtIFtpbl0gc2VsZWN0aW9uSW5kZXgKKyAgICBJbmRleCBvZiBzZWxl
Y3Rpb24gdG8gcmVtb3ZlICgwIGJhc2VkKS4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBF
X0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICovCisgIEhSRVNVTFQgcmVtb3ZlU2Vs
ZWN0aW9uCisgICAgKAorICAgICBbaW5dIGxvbmcgc2VsZWN0aW9uSW5kZXgKKyAgICApOworCisg
IC8qKiBAYnJpZWYgU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcmV0LgorCisgICBUaGUgY2Fy
ZXQgcG9zaXRpb24vb2Zmc2V0IGlzIHRoYXQgb2YgdGhlIGNoYXJhY3RlciBsb2dpY2FsbHkgZm9s
bG93aW5nIGl0LAorICAgZS5nLiB0byB0aGUgcmlnaHQgb2YgaXQgaW4gYSBsZWZ0IHRvIHJpZ2h0
IGxhbmd1YWdlLgorCisgICBTZXR0aW5nIHRoZSBjYXJldCBwb3NpdGlvbiBtYXkgb3IgbWF5IG5v
dCBhbHRlciB0aGUgY3VycmVudCBzZWxlY3Rpb24uICBBIAorICAgIGNoYW5nZSBvZiB0aGUgc2Vs
ZWN0aW9uIGlzIG5vdGlmaWVkIHRvIHRoZSBhY2Nlc3NpYmlsaXR5IGV2ZW50IGxpc3RlbmVycyB3
aXRoIAorICAgIGFuIDo6SUEyX0VWRU5UX1RFWFRfU0VMRUNUSU9OX0NIQU5HRUQgZXZlbnQuCisK
KyAgIFdoZW4gdGhlIG5ldyBjYXJldCBwb3NpdGlvbiBkaWZmZXJzIGZyb20gdGhlIG9sZCBvbmUg
KHdoaWNoLCBvZiBjb3Vyc2UsIGlzIHRoZSAKKyAgICBzdGFuZGFyZCBjYXNlKSB0aGlzIGlzIG5v
dGlmaWVkIHRvIHRoZSBhY2Nlc3NpYmlsaXR5IGV2ZW50IGxpc3RlbmVycyB3aXRoIGFuCisgICAg
OjpJQTJfRVZFTlRfVEVYVF9DQVJFVF9NT1ZFRCBldmVudC4KKyAgIEBwYXJhbSBbaW5dIG9mZnNl
dAorICAgIFRoZSBuZXcgaW5kZXggb2YgdGhlIGNhcmV0LiAgVGhpcyBjYXJldCBpcyBhY3R1YWxs
eSBwbGFjZWQgdG8gdGhlIGxlZnQgc2lkZSBvZiAKKyAgICB0aGUgY2hhcmFjdGVyIHdpdGggdGhh
dCBpbmRleC4gIEFuIGluZGV4IG9mIDAgcGxhY2VzIHRoZSBjYXJldCBzbyB0aGF0IHRoZSBuZXh0
IAorICAgIGluc2VydGlvbiBnb2VzIGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgQW4gaW5k
ZXggb2YgSUFjY2Vzc2libGVUZXh0OjpuQ2hhcmFjdGVycyAKKyAgICBsZWFkcyB0byBpbnNlcnRp
b24gYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyLiAgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNl
dHMgCisgICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQg
YW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIAorICAgIGZvciBpbmZvcm1hdGlv
biBhYm91dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBjYW4gYmUgdXNlZCBpbiAlSUFjY2Vzc2libGVU
ZXh0IG1ldGhvZHMuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9GQUlMIGlmIHRoZSBj
YXJldCBjYW5ub3QgYmUgc2V0CisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBw
YXNzZWQKKyAgKi8KKyAgSFJFU1VMVCBzZXRDYXJldE9mZnNldAorICAgICgKKyAgICAgW2luXSBs
b25nIG9mZnNldAorICAgICk7CisKKyAgLyoqIEBicmllZiBDaGFuZ2VzIHRoZSBib3VuZHMgb2Yg
YW4gZXhpc3Rpbmcgc2VsZWN0aW9uLgorICAgQHBhcmFtIFtpbl0gc2VsZWN0aW9uSW5kZXgKKyAg
ICBJbmRleCBvZiBzZWxlY3Rpb24gdG8gY2hhbmdlICgwIGJhc2VkKQorICAgQHBhcmFtIFtpbl0g
c3RhcnRPZmZzZXQKKyAgICBOZXcgc3RhcnRpbmcgb2Zmc2V0ICgwIGJhc2VkKQorICAgQHBhcmFt
IFtpbl0gZW5kT2Zmc2V0CisgICAgTmV3IGVuZGluZyBvZmZzZXQgKDAgYmFzZWQpIC0gdGhlIG9m
ZnNldCBvZiB0aGUgY2hhcmFjdGVyIGp1c3QgcGFzdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhl
IHNlbGVjdGlvbi4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYg
YmFkIFtpbl0gcGFzc2VkCisgICBAbm90ZSBSZWZlciB0byBAcmVmIF9zcGVjaWFsT2Zmc2V0cyAK
KyAgICAiU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQg
SUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgICAgZm9yIGluZm9ybWF0aW9uIGFi
b3V0IHNwZWNpYWwgb2Zmc2V0cyB0aGF0IGNhbiBiZSB1c2VkIGluICVJQWNjZXNzaWJsZVRleHQg
bWV0aG9kcy4KKyAgKi8KKyAgSFJFU1VMVCBzZXRTZWxlY3Rpb24KKyAgICAoCisgICAgIFtpbl0g
bG9uZyBzZWxlY3Rpb25JbmRleCwKKyAgICAgW2luXSBsb25nIHN0YXJ0T2Zmc2V0LAorICAgICBb
aW5dIGxvbmcgZW5kT2Zmc2V0CisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdG90YWwg
bnVtYmVyIG9mIGNoYXJhY3RlcnMuCisKKyAgIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBkaWZmZXJl
bnQgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIHRoZSAK
KyAgICB0ZXh0LCBpZiB0aGUgdGV4dCBjb250YWlucyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuCisg
ICBAcGFyYW0gW291dF0gbkNoYXJhY3RlcnMKKyAgIEByZXR2YWwgU19PSworICAqLworICBbcHJv
cGdldF0gSFJFU1VMVCBuQ2hhcmFjdGVycworICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBsb25n
ICpuQ2hhcmFjdGVycworICAgICk7CisKKyAgLyoqIEBicmllZiBNYWtlcyBhIHNwZWNpZmljIHBh
cnQgb2Ygc3RyaW5nIHZpc2libGUgb24gc2NyZWVuLgorICAgQHBhcmFtIFtpbl0gc3RhcnRJbmRl
eAorICAgIDAgYmFzZWQgY2hhcmFjdGVyIG9mZnNldC4KKyAgIEBwYXJhbSBbaW5dIGVuZEluZGV4
CisgICAgMCBiYXNlZCBjaGFyYWN0ZXIgb2Zmc2V0IC0gdGhlIG9mZnNldCBvZiB0aGUgY2hhcmFj
dGVyIGp1c3QgcGFzdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZy4KKyAgIEBwYXJh
bSBbaW5dIHNjcm9sbFR5cGUKKyAgICBEZWZpbmVzIHdoZXJlIHRoZSBvYmplY3Qgc2hvdWxkIGJl
IHBsYWNlZCBvbiB0aGUgc2NyZWVuLgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIEVfSU5W
QUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAgIEBub3RlIFJlZmVyIHRvIEByZWYgX3NwZWNp
YWxPZmZzZXRzIAorICAgICJTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2li
bGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiAKKyAgICBmb3IgaW5m
b3JtYXRpb24gYWJvdXQgc3BlY2lhbCBvZmZzZXRzIHRoYXQgY2FuIGJlIHVzZWQgaW4gJUlBY2Nl
c3NpYmxlVGV4dCBtZXRob2RzLgorICAqLworICBIUkVTVUxUIHNjcm9sbFN1YnN0cmluZ1RvCisg
ICAgKAorICAgICBbaW5dIGxvbmcgc3RhcnRJbmRleCwKKyAgICAgW2luXSBsb25nIGVuZEluZGV4
LAorICAgICBbaW5dIGVudW0gSUEyU2Nyb2xsVHlwZSBzY3JvbGxUeXBlCisgICAgKTsKKworICAv
KiogQGJyaWVmIE1vdmVzIHRoZSB0b3AgbGVmdCBvZiBhIHN1YnN0cmluZyB0byBhIHNwZWNpZmll
ZCBsb2NhdGlvbi4KKworICAgQHBhcmFtIFtpbl0gc3RhcnRJbmRleAorICAgIDAgYmFzZWQgY2hh
cmFjdGVyIG9mZnNldC4KKyAgIEBwYXJhbSBbaW5dIGVuZEluZGV4CisgICAgMCBiYXNlZCBjaGFy
YWN0ZXIgb2Zmc2V0IC0gdGhlIG9mZnNldCBvZiB0aGUgY2hhcmFjdGVyIGp1c3QgcGFzdCB0aGUg
bGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZy4KKyAgIEBwYXJhbSBbaW5dIGNvb3JkaW5hdGVU
eXBlCisgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0
byB0aGUgc2NyZWVuIG9yIHRoZSBwYXJlbnQgb2JqZWN0LgorICAgQHBhcmFtIFtpbl0geAorICAg
IERlZmluZXMgdGhlIHggY29vcmRpbmF0ZS4KKyAgIEBwYXJhbSBbaW5dIHkKKyAgICBEZWZpbmVz
IHRoZSB5IGNvb3JkaW5hdGUuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBp
ZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4KKyAgIEBy
ZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZAorICAgQG5vdGUgUmVmZXIgdG8g
QHJlZiBfc3BlY2lhbE9mZnNldHMgCisgICAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRo
ZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIAor
ICAgIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWFsIG9mZnNldHMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiAlSUFjY2Vzc2libGVUZXh0IG1ldGhvZHMuCisgICovCisgIEhSRVNVTFQgc2Nyb2xsU3Vi
c3RyaW5nVG9Qb2ludAorICAgICgKKyAgICAgW2luXSBsb25nIHN0YXJ0SW5kZXgsCisgICAgIFtp
bl0gbG9uZyBlbmRJbmRleCwKKyAgICAgW2luXSBlbnVtIElBMkNvb3JkaW5hdGVUeXBlIGNvb3Jk
aW5hdGVUeXBlLAorICAgICBbaW5dIGxvbmcgeCwKKyAgICAgW2luXSBsb25nIHkgCisgICAgKTsK
KworICAvKiogQGJyaWVmIFJldHVybnMgYW55IGluc2VydGVkIHRleHQuCisKKyAgIFByb3ZpZGVk
IGZvciB1c2UgYnkgdGhlIDo6SUEyX0VWRU5UX1RFWFRfSU5TRVJURUQgYW5kIDo6SUEyX0VWRU5U
X1RFWFRfVVBEQVRFRCAKKyAgICBldmVudCBoYW5kbGVycy4KKworICAgVGhpcyBkYXRhIGlzIG9u
bHkgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB3aGlsZSB0aGUgdGhyZWFkIG5vdGlmeWluZyB0aGUg
ZXZlbnQgCisgICBjb250aW51ZXMuIE9uY2UgdGhlIGhhbmRsZXIgaGFzIHJldHVybmVkLCB0aGUg
dmFsaWRpdHkgb2YgdGhlIGRhdGEgZGVwZW5kcyBvbiAKKyAgIGhvdyB0aGUgc2VydmVyIG1hbmFn
ZXMgdGhlIGxpZmUgY3ljbGUgb2YgaXRzIG9iamVjdHMuIEFsc28sIG5vdGUgdGhhdCB0aGUgc2Vy
dmVyIAorICAgbWF5IGhhdmUgZGlmZmVyZW50IGxpZmUgY3ljbGUgbWFuYWdlbWVudCBzdHJhdGVn
aWVzIGZvciBjb250cm9scyBkZXBlbmRpbmcgb24gCisgICB3aGV0aGVyIG9yIG5vdCBhIGNvbnRy
b2wgbWFuYWdlcyBpdHMgY2hpbGRyZW4uIExpc3RzLCB0cmVlcywgYW5kIHRhYmxlcyBjYW4gaGF2
ZSAKKyAgIGEgbGFyZ2UgbnVtYmVyIG9mIGNoaWxkcmVuIGFuZCB0aHVzIGl0J3MgcG9zc2libGUg
dGhhdCB0aGUgY2hpbGQgb2JqZWN0cyBmb3IgdGhvc2UgCisgICBjb250cm9scyB3b3VsZCBvbmx5
IGJlIGNyZWF0ZWQgYXMgbmVlZGVkLiBTZXJ2ZXJzIHNob3VsZCBkb2N1bWVudCB0aGVpciBsaWZl
IGN5Y2xlIAorICAgc3RyYXRlZ3kgYXMgdGhpcyB3aWxsIGJlIG9mIGludGVyZXN0IHRvIGFzc2lz
dGl2ZSB0ZWNobm9sb2d5IG9yIHNjcmlwdCBlbmdpbmVzIAorICAgYWNjZXNzaW5nIGRhdGEgb3V0
IG9mIHByb2Nlc3Mgb3IgZnJvbSBvdGhlciB0aHJlYWRzLiBTZXJ2ZXJzIG9ubHkgbmVlZCB0byBz
YXZlIHRoZSAKKyAgIGxhc3QgaW5zZXJ0ZWQgYmxvY2sgb2YgdGV4dCBhbmQgYSBzY29wZSBvZiB0
aGUgZW50aXJlIGFwcGxpY2F0aW9uIGlzIGFkZXF1YXRlLgorCisgICBAcGFyYW0gW291dF0gbmV3
VGV4dAorICAgIFRoZSB0ZXh0IHRoYXQgd2FzIGp1c3QgaW5zZXJ0ZWQuCisgICBAcmV0dmFsIFNf
T0sKKyAgIEByZXR2YWwgU19GQUxTRSBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiwgdGhl
IHZhbHVlcyBvZiBJQTJUZXh0U2VnbWVudAorICAgIHN0cnVjdCBhcmUgc2V0IGFzIGZvbGxvd3M6
ICB0ZXh0ID0gTlVMTCwgc3RhcnQgPSAwLCBlbmQgPSAwLgorCisgICovCisgIFtwcm9wZ2V0XSBI
UkVTVUxUIG5ld1RleHQKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gSUEyVGV4dFNlZ21lbnQg
Km5ld1RleHQKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyBhbnkgcmVtb3ZlZCB0ZXh0
LgorCisgICBQcm92aWRlZCBmb3IgdXNlIGJ5IHRoZSBJQTJfRVZFTlRfVEVYVF9SRU1PVkVEL1VQ
REFURUQgZXZlbnQgaGFuZGxlcnMuCisgICAKKyAgIFRoaXMgZGF0YSBpcyBvbmx5IGd1YXJhbnRl
ZWQgdG8gYmUgdmFsaWQgd2hpbGUgdGhlIHRocmVhZCBub3RpZnlpbmcgdGhlIGV2ZW50IAorICAg
Y29udGludWVzLiBPbmNlIHRoZSBoYW5kbGVyIGhhcyByZXR1cm5lZCwgdGhlIHZhbGlkaXR5IG9m
IHRoZSBkYXRhIGRlcGVuZHMgb24gCisgICBob3cgdGhlIHNlcnZlciBtYW5hZ2VzIHRoZSBsaWZl
IGN5Y2xlIG9mIGl0cyBvYmplY3RzLiBBbHNvLCBub3RlIHRoYXQgdGhlIHNlcnZlciAKKyAgIG1h
eSBoYXZlIGRpZmZlcmVudCBsaWZlIGN5Y2xlIG1hbmFnZW1lbnQgc3RyYXRlZ2llcyBmb3IgY29u
dHJvbHMgZGVwZW5kaW5nIG9uIAorICAgd2hldGhlciBvciBub3QgYSBjb250cm9sIG1hbmFnZXMg
aXRzIGNoaWxkcmVuLiBMaXN0cywgdHJlZXMsIGFuZCB0YWJsZXMgY2FuIGhhdmUgCisgICBhIGxh
cmdlIG51bWJlciBvZiBjaGlsZHJlbiBhbmQgdGh1cyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNo
aWxkIG9iamVjdHMgZm9yIHRob3NlIAorICAgY29udHJvbHMgd291bGQgb25seSBiZSBjcmVhdGVk
IGFzIG5lZWRlZC4gU2VydmVycyBzaG91bGQgZG9jdW1lbnQgdGhlaXIgbGlmZSBjeWNsZSAKKyAg
IHN0cmF0ZWd5IGFzIHRoaXMgd2lsbCBiZSBvZiBpbnRlcmVzdCB0byBhc3Npc3RpdmUgdGVjaG5v
bG9neSBvciBzY3JpcHQgZW5naW5lcyAKKyAgIGFjY2Vzc2luZyBkYXRhIG91dCBvZiBwcm9jZXNz
IG9yIGZyb20gb3RoZXIgdGhyZWFkcy4gU2VydmVycyBvbmx5IG5lZWQgdG8gc2F2ZSB0aGUgCisg
ICBsYXN0IHJlbW92ZWQgYmxvY2sgb2YgdGV4dCBhbmQgYSBzY29wZSBvZiB0aGUgZW50aXJlIGFw
cGxpY2F0aW9uIGlzIGFkZXF1YXRlLgorCisgICBAcGFyYW0gW291dF0gb2xkVGV4dAorICAgIFRo
ZSB0ZXh0IHRoYXQgd2FzIGp1c3QgcmVtb3ZlZC4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZh
bCBTX0ZBTFNFIElmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCB0aGUgdmFsdWVzIG9mIElB
MlRleHRTZWdtZW50CisgICAgc3RydWN0IGFyZSBzZXQgYXMgZm9sbG93czogIHRleHQgPSBOVUxM
LCBzdGFydCA9IDAsIGVuZCA9IDAuCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIG9sZFRleHQK
KyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gSUEyVGV4dFNlZ21lbnQgKm9sZFRleHQKKyAgICAp
OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcAkocmV2
aXNpb24gMTg4NjM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVz
a3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBOb3RpZmljYXRpb25DT01XcmFwcGVyKiBjcmVhdGUo
Tm90aWZpY2F0aW9uKiBpbm5lcikgeyByZXR1cm4gbmV3IE5vdGlmaWNhdGlvbkNPTVdyYXBwZXIo
aW5uZXIpOyB9CiAgICAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVj
dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKICAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOwogICAgIHZpcnR1YWwgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCkBAIC02NSw5ICs2NSwxMSBAQCBwcml2
YXRlOgogICAgIE5vdGlmaWNhdGlvbiogbV9pbm5lcjsKIH07CiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgTm90aWZpY2F0aW9uQ09NV3JhcHBlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIE5vdGlmaWNhdGlvbkNPTVdyYXBwZXI6OlF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJ
c0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ09NV3JhcHBlcio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElz
RXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViRGVza3RvcE5vdGlmaWNhdGlvbikpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAJKHJldmlzaW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDkgKzY5LDkgQEAgcHVi
bGljOgogICAgIFdlYkVkaXRvclVuZG9UYXJnZXQoKTsKIAogICAgIC8vIElVbmtub3duCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJl
bGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8gSVdlYlVu
ZG9UYXJnZXQKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW52b2tlKCAK
QEAgLTg3LDkgKzg3LDExIEBAIFdlYkVkaXRvclVuZG9UYXJnZXQ6OldlYkVkaXRvclVuZG9UYXJn
ZXQKIHsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFZGl0b3JVbmRvVGFyZ2V0
OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQg
V2ViRWRpdG9yVW5kb1RhcmdldDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAg
aWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVj
dCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAg
ICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViVW5kb1RhcmdldCo+KHRoaXMpOwog
ICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViVW5kb1RhcmdldCkpCkBAIC0x
MDEsNyArMTAzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJFZGl0b3JVbmRvVAog
ICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJFZGl0b3JV
bmRvVGFyZ2V0OjpBZGRSZWYodm9pZCkKK1VMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkVkaXRv
clVuZG9UYXJnZXQ6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0KQEAg
LTUxMCw5ICs1MTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGVjdXRlKCk7CiAKICAgICAvLyBJ
VW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRS
ZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAog
cHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50OwpAQCAtNTM1LDkgKzUzNywxMSBAQCB2b2lk
IFdlYkVkaXRvclVuZG9Db21tYW5kOjpleGVjdXRlKCkKICAgICAgICAgbV9zdGVwLT5yZWFwcGx5
KCk7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRWRpdG9yVW5kb0NvbW1hbmQ6
OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBX
ZWJFZGl0b3JVbmRvQ29tbWFuZDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAg
aWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVj
dCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAg
ICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViVW5kb0NvbW1hbmQqPih0aGlzKTsK
ICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlVuZG9Db21tYW5kKSkKQEAg
LTU0OSw3ICs1NTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkVkaXRvclVuZG9D
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkVkaXRv
clVuZG9Db21tYW5kOjpBZGRSZWYodm9pZCkKK1VMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkVk
aXRvclVuZG9Db21tYW5kOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291bnQ7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxODg2MzgpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1hdHQgTGls
ZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRGVsZWdhdGUuaCIK
IAogV2ViSW5zcGVjdG9yRGVsZWdhdGU6OldlYkluc3BlY3RvckRlbGVnYXRlKCkKLSAgICA6bV9y
ZWZDb3VudCgwKQogewogfQogCkBAIC00MSwxMiArNDAsMjAgQEAgV2ViSW5zcGVjdG9yRGVsZWdh
dGUqIFdlYkluc3BlY3RvckRlbGVnYQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yRGVsZWdhdGU6OkFkZFJlZigpCitIUkVTVUxU
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlELCBfQ09NX091dHB0cl8gdm9pZCoqIHJlc3VsdCkK
K3sKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVz
dWx0ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfTsKKworVUxPTkcgV2ViSW5z
cGVjdG9yRGVsZWdhdGU6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0K
IAotVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yRGVsZWdhdGU6OlJlbGVhc2Uo
KQorVUxPTkcgV2ViSW5zcGVjdG9yRGVsZWdhdGU6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5l
d1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTU1LDEyICs2Miw0NCBA
QCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3JEZWxlCiAgICAgcmV0dXJuIG5l
d1JlZjsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3JEZWxlZ2F0
ZTo6ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbygKLSAgICAvKiBbaW5d
ICovIElXZWJWaWV3KiwKLSAgICAvKiBbaW5dICovIElEYXRhT2JqZWN0KiwKLSAgICAvKiBbcmV0
dmFsXVtvdXRdICovIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiogYWN0aW9uKQorSFJFU1VMVCBX
ZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5n
SW5mbyhfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiwgX091dF8gV2Vi
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKiBhY3Rpb24pCiB7CisgICAgaWYgKCFhY3Rpb24pCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICAqYWN0aW9uID0gV2ViRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTm9uZTsKIAogICAgIHJldHVybiBTX09LOwogfQorCitIUkVTVUxUIFdlYkluc3BlY3Rv
ckRlbGVnYXRlOjpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QoX0luX29wdF8gSVdlYlZpZXcqLCBf
SW5fb3B0XyBJV2ViVVJMUmVxdWVzdCosIF9DT01fT3V0cHRyX29wdF8gSVdlYlZpZXcqKiB3ZWJW
aWV3KQoreworICAgIGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqd2ViVmlldyA9IG51bGxwdHI7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VM
VCBXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKF9Jbl9v
cHRfIElXZWJWaWV3KiwgV2ViRHJhZ1NvdXJjZUFjdGlvbiwgX0luXyBMUFBPSU5ULCBfSW5fb3B0
XyBJRGF0YU9iamVjdCosIF9DT01fT3V0cHRyX29wdF8gSURhdGFPYmplY3QqKiBkYXRhT2JqZWN0
KQoreworICAgIGlmICghZGF0YU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqZGF0YU9iamVjdCA9IG51bGxwdHI7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJF
U1VMVCBXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6Y3JlYXRlTW9kYWxEaWFsb2coX0luX29wdF8gSVdl
YlZpZXcqLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCosIF9DT01fT3V0cHRyX29wdF8gSVdlYlZp
ZXcqKiBkaWFsb2cpCit7CisgICAgaWYgKCFkaWFsb2cpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisgICAgKmRpYWxvZyA9IG51bGxwdHI7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKwor
SFJFU1VMVCBXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6ZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZShfQ09NX091dHB0cl9vcHRfIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKiogbm90
aWZpY2F0aW9uRGVsZWdhdGUpCit7CisgICAgaWYgKCFub3RpZmljYXRpb25EZWxlZ2F0ZSkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqbm90aWZpY2F0aW9uRGVsZWdhdGUgPSBudWxs
cHRyOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckRlbGVnYXRlLmgJKHJldmlz
aW9uIDE4ODYzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwyNzAgKzM5LDE1OCBAQCBwdWJsaWM6
CiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFk
ZFJlZigpOwogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJ
SUQsIHZvaWQqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9OworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCwgX0NPTV9PdXRwdHJf
IHZvaWQqKik7CiAKICAgICAvLyBJV2ViVUlEZWxlZ2F0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0gICAgICAgIC8qIFtpbl0gKi8gSURh
dGFPYmplY3QqLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiogYWN0aW9uKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbyhfSW5fb3B0XyBJV2ViVmll
dyosIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiwgX091dF8gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Kik7CiAKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KCAKLSAgICAgICAgLyogW2luXSAq
LyBJV2ViVmlldyosCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QqLAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJWaWV3KiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTaG93KCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdDbG9zZSggCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9jdXMoIAotICAgICAgICAvKiBb
aW5dICovIElXZWJWaWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgSFdO
RCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG1ha2VGaXJzdFJlc3BvbmRlcihJV2ViVmlldyosIEhXTkQpIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFN0
YXR1c1RleHQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U3RhdHVzVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcqLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqKSB7IHJldHVybiBF
X05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJW
aWV3QXJlVG9vbGJhcnNWaXNpYmxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRvb2xiYXJzVmlzaWJs
ZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBbaW5dICovIEJP
T0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlZpZXdJc1N0YXR1c0JhclZpc2libGUoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3KiwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
U3RhdHVzQmFyVmlzaWJsZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAg
ICAvKiBbaW5dICovIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdJc1Jlc2l6YWJsZSggCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRSZXNpemFibGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcqLAotICAgICAgICAvKiBbaW5dICovIFJFQ1QqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3RnJhbWUo
IAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Q29udGVudFJlY3QoIAotICAgICAgICAvKiBbaW5dICovIElX
ZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0NvbnRlbnRS
ZWN0KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2Uo
IAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBCU1RS
KSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoIAotICAgICAgICAv
KiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWxXaXRoUHJvbXB0KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0gICAgICAgIC8q
IFtpbl0gKi8gQlNUUiAvKm1lc3NhZ2UqLywKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qZGVm
YXVsdFRleHQqLywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbWVzc2FnZSovLAotICAgICAg
ICAvKiBbaW5dICovIElXZWJGcmFtZSogIC8qaW5pdGlhdGVkQnlGcmFtZSovLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9u
V2l0aFJlc3VsdExpc3RlbmVyKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAg
ICAgLyogW2luXSAqLyBJUHJvcGVydHlCYWcqLAotICAgICAgICAvKiBbaW5dICovIFVJTlQgLypt
b2RpZmllckZsYWdzKi8pIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KElXZWJWaWV3
KiwgSVByb3BlcnR5QmFnKiwgSE1FTlUsIEhNRU5VKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmFsaWRhdGVVc2VySW50ZXJm
YWNlSXRlbSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBbaW5d
ICovIFVJTlQsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkUGVyZm9ybUFjdGlvbiggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBbaW5dICovIFVJTlQgLyppdGVtQ29tbWFuZElE
Ki8sCi0gICAgICAgIC8qIFtpbl0gKi8gVUlOVCAvKnNlbmRlciovKSB7IHJldHVybiBFX05PVElN
UEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbiggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAot
ICAgICAgICAvKiBbaW5dICovIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwKLSAgICAgICAgLyog
W2luXSAqLyBJRGF0YU9iamVjdCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQo
IAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBMUFBP
SU5ULAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFdlYkRyYWdTb3VyY2VBY3Rpb24qKSB7
IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oIAotICAgICAgICAvKiBbaW5dICovIElX
ZWJWaWV3KiwKLSAgICAgICAgLyogW2luXSAqLyBXZWJEcmFnU291cmNlQWN0aW9uLAotICAgICAg
ICAvKiBbaW5dICovIExQUE9JTlQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURhdGFPYmplY3QqLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElEYXRhT2JqZWN0KiopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0gICAgICAg
IC8qIFtpbl0gKi8gdm9pZCogIC8qaXRlbSovLAotICAgICAgICAvKiBbaW5dICovIElQcm9wZXJ0
eUJhZyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1lbnRhdGlvbiggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KC8qIFtpbl0g
Ki8gSVdlYlZpZXcqLCAvKiBbaW5dICovIEhNRU5VLCAvKiBbaW5dICovIExQUE9JTlQpIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG1lYXN1cmVDdXN0b21NZW51SXRlbSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAot
ICAgICAgICAvKiBbaW5dICovIHZvaWQqICAvKm1lYXN1cmVJdGVtKi8pIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdDdXN0
b21NZW51SXRlbSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAotICAgICAgICAvKiBb
aW5dICovIHZvaWQqICAvKmRyYXdJdGVtKi8pIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0
YSgvKiBbaW5dICovIElXZWJWaWV3KiwgLyogW2luXSAqLyBITUVOVSkgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xlYW5VcEN1
c3RvbU1lbnVEcmF3aW5nRGF0YSgvKiBbaW5dICovIElXZWJWaWV3KiwgLyogW2luXSAqLyBITUVO
VSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2FuVGFrZUZvY3VzKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyosCi0g
ICAgICAgIC8qIFtpbl0gKi8gQk9PTCAvKmZvcndhcmQqLywKLSAgICAgICAgLyogW291dF0gKi8g
Qk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRha2VGb2N1cyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqLAot
ICAgICAgICAvKiBbaW5dICovIEJPT0wgLypmb3J3YXJkKi8pIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlZ2lzdGVyVW5kb1dp
dGhUYXJnZXQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJVbmRvVGFyZ2V0KiwKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIC8qYWN0aW9uTmFtZSovLAotICAgICAgICAvKiBbaW5dICovIElVbmtu
b3duKiAgLyphY3Rpb25BcmcqLykgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQWxsQWN0aW9uc1dpdGhUYXJnZXQoIAot
ICAgICAgICAvKiBbaW5dICovIElXZWJVbmRvVGFyZ2V0KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWN0aW9uVGl0bGUo
IAotICAgICAgICAvKiBbaW5dICovIEJTVFIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVuZG8oKSB7IHJldHVybiBFX05PVElN
UEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWRvKCkgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2FuVW5kbyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNh
blJlZG8oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqKSB7IHJldHVybiBFX05P
VElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmludEZy
YW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZnRwRGlyZWN0b3J5VGVtcGxhdGVQ
YXRoKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICpwYXRoKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0hlYWRlckhlaWdo
dCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gZmxvYXQgKnJlc3VsdCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGb290ZXJIZWln
aHQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIGZsb2F0ICpyZXN1bHQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3SGVhZGVySW5SZWN0
KElXZWJWaWV3KiwgUkVDVCosIFVMT05HX1BUUikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdGb290ZXJJblJlY3Qo
SVdlYlZpZXcqLCBSRUNUKiwgVUxPTkdfUFRSLCBVSU5ULCBVSU5UKSB7IHJldHVybiBFX05PVElN
UEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmll
d1ByaW50aW5nTWFyZ2luUmVjdCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZp
ZXcsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gUkVDVCAqcmVjdCkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNh
blJ1bk1vZGFsKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpjYW5SdW5Cb29sZWFuKSB7IHJldHVybiBFX05P
VElNUEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3Jl
YXRlTW9kYWxEaWFsb2coIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QgKnJlcXVlc3QsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSVdlYlZpZXcgKipuZXdXZWJWaWV3KSB7IHJldHVybiBFX05PVElNUEw7
IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuTW9kYWwo
IAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3KSB7IHJldHVybiBFX05PVElN
UEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNNZW51
QmFyVmlzaWJsZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqdmlzaWJsZSkgeyByZXR1cm4gRV9OT1RJTVBM
OyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1lbnVC
YXJWaXNpYmxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAg
ICAgLyogW2luXSAqLyBCT09MIHZpc2libGUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5EYXRhYmFzZVNpemVMaW1p
dFByb21wdCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBkaXNwbGF5TmFtZSwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJh
bWUgKmluaXRpYXRlZEJ5RnJhbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAq
YWxsb3dlZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHBhaW50Q3VzdG9tU2Nyb2xsYmFyKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBIREMgaERDLAotICAg
ICAgICAvKiBbaW5dICovIFJFQ1QgcmVjdCwKLSAgICAgICAgLyogW2luXSAqLyBXZWJTY3JvbGxC
YXJDb250cm9sU2l6ZSBzaXplLAotICAgICAgICAvKiBbaW5dICovIFdlYlNjcm9sbGJhckNvbnRy
b2xTdGF0ZSBzdGF0ZSwKLSAgICAgICAgLyogW2luXSAqLyBXZWJTY3JvbGxiYXJDb250cm9sUGFy
dCBwcmVzc2VkUGFydCwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIHZlcnRpY2FsLAotICAgICAg
ICAvKiBbaW5dICovIGZsb2F0IHZhbHVlLAotICAgICAgICAvKiBbaW5dICovIGZsb2F0IHByb3Bv
cnRpb24sCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIHBh
cnRzKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcGFpbnRDdXN0b21TY3JvbGxDb3JuZXIoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIEhEQyBoREMsCi0gICAg
ICAgIC8qIFtpbl0gKi8gUkVDVCByZWN0KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KF9J
bl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqLCBfQ09NX091dHB0cl9v
cHRfIElXZWJWaWV3KiopOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgKipyZXN1bHQpIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3
U2hvdyhfSW5fb3B0XyBJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdDbG9zZShfSW5fb3B0XyBJV2Vi
VmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdGb2N1cyhfSW5fb3B0XyBJV2ViVmlldyopIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZp
ZXdVbmZvY3VzKF9Jbl9vcHRfIElXZWJWaWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZpcnN0UmVzcG9uZGVy
KF9Jbl9vcHRfIElXZWJWaWV3KiwgSFdORCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VGaXJzdFJlc3BvbmRlcihfSW5f
b3B0XyBJV2ViVmlldyosIEhXTkQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFN0YXR1c1RleHQoX0luX29wdF8gSVdlYlZp
ZXcqLCBfSW5fIEJTVFIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTdGF0dXNUZXh0KF9Jbl9vcHRfIElXZWJWaWV3
KiwgX19kZXJlZl9vcHRfb3V0IEJTVFIqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxl
KF9Jbl9vcHRfIElXZWJWaWV3KiwgX091dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRvb2xiYXJzVmlzaWJs
ZShfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdJc1N0YXR1c0JhclZpc2li
bGUoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0XyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhdHVzQmFyVmlz
aWJsZShfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdJc1Jlc2l6YWJsZShf
SW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRSZXNpemFibGUoX0luX29w
dF8gSVdlYlZpZXcqLCBCT09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9J
bl8gUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdlYlZpZXdGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIFJF
Q1QqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRDb250ZW50UmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gUkVDVCop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdDb250ZW50UmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIFJFQ1Qq
KSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJW
aWV3KiwgX0luXyBCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3Nh
Z2UoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIsIF9PdXRfIEJPT0wqKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0lu
XyBCU1RSIC8qbWVzc2FnZSovLCBfSW5fIEJTVFIgLypkZWZhdWx0VGV4dCovLCBfX2RlcmVmX29w
dF9vdXQgQlNUUiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIC8qbWVzc2FnZSovLCBfSW5fb3B0XyBJV2Vi
RnJhbWUqIC8qaW5pdGlhdGVkQnlGcmFtZSovLCBfT3V0XyBCT09MKikgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuT3BlblBh
bmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcihfSW5fb3B0XyBJV2ViVmlldyosIF9J
bl9vcHRfIElXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVByb3BlcnR5QmFnKiwgVUlO
VCAvKm1vZGlmaWVyRmxhZ3MqLykgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQoX0lu
X29wdF8gSVdlYlZpZXcqLCBJUHJvcGVydHlCYWcqLCBITUVOVSwgSE1FTlUqKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2YWxp
ZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKF9Jbl9vcHRfIElXZWJWaWV3KiwgVUlOVCwgQk9PTCwgX091
dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNob3VsZFBlcmZvcm1BY3Rpb24oX0luX29wdF8gSVdlYlZpZXcqLCBV
SU5UIC8qaXRlbUNvbW1hbmRJRCovLCBVSU5UIC8qc2VuZGVyKi8pIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3KiwgV2ViRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLCBfSW5fb3B0XyBJRGF0YU9iamVjdCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIExQUE9JTlQsIF9PdXRfIFdlYkRy
YWdTb3VyY2VBY3Rpb24qKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oX0luX29w
dF8gSVdlYlZpZXcqLCBXZWJEcmFnU291cmNlQWN0aW9uLCBfSW5fIExQUE9JTlQsIF9Jbl9vcHRf
IElEYXRhT2JqZWN0KiwgX0NPTV9PdXRwdHJfb3B0XyBJRGF0YU9iamVjdCoqKTsKKworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChf
SW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIHZvaWQqIC8qaXRlbSovLCBfSW5fb3B0XyBJUHJv
cGVydHlCYWcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBoYXNDdXN0b21NZW51SW1wbGVtZW50YXRpb24oX091dF8gQk9PTCop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KF9Jbl9vcHRfIElXZWJWaWV3KiwgLyogW2luXSAq
LyBITUVOVSwgLyogW2luXSAqLyBMUFBPSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0o
X0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyB2b2lkKiAvKm1lYXN1cmVJdGVtKi8pIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRyYXdDdXN0b21NZW51SXRlbShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIHZvaWQqIC8q
ZHJhd0l0ZW0qLykgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKF9Jbl9vcHRfIElXZWJW
aWV3KiwgLyogW2luXSAqLyBITUVOVSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5nRGF0
YShfSW5fb3B0XyBJV2ViVmlldyosIC8qIFtpbl0gKi8gSE1FTlUpIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblRha2VGb2N1
cyhfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wgLypmb3J3YXJkKi8sIF9PdXRfIEJPT0wqKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0YWtlRm9jdXMoX0luX29wdF8gSVdlYlZpZXcqLCBCT09MIC8qZm9yd2FyZCovKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZWdpc3RlclVuZG9XaXRoVGFyZ2V0KF9Jbl9vcHRfIElXZWJVbmRvVGFyZ2V0KiwgX0luXyBCU1RS
IC8qYWN0aW9uTmFtZSovLCBfSW5fb3B0XyBJVW5rbm93biogLyphY3Rpb25BcmcqLykgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cmVtb3ZlQWxsQWN0aW9uc1dpdGhUYXJnZXQoX0luX29wdF8gSVdlYlVuZG9UYXJnZXQqKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWN0aW9uVGl0bGUoX0luXyBCU1RSKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bmRv
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBFX05PVElNUEw7IAorICAgIH0KKworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWRvKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBFX05PVElNUEw7IAorICAgIH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBjYW5VbmRvKF9PdXRfIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5SZWRvKF9PdXRfIEJPT0wqKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwcmludEZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aChfSW5fb3B0XyBJV2ViVmlldyosIF9fZGVy
ZWZfb3B0X291dCBCU1RSKiBwYXRoKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0hlYWRlckhlaWdodChfSW5f
b3B0XyBJV2ViVmlldyosIF9PdXRfIGZsb2F0KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGb290ZXJIZWln
aHQoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0XyBmbG9hdCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3SGVhZGVy
SW5SZWN0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBSRUNUKiwgVUxPTkdfUFRSKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZHJhd0Zvb3RlckluUmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gUkVDVCosIFVMT05H
X1BUUiwgVUlOVCwgVUlOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdQcmludGluZ01hcmdpblJlY3QoX0lu
X29wdF8gSVdlYlZpZXcqLCBfT3V0XyBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblJ1bk1vZGFsKF9Jbl9v
cHRfIElXZWJWaWV3KiwgX091dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVNb2RhbERpYWxvZyhf
SW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiwgX0NPTV9PdXRwdHJf
b3B0XyBJV2ViVmlldyoqKTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcnVuTW9kYWwoX0luX29wdF8gSVdlYlZpZXcqKSAKKyAgICB7CisgICAgICAgIHJldHVy
biBFX05PVElNUEw7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpc01lbnVCYXJWaXNpYmxlKF9Jbl9vcHRfIElXZWJWaWV3KiwgX091dF8gQk9PTCop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRNZW51QmFyVmlzaWJsZShfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBydW5EYXRhYmFzZVNpemVMaW1pdFByb21wdChfSW5fb3B0XyBJV2ViVmlldyosIF9J
bl8gQlNUUiBkaXNwbGF5TmFtZSwgX0luX29wdF8gSVdlYkZyYW1lKiwgX091dF8gQk9PTCogYWxs
b3dlZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBhaW50Q3VzdG9tU2Nyb2xsYmFyKF9Jbl9vcHRfIElXZWJWaWV3Kiwg
X0luXyBIREMsIFJFQ1QsIFdlYlNjcm9sbEJhckNvbnRyb2xTaXplLCBXZWJTY3JvbGxiYXJDb250
cm9sU3RhdGUsCisgICAgICAgIFdlYlNjcm9sbGJhckNvbnRyb2xQYXJ0IHByZXNzZWRQYXJ0LCBC
T09MIHZlcnRpY2FsLCBmbG9hdCB2YWx1ZSwgZmxvYXQgcHJvcG9ydGlvbiwgV2ViU2Nyb2xsYmFy
Q29udHJvbFBhcnRNYXNrIHBhcnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsK
KyAgICB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50
Q3VzdG9tU2Nyb2xsQ29ybmVyKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBIREMsIFJFQ1QpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRGVz
a3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSoqKTsKIAogcHJpdmF0ZToKICAgICBXZWJJbnNwZWN0
b3JEZWxlZ2F0ZSgpOwogCi0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNv
dW50IHsgMCB9OwogfTsKIAogI2VuZGlmIC8vIFdlYkluc3BlY3RvckRlbGVnYXRlX2gK
</data>
<flag name="review"
          id="284552"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>