<?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>120260</bug_id>
          
          <creation_ts>2013-08-24 20:26:50 -0700</creation_ts>
          <short_desc>Add support for Promises</short_desc>
          <delta_ts>2013-08-26 13:47:55 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>920696</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-24 20:26:50 -0700</bug_when>
    <thetext>Add support for Promises</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920699</commentid>
    <comment_count>1</comment_count>
      <attachid>209569</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-24 21:02:51 -0700</bug_when>
    <thetext>Created attachment 209569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920700</commentid>
    <comment_count>2</comment_count>
      <attachid>209569</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-24 21:12:34 -0700</bug_when>
    <thetext>Comment on attachment 209569
Patch

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

High-level question: is there anything in here that *needs* to be written in C++?  Long-term, I think that stuff like this would work better if it was implemented in JS.  If it doesn&apos;t involve computational code (this doesn&apos;t seem to) and if it doesn&apos;t need deep hooks into the VM, then JS code would be better.

I realize that we don&apos;t have good support for writing library code in JS ... but maybe that should change?

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:99
&gt; +        visitor.append(&amp;(thisObject-&gt;m_fulfillCallbacks[i]));

I think these are unnecessary parentheses.

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:101
&gt; +        visitor.append(&amp;(thisObject-&gt;m_rejectCallbacks[i]));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920705</commentid>
    <comment_count>3</comment_count>
      <attachid>209570</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-24 23:01:36 -0700</bug_when>
    <thetext>Created attachment 209570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920706</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-24 23:03:34 -0700</bug_when>
    <thetext>Attachment 209570 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch.html&apos;, u&apos;LayoutTests/fast/js/Promise-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-init-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-init.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks.html&apos;, u&apos;LayoutTests/fast/js/Promise-then.html&apos;, u&apos;LayoutTests/fast/js/Promise-types-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-types.html&apos;, u&apos;LayoutTests/fast/js/Promise.html&apos;, u&apos;LayoutTests/fast/js/resources/Promise-catch-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-fulfill-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-init-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-reject-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-resolve-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-simple-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-without-callbacks-in-workers.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.h&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 116 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>920707</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-24 23:09:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 209569 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209569&amp;action=review
&gt; 
&gt; High-level question: is there anything in here that *needs* to be written in C++?  Long-term, I think that stuff like this would work better if it was implemented in JS.  If it doesn&apos;t involve computational code (this doesn&apos;t seem to) and if it doesn&apos;t need deep hooks into the VM, then JS code would be better.
&gt; 
&gt; I realize that we don&apos;t have good support for writing library code in JS ... but maybe that should change?
&gt; 

The only parts that requires C++ integration that I can think of is the queueing to the event loop.  It certainly feels like long term, this could be be written in JS.

&gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:99
&gt; &gt; +        visitor.append(&amp;(thisObject-&gt;m_fulfillCallbacks[i]));
&gt; 
&gt; I think these are unnecessary parentheses.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:101
&gt; &gt; +        visitor.append(&amp;(thisObject-&gt;m_rejectCallbacks[i]));
&gt; 
&gt; Ditto.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920708</commentid>
    <comment_count>6</comment_count>
      <attachid>209570</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-24 23:13:14 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1563189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920709</commentid>
    <comment_count>7</comment_count>
      <attachid>209570</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-24 23:14:33 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1560487</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920710</commentid>
    <comment_count>8</comment_count>
      <attachid>209570</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-24 23:16:13 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

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

A lot of places where we are using pointers we could use references instead. Might be worth doing that in the new code. Even thisObject seems like it should be a reference.

Looks really great. I am going to say review+; hope I looked closely enough.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +          in preparation for the Promises eventually being defined move to ECMAScript.

&quot;defined move in&quot;?

&gt; Source/JavaScriptCore/ChangeLog:77
&gt; +        (JSC::JSPromiseTaskContext::create):
&gt; +        (JSC::JSPromiseTaskContext::JSPromiseTaskContext):
&gt; +        (JSC::JSPromiseTaskContext::~JSPromiseTaskContext):
&gt; +        (JSC::JSPromise::create):
&gt; +        (JSC::JSPromise::createStructure):
&gt; +        (JSC::JSPromise::JSPromise):
&gt; +        (JSC::JSPromise::finishCreation):
&gt; +        (JSC::JSPromise::destroy):
&gt; +        (JSC::JSPromise::visitChildren):
&gt; +        (JSC::JSPromise::setResolver):
&gt; +        (JSC::JSPromise::resolver):
&gt; +        (JSC::JSPromise::setResult):
&gt; +        (JSC::JSPromise::result):
&gt; +        (JSC::JSPromise::setState):
&gt; +        (JSC::JSPromise::state):
&gt; +        (JSC::JSPromise::appendCallbacks):
&gt; +        (JSC::JSPromise::queueTaskToProcessFulfillCallbacks):
&gt; +        (JSC::JSPromise::queueTaskToProcessRejectCallbacks):
&gt; +        (JSC::JSPromise::processFulfillCallbacksForTask):
&gt; +        (JSC::JSPromise::processRejectCallbacksForTask):
&gt; +        (JSC::JSPromise::processFulfillCallbacksWithValue):
&gt; +        (JSC::JSPromise::processRejectCallbacksWithValue):

I think you can omit the function lists in new files.

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:37
&gt; +struct JSPromiseTaskContext : public TaskContext {

I understand the appeal of simplicity in making this just a struct, but wouldn&apos;t it be better if the constructor was private, and maybe the data member, too?

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:50
&gt; +    virtual ~JSPromiseTaskContext()
&gt; +    {
&gt; +    }

I don’t think this is necessary.

&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:75
&gt; +    JSPromiseCallback* promiseCallback = jsCast&lt;JSPromiseCallback*&gt;(exec-&gt;callee());

How about using a reference instead?

&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:76
&gt; +    JSPromiseResolver* resolver = promiseCallback-&gt;m_resolver.get();

How about using a reference instead?

&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:94
&gt; +    switch (promiseCallback-&gt;m_algorithm) {
&gt; +    case JSPromiseCallback::Fulfill:
&gt; +        resolver-&gt;fulfill(exec, value, true);
&gt; +        break;
&gt; +
&gt; +    case JSPromiseCallback::Resolve:
&gt; +        resolver-&gt;resolve(exec, value, true);
&gt; +        break;
&gt; +
&gt; +    case JSPromiseCallback::Reject:
&gt; +        resolver-&gt;reject(exec, value, true);
&gt; +        break;
&gt; +    }

These “true” (for async) have the classic boolean true problem.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp:66
&gt; +        if (context-&gt;isDocument()) {
&gt; +            JSMainThreadExecState currentState(exec);
&gt; +            m_functionPtr(exec, m_taskContext.get());
&gt; +        } else
&gt; +            m_functionPtr(exec, m_taskContext.get());

Needs a why comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920713</commentid>
    <comment_count>9</comment_count>
      <attachid>209570</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-24 23:31:09 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1556757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920714</commentid>
    <comment_count>10</comment_count>
      <attachid>209570</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-24 23:31:51 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1565072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920717</commentid>
    <comment_count>11</comment_count>
      <attachid>209570</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-24 23:45:49 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1555765</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920719</commentid>
    <comment_count>12</comment_count>
      <attachid>209570</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-24 23:49:34 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1556761</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920721</commentid>
    <comment_count>13</comment_count>
      <attachid>209570</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-08-25 00:04:11 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

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

&gt; Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:85
&gt; +    putDirectWithoutTransition(exec-&gt;vm(), exec-&gt;propertyNames().length, jsNumber(2), ReadOnly | DontEnum | DontDelete);

Shouldn&apos;t this be 1? The Promise constructor takes only 1 mandatory argument so the length properly on the Promise interface object should be 1. This does not seem to be covered by the added layout tests.

&gt; LayoutTests/fast/js/Promise-types-expected.txt:14
&gt; +PASS aPromise.then.length is 2

As per Web IDL, the length of then operation should be 0 (all arguments are optional). 2 is valid as per EcmaScript but shouldn&apos;t we comply with Web IDL considering Promises are not officially part of EcmaScript yet?

&gt; LayoutTests/fast/js/Promise-types-expected.txt:17
&gt; +PASS aPromise.catch.length is 1

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920726</commentid>
    <comment_count>14</comment_count>
      <attachid>209570</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-08-25 00:29:27 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

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

&gt;&gt; LayoutTests/fast/js/Promise-types-expected.txt:14
&gt;&gt; +PASS aPromise.then.length is 2
&gt; 
&gt; As per Web IDL, the length of then operation should be 0 (all arguments are optional). 2 is valid as per EcmaScript but shouldn&apos;t we comply with Web IDL considering Promises are not officially part of EcmaScript yet?

BTW, I don&apos;t get why EcmaScript and Web IDL behave differently here so I filed:
https://www.w3.org/Bugs/Public/show_bug.cgi?id=23056

Either way though, I believe Promise.length should return 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920728</commentid>
    <comment_count>15</comment_count>
      <attachid>209570</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-08-25 00:42:59 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

Attachment 209570 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1544809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920729</commentid>
    <comment_count>16</comment_count>
      <attachid>209570</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-08-25 00:53:34 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:33
&gt; +#include &quot;JSGlobalObjectTask.h&quot;

#include &quot;JSDOMGlobalObjectTask.h&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920800</commentid>
    <comment_count>17</comment_count>
      <attachid>209570</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-08-25 09:52:48 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:77
&gt; +struct TaskContext : RefCounted&lt;TaskContext&gt; {

Since this has a vtable anyway, perhaps there could just be a virtual callback, rather than needing to queue a separate function pointer?

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:101
&gt; +        visitor.append(&amp;(thisObject-&gt;m_rejectCallbacks[i]));

Rather than looping here you can mark arrays of values with &apos;visitor.appendValues&apos;.

&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.h:39
&gt; +    // FIXME: Consider using a pointer-to-member function instead.

pointer-to-member is usually a bad idea.

&gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:94
&gt; +    if (!fulfillCallback.isUndefined()) {

It looks like you&apos;re permitting a case in which undefined is explicitly passed, but by the description on (3.) below this should probably be an error.

&gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:102
&gt; +    if (!rejectCallback.isUndefined()) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920810</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 12:07:24 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 209570 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:77
&gt; &gt; +struct TaskContext : RefCounted&lt;TaskContext&gt; {
&gt; 
&gt; Since this has a vtable anyway, perhaps there could just be a virtual callback, rather than needing to queue a separate function pointer?

After thinking about it a bit, I think maybe I should pass a JSFunction instead of this TaskContext stuff.  This would make it more like other callbacks in WebCore (reducing code there) and make it more future proof if we move more of this to be in JavaScript.  Thoughts?

&gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:101
&gt; &gt; +        visitor.append(&amp;(thisObject-&gt;m_rejectCallbacks[i]));
&gt; 
&gt; Rather than looping here you can mark arrays of values with &apos;visitor.appendValues&apos;.

I think that only works with WriteBarrierBase&lt;Unknown&gt;* types right now.  Should I templatize it?

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromiseCallback.h:39
&gt; &gt; +    // FIXME: Consider using a pointer-to-member function instead.
&gt; 
&gt; pointer-to-member is usually a bad idea.

Ok, will remove the comment.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:94
&gt; &gt; +    if (!fulfillCallback.isUndefined()) {
&gt; 
&gt; It looks like you&apos;re permitting a case in which undefined is explicitly passed, but by the description on (3.) below this should probably be an error.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:102
&gt; &gt; +    if (!rejectCallback.isUndefined()) {
&gt; 

The spec says to treat undefined as missing (http://dom.spec.whatwg.org/#promises-api) so I think this is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920812</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 12:08:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 209570 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:85
&gt; &gt; +    putDirectWithoutTransition(exec-&gt;vm(), exec-&gt;propertyNames().length, jsNumber(2), ReadOnly | DontEnum | DontDelete);
&gt; 
&gt; Shouldn&apos;t this be 1? The Promise constructor takes only 1 mandatory argument so the length properly on the Promise interface object should be 1. This does not seem to be covered by the added layout tests.

Good catch.  I&apos;ll change it and add a test.

&gt; 
&gt; &gt; LayoutTests/fast/js/Promise-types-expected.txt:14
&gt; &gt; +PASS aPromise.then.length is 2
&gt; 
&gt; As per Web IDL, the length of then operation should be 0 (all arguments are optional). 2 is valid as per EcmaScript but shouldn&apos;t we comply with Web IDL considering Promises are not officially part of EcmaScript yet?
&gt; 
&gt; &gt; LayoutTests/fast/js/Promise-types-expected.txt:17
&gt; &gt; +PASS aPromise.catch.length is 1
&gt; 
&gt; Ditto.

Hm.  I&apos;ll match WebIDL for now, but it does seem a bit silly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920814</commentid>
    <comment_count>20</comment_count>
      <attachid>209570</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-25 12:09:59 -0700</bug_when>
    <thetext>Comment on attachment 209570
Patch

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

&gt; Source/JavaScriptCore/runtime/JSPromise.cpp:52
&gt; +    Strong&lt;JSPromise&gt; m_promise;

What&apos;s the lifetime of m_promise bound by?

&gt;&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:94
&gt;&gt; +    }
&gt; 
&gt; These “true” (for async) have the classic boolean true problem.

Agreed, let&apos;s use an enum.  I wonder if we can make the style bot complain about new bool parameters/fields?

&gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:183
&gt; +

There&apos;s so much duplicated code, can we reduce it via a a helper function?

Essentially

InternalFunction* createWrapper(…, kind) { if (undefined) return  JSPromiseCallback::create(exec, globalObject, globalObject-&gt;promiseCallbackStructure(), resolver, kind);  if (callType == None) throw; return JSPromiseWrapperCallback::create }

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920818</commentid>
    <comment_count>21</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 12:51:13 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 209570 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:52
&gt; &gt; +    Strong&lt;JSPromise&gt; m_promise;
&gt; 
&gt; What&apos;s the lifetime of m_promise bound by?

TaskContext is RefCounted.

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:94
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; These “true” (for async) have the classic boolean true problem.
&gt; 
&gt; Agreed, let&apos;s use an enum.  I wonder if we can make the style bot complain about new bool parameters/fields?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:183
&gt; &gt; +

Ok, switched to an enum.


&gt; There&apos;s so much duplicated code, can we reduce it via a a helper function?
&gt; 
&gt; Essentially
&gt; 
&gt; InternalFunction* createWrapper(…, kind) { if (undefined) return  JSPromiseCallback::create(exec, globalObject, globalObject-&gt;promiseCallbackStructure(), resolver, kind);  if (callType == None) throw; return JSPromiseWrapperCallback::create }

I added a helper, but it does not handle the error case, as I wanted to keep the fidelity of the error strings without having to jump through hoops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920823</commentid>
    <comment_count>22</comment_count>
      <attachid>209599</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 13:07:31 -0700</bug_when>
    <thetext>Created attachment 209599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920824</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-25 13:09:57 -0700</bug_when>
    <thetext>Attachment 209599 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch.html&apos;, u&apos;LayoutTests/fast/js/Promise-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-init-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-init.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks.html&apos;, u&apos;LayoutTests/fast/js/Promise-then.html&apos;, u&apos;LayoutTests/fast/js/Promise-types-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-types.html&apos;, u&apos;LayoutTests/fast/js/Promise.html&apos;, u&apos;LayoutTests/fast/js/resources/Promise-catch-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-fulfill-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-init-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-reject-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-resolve-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-simple-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-without-callbacks-in-workers.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.h&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 116 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>920825</commentid>
    <comment_count>24</comment_count>
      <attachid>209599</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-25 13:17:50 -0700</bug_when>
    <thetext>Comment on attachment 209599
Patch

Attachment 209599 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1557815</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920826</commentid>
    <comment_count>25</comment_count>
      <attachid>209599</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-25 13:18:23 -0700</bug_when>
    <thetext>Comment on attachment 209599
Patch

Attachment 209599 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1559660</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920827</commentid>
    <comment_count>26</comment_count>
      <attachid>209600</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 13:26:40 -0700</bug_when>
    <thetext>Created attachment 209600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920828</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-25 13:30:19 -0700</bug_when>
    <thetext>Attachment 209600 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch.html&apos;, u&apos;LayoutTests/fast/js/Promise-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-init-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-init.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks.html&apos;, u&apos;LayoutTests/fast/js/Promise-then.html&apos;, u&apos;LayoutTests/fast/js/Promise-types-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-types.html&apos;, u&apos;LayoutTests/fast/js/Promise.html&apos;, u&apos;LayoutTests/fast/js/resources/Promise-catch-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-fulfill-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-init-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-reject-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-resolve-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-simple-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-without-callbacks-in-workers.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.h&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:50:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 116 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>920830</commentid>
    <comment_count>28</comment_count>
      <attachid>209600</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-25 13:35:46 -0700</bug_when>
    <thetext>Comment on attachment 209600
Patch

Attachment 209600 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1558658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920833</commentid>
    <comment_count>29</comment_count>
      <attachid>209600</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-25 13:37:40 -0700</bug_when>
    <thetext>Comment on attachment 209600
Patch

Attachment 209600 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1563388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920834</commentid>
    <comment_count>30</comment_count>
      <attachid>209600</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-25 13:40:28 -0700</bug_when>
    <thetext>Comment on attachment 209600
Patch

Attachment 209600 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1557821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920835</commentid>
    <comment_count>31</comment_count>
      <attachid>209600</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-25 13:49:23 -0700</bug_when>
    <thetext>Comment on attachment 209600
Patch

Attachment 209600 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1542977</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920836</commentid>
    <comment_count>32</comment_count>
      <attachid>209602</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 13:54:40 -0700</bug_when>
    <thetext>Created attachment 209602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920838</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-25 13:57:55 -0700</bug_when>
    <thetext>Attachment 209602 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch.html&apos;, u&apos;LayoutTests/fast/js/Promise-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-init-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-init.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks.html&apos;, u&apos;LayoutTests/fast/js/Promise-then.html&apos;, u&apos;LayoutTests/fast/js/Promise-types-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-types.html&apos;, u&apos;LayoutTests/fast/js/Promise.html&apos;, u&apos;LayoutTests/fast/js/resources/Promise-catch-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-fulfill-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-init-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-reject-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-resolve-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-simple-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-without-callbacks-in-workers.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.h&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 116 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>920840</commentid>
    <comment_count>34</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-25 14:04:50 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 209570 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:52
&gt; &gt; &gt; +    Strong&lt;JSPromise&gt; m_promise;
&gt; &gt; 
&gt; &gt; What&apos;s the lifetime of m_promise bound by?
&gt; 
&gt; TaskContext is RefCounted.

Yes but what holds the reference to TaskContext?  My concern is that the strong reference of m_promise could indirectly keep its owner around

&gt; 
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:94
&gt; &gt; &gt;&gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; These “true” (for async) have the classic boolean true problem.
&gt; &gt; 
&gt; &gt; Agreed, let&apos;s use an enum.  I wonder if we can make the style bot complain about new bool parameters/fields?
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:183
&gt; &gt; &gt; +
&gt; 
&gt; Ok, switched to an enum.
&gt; 
&gt; 
&gt; &gt; There&apos;s so much duplicated code, can we reduce it via a a helper function?
&gt; &gt; 
&gt; &gt; Essentially
&gt; &gt; 
&gt; &gt; InternalFunction* createWrapper(…, kind) { if (undefined) return  JSPromiseCallback::create(exec, globalObject, globalObject-&gt;promiseCallbackStructure(), resolver, kind);  if (callType == None) throw; return JSPromiseWrapperCallback::create }
&gt; 
&gt; I added a helper, but it does not handle the error case, as I wanted to keep the fidelity of the error strings without having to jump through hoops.

Maybe take an error message string?  templates? macros creating templates? ;)

If you think it is to many hoops involved in getting the right thing i&apos;ll accept your judgement.

If you go for macros generating templates i will assign all SVG bugs to you :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920841</commentid>
    <comment_count>35</comment_count>
      <attachid>209602</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-25 14:05:44 -0700</bug_when>
    <thetext>Comment on attachment 209602
Patch

Attachment 209602 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1564303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920842</commentid>
    <comment_count>36</comment_count>
      <attachid>209602</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-25 14:06:39 -0700</bug_when>
    <thetext>Comment on attachment 209602
Patch

Attachment 209602 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1560677</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920845</commentid>
    <comment_count>37</comment_count>
      <attachid>209602</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-25 14:09:35 -0700</bug_when>
    <thetext>Comment on attachment 209602
Patch

Attachment 209602 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1564304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920847</commentid>
    <comment_count>38</comment_count>
      <attachid>209604</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 14:10:35 -0700</bug_when>
    <thetext>Created attachment 209604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920849</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-25 14:13:14 -0700</bug_when>
    <thetext>Attachment 209604 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-fulfilled.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-rejected.html&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-already-resolved.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-catch-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-catch.html&apos;, u&apos;LayoutTests/fast/js/Promise-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-init-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-init-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-init.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-reject-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-chain.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-exception.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-resolve-with-then-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill-inside-callback.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-simple-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-simple.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-fulfill.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-reject.html&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-static-resolve.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks-in-workers.html&apos;, u&apos;LayoutTests/fast/js/Promise-then-without-callbacks.html&apos;, u&apos;LayoutTests/fast/js/Promise-then.html&apos;, u&apos;LayoutTests/fast/js/Promise-types-expected.txt&apos;, u&apos;LayoutTests/fast/js/Promise-types.html&apos;, u&apos;LayoutTests/fast/js/Promise.html&apos;, u&apos;LayoutTests/fast/js/resources/Promise-catch-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-fulfill-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-init-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-reject-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-resolve-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-simple-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-in-workers.js&apos;, u&apos;LayoutTests/fast/js/resources/Promise-then-without-callbacks-in-workers.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jsc.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseCallback.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromisePrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolver.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.h&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSPromisePrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseResolverPrototype.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 116 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>920850</commentid>
    <comment_count>40</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 14:14:37 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; (From update of attachment 209570 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:52
&gt; &gt; &gt; &gt; +    Strong&lt;JSPromise&gt; m_promise;
&gt; &gt; &gt; 
&gt; &gt; &gt; What&apos;s the lifetime of m_promise bound by?
&gt; &gt; 
&gt; &gt; TaskContext is RefCounted.
&gt; 
&gt; Yes but what holds the reference to TaskContext?  My concern is that the strong reference of m_promise could indirectly keep its owner around

It is ref&apos;d by the JSGlobalObjectTask, which is a ScriptExecutionContext::Task, which is in turned owned by the ScriptExecutionContext&apos;s (be it the Document or Worker) event queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920851</commentid>
    <comment_count>41</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-25 14:18:15 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; (From update of attachment 209570 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:52
&gt; &gt; &gt; &gt; &gt; +    Strong&lt;JSPromise&gt; m_promise;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What&apos;s the lifetime of m_promise bound by?
&gt; &gt; &gt; 
&gt; &gt; &gt; TaskContext is RefCounted.
&gt; &gt; 
&gt; &gt; Yes but what holds the reference to TaskContext?  My concern is that the strong reference of m_promise could indirectly keep its owner around
&gt; 
&gt; It is ref&apos;d by the JSGlobalObjectTask, which is a ScriptExecutionContext::Task, which is in turned owned by the ScriptExecutionContext&apos;s (be it the Document or Worker) event queue.

Okay, this feels like a cycle to me - if the event captures the document, how does it get killed?  Presumably the document keeps its event queue alive?

--Oliver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920855</commentid>
    <comment_count>42</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-25 14:35:34 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #40)
&gt; &gt; (In reply to comment #34)
&gt; &gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 209570 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209570&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/runtime/JSPromise.cpp:52
&gt; &gt; &gt; &gt; &gt; &gt; +    Strong&lt;JSPromise&gt; m_promise;
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; What&apos;s the lifetime of m_promise bound by?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; TaskContext is RefCounted.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes but what holds the reference to TaskContext?  My concern is that the strong reference of m_promise could indirectly keep its owner around
&gt; &gt; 
&gt; &gt; It is ref&apos;d by the JSGlobalObjectTask, which is a ScriptExecutionContext::Task, which is in turned owned by the ScriptExecutionContext&apos;s (be it the Document or Worker) event queue.
&gt; 
&gt; Okay, this feels like a cycle to me - if the event captures the document, how does it get killed?  Presumably the document keeps its event queue alive?
&gt; 
&gt; --Oliver

I&apos;m not sure I follow.  Once the document performs the task, it discards it, which should break the cycle.  This is the same idiom we use most other places where we have callbacks, I think, see JSCallbackData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921078</commentid>
    <comment_count>43</comment_count>
      <attachid>209604</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-26 10:35:47 -0700</bug_when>
    <thetext>Comment on attachment 209604
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp:37
&gt; +class JSGlobalObjectCallback : public RefCounted&lt;JSGlobalObjectCallback&gt;, public ActiveDOMCallback {

Should be FINAL. And I think ActiveDOMCallback should be private.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp:46
&gt; +    virtual ~JSGlobalObjectCallback()
&gt; +    {
&gt; +    }

I suggest just omitting this entirely. No reason to define it explicitly.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp:64
&gt; +        // push the current&apos;t ExecState on to the JSMainThreadExecState stack.

current&apos;t?

&gt; Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h:36
&gt; +class JSGlobalObjectTask : public ScriptExecutionContext::Task {

Should be FINAL.

&gt; Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h:44
&gt; +    virtual void performTask(ScriptExecutionContext*);

Should be private and OVERRIDE.

&gt; Source/WebCore/bindings/js/JSMainThreadExecState.h:77
&gt;      explicit JSMainThreadExecState(JSC::ExecState* exec)

There are a lot of stray semicolons at the ends of functions in this class.

&gt; Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp:75
&gt;  }
&gt;  
&gt; +
&gt; +bool JSWorkerGlobalScopeBase::allowsAccessFrom(const JSGlobalObject* object, ExecState* exec)

Extra blank line here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921122</commentid>
    <comment_count>44</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-26 12:19:51 -0700</bug_when>
    <thetext>Committed r154629: &lt;http://trac.webkit.org/changeset/154629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921136</commentid>
    <comment_count>45</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-08-26 13:17:26 -0700</bug_when>
    <thetext>It looks like the JavaScriptCore.vcxproj changes listed in the ChangeLog did not actually get landed in the archive.  Windows build is broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921147</commentid>
    <comment_count>46</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-26 13:47:55 -0700</bug_when>
    <thetext>Windows build fix landed in http://trac.webkit.org/changeset/154635.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209569</attachid>
            <date>2013-08-24 21:02:51 -0700</date>
            <delta_ts>2013-08-24 23:01:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120260-20130824210254.patch</filename>
            <type>text/plain</type>
            <size>239074</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBA
QAorMjAxMy0wOC0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBQcm9taXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIwMjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGFuIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgUHJvbWlzZXMg
LSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jcHJvbWlzZXMuCisgICAgICAgIC0gRGVzcGl0
ZSBQcm9taXNlcyBiZWluZyBkZWZpbmVkIGluIHRoZSBET00sIHRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBiZWluZyBwdXQgaW4gSlNDCisgICAgICAgICAgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBQcm9t
aXNlcyBldmVudHVhbGx5IGJlaW5nIGRlZmluZWQgbW92ZSB0byBFQ01BU2NyaXB0LgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgVXBkYXRlIGpzYydzIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IHRvIHN0dWIgb3V0IHRoZSBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suIFRoaXMg
bWVhbidzCisgICAgICAgIHlvdSBjYW4ndCBxdWl0ZSB1c2UgUHJvbWlzZXMgd2l0aCB3aXRoIHRo
ZSBjb21tYW5kIGxpbmUgdG9vbCB5ZXQuCisgICAgCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxl
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSk6Cisg
ICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBz
dXBwb3J0aW5nIGNvZGUgZm9yIHRoZSBuZXcgc3RhdGljIGxvb2t1cCB0YWJsZXMuCisKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgIEFkZCAzIG5ldyBpZGVu
dGlmaWVycywgIlByb21pc2UiLCAiUHJvbWlzZVJlc29sdmVyIiwgYW5kICJ0aGVuIi4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJl
c29sdmVyJ3MgY29uc3RydWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpUYXNrQ29udGV4dDo6flRhc2tDb250
ZXh0KToKKyAgICAgICAgQWRkIGEgbmV3IGNhbGxiYWNrIHRvIHRoZSBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSB0byBwb3N0IGEgdGFzayBvbiB0aGUgZW1iZWRkZXIncyBydW5sb29wLgorCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSk6CisgICAgICAg
IEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVyJ3MgY29uc3Ry
dWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZVRhc2tDb250ZXh0OjpKU1Byb21pc2VUYXNrQ29udGV4dCk6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVRhc2tDb250ZXh0Ojp+SlNQcm9taXNlVGFza0NvbnRl
eHQpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpKU1By
b21pc2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpzZXRSZXNvbHZlcik6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzb2x2ZXIpOgorICAgICAgICAoSlNDOjpKU1Byb21p
c2U6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlOjpzZXRTdGF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6
c3RhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmFwcGVuZENhbGxiYWNrcyk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZTo6cXVldWVUYXNrVG9Qcm9jZXNzRnVsZmlsbENhbGxiYWNrcyk6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cXVldWVUYXNrVG9Qcm9jZXNzUmVqZWN0Q2FsbGJh
Y2tzKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNrc0Zv
clRhc2spOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OnByb2Nlc3NSZWplY3RDYWxsYmFja3NG
b3JUYXNrKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNr
c1dpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cHJvY2Vzc1JlamVjdENhbGxi
YWNrc1dpdGhWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuaDogQWRkZWQuCisg
ICAgICAgICogcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNl
Q2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNhbGxi
YWNrOjpKU1Byb21pc2VDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNhbGxiYWNr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNhbGxiYWNrOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ2FsbGJhY2s6OmNhbGxQcm9taXNl
Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDYWxsYmFjazo6Z2V0Q2FsbERhdGEp
OgorICAgICAgICAoSlNDOjpKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjYWxsUHJv
bWlzZVdyYXBwZXJDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVdyYXBwZXJDYWxs
YmFjazo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2su
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFByb21pc2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1
bmNGdWxmaWxsKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVjdCk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1By
b21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpK
U1Byb21pc2VQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGVGdW5jVGhlbik6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZUZ1bmNDYXRjaCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VSZXNvbHZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNv
bHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXI6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyOjpKU1Byb21pc2VSZXNv
bHZlcik6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXI6OnByb21pc2UpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2VSZXNvbHZlcjo6ZnVsZmlsbElmTm90UmVzb2x2ZWQpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2VSZXNvbHZlcjo6cmVzb2x2ZUlmTm90UmVzb2x2ZWQpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2VSZXNvbHZlcjo6cmVqZWN0SWZOb3RSZXNvbHZlZCk6CisgICAgICAgIChKU0M6OkpTUHJv
bWlzZVJlc29sdmVyOjpmdWxmaWxsKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXI6
OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlcjo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXJD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2
ZXJQcm90b3R5cGU6OkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY0Z1bGZpbGwpOgorICAgICAg
ICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVqZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICBBZGQg
UHJvbWlzZSBpbXBsZW1lbnRhdGlvbi4KKwogMjAxMy0wOC0yNCAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNdIGxpbmsgYWdhaW5zdCBsaWJ6IGluIGEgbW9y
ZSBjaXZpbGl6ZWQgbWFubmVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTQ0OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2UuY3BwCisgICAgcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKKyAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAg
IHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTUsNiAr
NDIyLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkocmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgYWxsIDogXAogICAgIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggXAorICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAg
ICAgTmFtZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDkgQEAgTFVU
X0ZJTEVTICs9IFwKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcCBc
CisgICAgcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTmFt
ZVByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTQ0OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5o
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTWF0aE9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTmFtZVByb3RvdHlw
ZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggXApAQCAtODExLDYgKzgxNCwyMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvbWlzZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcCBcCisg
ICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRp
bWUvSlNTY29wZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE1NDQ5
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNyArMjU5LDcgQEAgcHJvdGVjdGVkOgogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9i
YWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ0OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNiArNDY4LDEzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Byb21pc2UuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNQcm9taXNlQ2FsbGJhY2suY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUHJvdG90eXBlLmNwcCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyLmNwcCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPg0KQEAgLTU0Myw2ICs1NTAsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQ
cm90b3R5cGUubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5sdXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExMSW50QXNzZW1ibHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0
LmgiIC8+DQpAQCAtODgwLDYgKzg5MCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09OT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09iamVjdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b21pc2VDYWxsYmFjay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTUHJvbWlzZVByb3RvdHlwZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUmVzb2x2ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b3h5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDQ5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNiArNjQ3LDIwIEBACiAJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
ICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggKi87IH07CisJCTdDMTVGNjVEMTdDMTk5Q0Uw
MDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9t
aXNlQ2FsbGJhY2suY3BwICovOyB9OworCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQ
cm9taXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTVGNjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICov
OyB9OworCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMw
MDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwICovOyB9OworCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi87IH07CisJ
CTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFGMTdC
RUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8q
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI4
RTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuY3BwICovOyB9OworCQk3QzNC
QTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0JBMjhGMTdDMDM5NTYwMDcyRERD
OSAvKiBKU1Byb21pc2VSZXNvbHZlci5oICovOyB9OworCQk3QzNCQTI5NjE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MDE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDM0JBMjk3MTdDMDM5
NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MTE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk3QzNCQTI5ODE3
QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQkEyOTIxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJN0MzQkEy
OTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MzE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJN0VGRjAwNjQw
RUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAx
MCw4ICsxMDI0LDYgQEAKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyog
V2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4
QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07Ci0JCUJDMThDNTI2MEUxNkZDQTcwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmx1dC5oICovOyB9OwotCQlCQzE4QzUyQTBFMTZGQ0MyMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDNTI5MEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oICovOyB9OwogCQlC
QzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0
NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9Owog
CQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2Qzkg
LyogQXJndW1lbnRzLmggKi87IH07CkBAIC0xNzc1LDYgKzE3ODcsMjMgQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEUx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJl
c29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0JBMjkwMTdDMDM5NTYwMDcy
RERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5MTE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDM0JBMjkyMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5QTE3QzAzQkUxMDA3
MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVy
ZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VGRjAwNjMwRUMwNUE5
QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE3LDggKzIxNDYs
NiBAQAogCQlCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYw
IC8qIE1hdGhPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTJCMEUx
NkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTIsNyArMjE3OSw2IEBACiAJCUJDNzk1MjM0MEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJvb2xlYW5Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzc5NTIzNTBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0Nl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDZWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM4MTQ5QUYxMkY4OUY1MzAwN0IyQzMyIC8q
IEhlYWRlckRldGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFk
ZXJEZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NTksMTggKzI4
ODUsMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MzQkEyOUEx
N0MwM0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywK
IAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywK
LQkJCQlCQzgxNDlBRjEyRjg5RjUzMDA3QjJDMzIgLyogSGVhZGVyRGV0ZWN0aW9uLmggKi8sCiAJ
CQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCisJCQkJ
N0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAq
LywKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8sCi0JCQkJ
QkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYwIC8qIE1hdGhPYmplY3QubHV0LmggKi8sCiAJCQkJQkMy
NjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8sCiAJ
CQkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLywKLQkJ
CQlCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCTVENTM3MjdEMEUxQzU1RUMwMDIxRTU0OSAvKiBUcmFjaW5nRHRyYWNlLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMzA5Niw2ICszMTIyLDIwIEBACiAJ
CQkJQkMyMkEzOTkwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmggKi8sCiAJCQkJQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovLAogCQkJCUE3Rjk5MzVEMEZE
NzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi8sCisJCQkJN0MxODRFMTgxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8sCisJCQkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovLAorCQkJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8sCisJCQkJN0MxNUY2NUMxN0MxOTlDRTAwNzk0RDQwIC8qIEpT
UHJvbWlzZUNhbGxiYWNrLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0Eg
LyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJN0MzQkEyOEUxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLywKKwkJCQk3QzNCQTI4RjE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCAqLywKKwkJCQk3QzNCQTI5MDE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJN0Mz
QkEyOTExN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3QzNCQTI5MjE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oICovLAogCQkJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKQEAgLTM3NjcsNiArMzgwNyw3IEBACiAJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zODM1LDYgKzM4NzYsNyBAQAogCQkJCUE3RDlBMjk4MTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZD
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTE4LDYgKzM5NjAsNyBAQAogCQkJCTBGNUE1MkQwMTdBREQ3MTcwMDhF
Q0IyRCAvKiBDb3B5VG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0MzQkEyOTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJE
QjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
OTc3LDYgKzQwMjAsNyBAQAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5h
bEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBCODk2MTkg
LyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2RjIwMDEx
MkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdDMDM5NTYw
MDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTQxMjAsNyArNDE2NCw2IEBACiAJCQkJODYxMkU0Q0QxNTIzODlF
QzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBF
MTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
RUUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCUJDMThDNTJBMEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0lu
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAv
KiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTQxODgs
NiArNDIzMSw3IEBACiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5
SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAv
KiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMTg0RTFCMTdCRURC
RDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYyMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5
U2xvdC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTk1LDYgKzQyMzksNyBAQAogCQkJCTBGMkI2NzA1
MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0NUEwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ0V4cC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QzNCQTI5NzE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyQzIwRTE3MDZBNzAw
MkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDJE
NjBFMTcwNzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTQyMDUsNiArNDI1MCw3IEBACiAJCQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYw
IC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2
ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUQxNUVEOEU0NjAw
RjE2N0IyIC8qIFJlamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMjMxN0JFRTI0MDAw
N0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQz
QjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDIzMyw3ICs0Mjc5LDYgQEAKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBB
N0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0NjgwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkMxOEM1MjYwRTE2RkNBNzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJv
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJv
bmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcg
LyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MTgsNiArNDc2Myw3IEBACiAJCQkJ
QTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc2NDE1OTFBMUNDMDA0
Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk4
MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVFMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBE
RkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDczOSw2ICs0Nzg1LDcgQEAKIAkJCQlBNzY3
QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQxNTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlm
aWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMg
LyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTVGNjVEMTdDMTk5
Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZHTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RUM5RENGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNDc1OSw2ICs0ODA2LDcgQEAKIAkJCQkwRkZGQzk1RDE0RUY5MEIz
MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZFQzlERDIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZl
SklULmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk2MTdDMDM5NTYwMDcyRERDOSAvKiBK
U1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgw
RjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00Nzg4LDYgKzQ4MzYs
NyBAQAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE4
NEUxRTE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMjM1QkQxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMjcxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENv
bW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ4NTAsNiArNDg5OSw3IEBA
CiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBw
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk0MTdDMDM5NTYw
MDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdG
MzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDIxMzU5QjBBNjc3RjRGMDBBODE5NUUgLyogSlNCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2RkE5RTkxMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC00OTEzLDYgKzQ5NjMsNyBAQAogCQkJCTE0NDY5RERFMTA3RUM3RTcwMDY1MDQ0
NiAvKiBMb29rdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIz
QjIxMkQ3REE0NjAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3
Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00OTcwLDYg
KzUwMjEsNyBAQAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1
Y2VXaGl0ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkVCMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTg0RTIyMTdCRUUy
NDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
KiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBj
YWxsRnJhbWUtPnZtKCkucmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5zdHJpbmdDb25zdHJ1Y3Rv
clRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VQcm90b3R5
cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnBy
b21pc2VQcm90b3R5cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBw
cm9taXNlQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2Fs
bEZyYW1lLT52bSgpLnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSog
Y2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlVGFibGU7IH0KIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIq
IGNhbGxGcmFtZUJhc2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFt
ZUJhc2UpOyB9CiAgICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAK
ICAgICBtYWNybyhOYU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhPYmplY3Qp
IFwKKyAgICBtYWNybyhQcm9taXNlKSBcCisgICAgbWFjcm8oUHJvbWlzZVJlc29sdmVyKSBcCiAg
ICAgbWFjcm8oUmFuZ2VFcnJvcikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAg
bWFjcm8oUmVnRXhwKSBcCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAog
ICAgIG1hY3JvKHN1YmFycmF5KSBcCiAgICAgbWFjcm8odGVzdCkgXAorICAgIG1hY3JvKHRoZW4p
IFwKICAgICBtYWNybyh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkgXAogICAg
IG1hY3JvKHRvSVNPU3RyaW5nKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQ0OTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDYgKzY2LDEzIEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgi
CisjaW5jbHVkZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpT
UHJvbWlzZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90
eXBlcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk5LDcgKzEwNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9
IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2Jq
ZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3Vw
cG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRF
eHBlcmltZW50c0VuYWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJv
bSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZElu
dGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogLyog
U291cmNlIGZvciBKU0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxl
CkBAIC0yOTcsNiArMzA0LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUg
cHJvdG8KICAgICBtX2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBFcnJvclBy
b3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9l
cnJvclN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpKTsKIAor
ICAgIG1fcHJvbWlzZVByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlUHJv
dG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
bV9wcm9taXNlU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsK
KworICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0
KGV4ZWMtPnZtKCksIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+dm0oKSwgdGhpcywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBt
X3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNl
Q2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSk7CisgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNl
dChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAg
CiAgICAgLy8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0g
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzIxLDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIEpTQ2VsbCogYm9vbGVhbkNv
bnN0cnVjdG9yID0gQm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgQm9vbGVh
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxs
KiBudW1iZXJDb25zdHJ1Y3RvciA9IE51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhp
cywgTnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogICAg
IEpTQ2VsbCogZGF0ZUNvbnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywg
dGhpcywgRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAg
SlNDZWxsKiBwcm9taXNlQ29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KGV4ZWMsIHRoaXMsIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlw
ZS5nZXQoKSk7CisgICAgSlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJv
bWlzZVJlc29sdmVyQ29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsK
IAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENv
bnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9y
ZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzI5LDYgKzM0Niw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOwogICAgIG1fZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0
cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHByb21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fcHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0p
OwpAQCAtMzQ1LDYgKzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUg
cHJvdG8KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuU3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iu
Z2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rv
ci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3RvciwgRG9udEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZXZhbC5zdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9l
dmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKQEAgLTU2NCw2ICs1ODUsOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZGF0ZVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fcmVnRXhwUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9lcnJvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJv
bWlzZVByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3dpdGhTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtNTk0LDcgKzYxNywxMSBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIAorICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3Ry
dWN0dXJlKTsKKwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVy
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZl
clN0cnVjdHVyZSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDgg
KzI0LDggQEAKIAogI2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZklu
dGVybmFsLmgiCiAjaW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNz
OwpAQCAtNTgsNiArNTksOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5j
dGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9j
azsKK2NsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlOwogY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNs
YXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CkBAIC03MCw3ICs3MywxMyBAQCBzdHJ1Y3QgQWN0
aXZhdGlvblN0YWNrTm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CiAKIHR5cGVkZWYgVmVjdG9yPEV4
ZWNTdGF0ZSosIDE2PiBFeGVjU3RhdGVTdGFjazsKLSAgICAKKworc3RydWN0IFRhc2tDb250ZXh0
IDogUmVmQ291bnRlZDxUYXNrQ29udGV4dD4geworICAgIHZpcnR1YWwgflRhc2tDb250ZXh0KCkK
KyAgICB7CisgICAgfQorfTsKKwogc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAg
ICB0eXBlZGVmIGJvb2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9uUHRy
IGFsbG93c0FjY2Vzc0Zyb207CkBAIC04Niw2ICs5NSwxMCBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRlZiBib29sICgqSmF2YVNjcmlwdEV4cGVyaW1lbnRz
RW5hYmxlZEZ1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIEphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWRGdW5jdGlvblB0ciBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFi
bGVkOworCisgICAgdHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1
bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHR5cGVkZWYgdm9pZCAo
KlF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kiwg
UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tD
b250ZXh0Pik7CisgICAgUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRhc2tU
b0V2ZW50TG9vcDsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewpAQCAtMTM0LDYgKzE0Nyw4IEBAIHByb3RlY3RlZDoKICAgICBX
cml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gbV9kYXRlUHJvdG90eXBlOwogICAgIFdyaXRlQmFy
cmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmll
cjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNQ
cm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKIAog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CkBA
IC0xNjcsNyArMTgyLDExIEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3JlZ0V4cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmlu
Z09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9w
cm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVJl
c29sdmVyU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZUNh
bGxiYWNrU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVdy
YXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVy
UHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zMTIsNiArMzMxLDggQEAg
cHVibGljOgogICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGVQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAg
RXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclBy
b3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0
dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgp
OyB9CkBAIC0zNTksNyArMzgwLDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3Ry
aW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHBy
b21pc2VSZXNvbHZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVy
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQor
ICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorCiAgICAg
SlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJh
eUJ1ZmZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1By
b21pc2VSZXNvbHZlci5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1
ZGUgIlN0cm9uZ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBKU1Byb21p
c2VUYXNrQ29udGV4dCA6IHB1YmxpYyBUYXNrQ29udGV4dCB7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SlNQcm9taXNlVGFza0NvbnRleHQ+IGNyZWF0ZShWTSYgdm0sIEpTUHJvbWlzZSogcHJvbWlz
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNQcm9taXNlVGFza0NvbnRl
eHQodm0sIHByb21pc2UpKTsKKyAgICB9CisgICAgCisgICAgSlNQcm9taXNlVGFza0NvbnRleHQo
Vk0mIHZtLCBKU1Byb21pc2UqIHByb21pc2UpCisgICAgeworICAgICAgICBtX3Byb21pc2Uuc2V0
KHZtLCBwcm9taXNlKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+SlNQcm9taXNlVGFza0Nv
bnRleHQoKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJvbmc8SlNQcm9taXNlPiBtX3Byb21pc2U7
Cit9OworCitjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlOjpzX2luZm8gPSB7ICJQcm9taXNlIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2UpIH07CisK
K0pTUHJvbWlzZSogSlNQcm9taXNlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK3sKKyAgICBKU1Byb21pc2UqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTUHJvbWlzZT4odm0uaGVhcCkpIEpTUHJvbWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1
cmUqIEpTUHJvbWlzZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2U6OkpTUHJvbWlzZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0s
IHN0cnVjdHVyZSkKKyAgICAsIG1fc3RhdGUoUGVuZGluZykKK3sKK30KKwordm9pZCBKU1Byb21p
c2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEpTUHJvbWlzZTo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNQcm9taXNlKj4oY2Vs
bCktPkpTUHJvbWlzZTo6fkpTUHJvbWlzZSgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJv
bWlzZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2UqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcmVzdWx0KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGhpc09iamVj
dC0+bV9mdWxmaWxsQ2FsbGJhY2tzLnNpemUoKTsgKytpKQorICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmKHRoaXNPYmplY3QtPm1fZnVsZmlsbENhbGxiYWNrc1tpXSkpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9yZWplY3RDYWxsYmFja3Muc2l6ZSgpOyArK2kpCisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCYodGhpc09iamVjdC0+bV9yZWplY3RDYWxsYmFja3NbaV0p
KTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNldFJlc29sdmVyKFZNJiB2bSwgSlNQcm9taXNlUmVz
b2x2ZXIqIHJlc29sdmVyKQoreworICAgIG1fcmVzb2x2ZXIuc2V0KHZtLCB0aGlzLCByZXNvbHZl
cik7Cit9CisKK0pTUHJvbWlzZVJlc29sdmVyKiBKU1Byb21pc2U6OnJlc29sdmVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNl
dFJlc3VsdChWTSYgdm0sIEpTVmFsdWUgcmVzdWx0KQoreworICAgIG1fcmVzdWx0LnNldCh2bSwg
dGhpcywgcmVzdWx0KTsKK30KKworSlNWYWx1ZSBKU1Byb21pc2U6OnJlc3VsdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVzdWx0LmdldCgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0U3Rh
dGUoSlNQcm9taXNlOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBQZW5k
aW5nKTsKKyAgICBtX3N0YXRlID0gc3RhdGU7Cit9CisKK0pTUHJvbWlzZTo6U3RhdGUgSlNQcm9t
aXNlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjphcHBlbmRDYWxsYmFja3MoRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdWxmaWxsQ2FsbGJhY2ssIEludGVybmFsRnVuY3Rpb24qIHJlamVjdENhbGxiYWNrKQorewor
ICAgIC8vIDEuIEFwcGVuZCBmdWxmaWxsQ2FsbGJhY2sgdG8gcHJvbWlzZSdzIGZ1bGZpbGwgY2Fs
bGJhY2tzLgorICAgIG1fZnVsZmlsbENhbGxiYWNrcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMtPnZtKCksIHRoaXMsIGZ1bGZpbGxDYWxsYmFjaykpOworICAgIAor
ICAgIC8vIDIuIEFwcGVuZCByZWplY3RDYWxsYmFjayB0byBwcm9taXNlJyByZWplY3QgY2FsbGJh
Y2tzLgorICAgIG1fcmVqZWN0Q2FsbGJhY2tzLmFwcGVuZChXcml0ZUJhcnJpZXI8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYy0+dm0oKSwgdGhpcywgcmVqZWN0Q2FsbGJhY2spKTsKKworICAgIC8vIDMu
IElmIHByb21pc2UncyBzdGF0ZSBpcyBmdWxmaWxsZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNz
IHByb21pc2UncyBmdWxmaWxsIGNhbGxiYWNrcyB3aXRoIHByb21pc2UncyByZXN1bHQuCisgICAg
aWYgKG1fc3RhdGUgPT0gRnVsZmlsbGVkKSB7CisgICAgICAgIHF1ZXVlVGFza1RvUHJvY2Vzc0Z1
bGZpbGxDYWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0
LiBJZiBwcm9taXNlJ3Mgc3RhdGUgaXMgcmVqZWN0ZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNz
IHByb21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggcHJvbWlzZSdzIHJlc3VsdC4KKyAgICBp
ZiAobV9zdGF0ZSA9PSBSZWplY3RlZCkgeworICAgICAgICBxdWV1ZVRhc2tUb1Byb2Nlc3NSZWpl
Y3RDYWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpxdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNz
RnVsZmlsbENhbGxiYWNrc0ZvclRhc2ssIEpTUHJvbWlzZVRhc2tDb250ZXh0OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgdGhpcykpOworICAgIGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUjog
RXZlbnQgbG9vcCBub3Qgc3VwcG9ydGVkLiIpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cXVldWVU
YXNrVG9Qcm9jZXNzUmVqZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVu
dExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzUmVqZWN0Q2FsbGJhY2tz
Rm9yVGFzaywgSlNQcm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZShleGVjLT52bSgpLCB0aGlzKSk7
CisgICAgZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBz
dXBwb3J0ZWQuIik7Cit9CisKK3ZvaWQgSlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNr
c0ZvclRhc2soRXhlY1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7Cisg
ICAgSlNQcm9taXNlVGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0
PEpTUHJvbWlzZVRhc2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSogcHJv
bWlzZSA9IHByb21pc2VUYXNrQ29udGV4dC0+bV9wcm9taXNlLmdldCgpOworCisgICAgcHJvbWlz
ZS0+cHJvY2Vzc0Z1bGZpbGxDYWxsYmFja3NXaXRoVmFsdWUoZXhlYywgcHJvbWlzZS0+cmVzdWx0
KCkpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cHJvY2Vzc1JlamVjdENhbGxiYWNrc0ZvclRhc2so
RXhlY1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7CisgICAgSlNQcm9t
aXNlVGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTUHJvbWlz
ZVRhc2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IHBy
b21pc2VUYXNrQ29udGV4dC0+bV9wcm9taXNlLmdldCgpOworCisgICAgcHJvbWlzZS0+cHJvY2Vz
c1JlamVjdENhbGxiYWNrc1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLT5yZXN1bHQoKSk7Cit9CisK
K3ZvaWQgSlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gRnVsZmls
bGVkKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdWxmaWxsQ2FsbGJhY2tzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBtX2Z1bGZpbGxDYWxsYmFj
a3NbaV0uZ2V0KCk7CisKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAg
ICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUp
OworICAgICAgICBjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMs
IGFyZ3VtZW50cyk7CisgICAgfQorICAgIAorICAgIG1fZnVsZmlsbENhbGxiYWNrcy5jbGVhcigp
OworfQorCit2b2lkIEpTUHJvbWlzZTo6cHJvY2Vzc1JlamVjdENhbGxiYWNrc1dpdGhWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0g
UmVqZWN0ZWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlamVjdENhbGxiYWNr
cy5zaXplKCk7ICsraSkgeworICAgICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gbV9yZWplY3RDYWxs
YmFja3NbaV0uZ2V0KCk7CisKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOwor
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFs
dWUpOworICAgICAgICBjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRo
aXMsIGFyZ3VtZW50cyk7CisgICAgfQorICAgIAorICAgIG1fcmVqZWN0Q2FsbGJhY2tzLmNsZWFy
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VfaAorI2RlZmluZSBKU1Byb21pc2VfaAorCisj
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTUHJvbWlzZVJlc29sdmVyOworY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKK3N0cnVjdCBU
YXNrQ29udGV4dDsKKworY2xhc3MgSlNQcm9taXNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisK
KyAgICBzdGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBzZXRSZXNvbHZlcihWTSYsIEpT
UHJvbWlzZVJlc29sdmVyKik7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyKCkgY29u
c3Q7CisKKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgUGVuZGluZywKKyAgICAgICAgRnVsZmls
bGVkLAorICAgICAgICBSZWplY3RlZCwKKyAgICB9OworCisgICAgdm9pZCBzZXRTdGF0ZShTdGF0
ZSk7CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UmVzdWx0KFZNJiwg
SlNWYWx1ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQoKSBjb25zdDsKKworICAgIHZvaWQgYXBwZW5k
Q2FsbGJhY2tzKEV4ZWNTdGF0ZSosIEludGVybmFsRnVuY3Rpb24qIGZ1bGZpbGxDYWxsYmFjaywg
SW50ZXJuYWxGdW5jdGlvbiogcmVqZWN0Q2FsbGJhY2spOworCisgICAgdm9pZCBxdWV1ZVRhc2tU
b1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSopOworICAgIHZvaWQgcXVldWVUYXNr
VG9Qcm9jZXNzUmVqZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSopOworICAgIHZvaWQgcHJvY2Vzc0Z1
bGZpbGxDYWxsYmFja3NXaXRoVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgdm9pZCBw
cm9jZXNzUmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09i
amVjdDo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlKFZNJiwgU3Ry
dWN0dXJlKik7CisKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRnVsZmlsbENhbGxiYWNrc0ZvclRh
c2soRXhlY1N0YXRlKiwgVGFza0NvbnRleHQqKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzUmVq
ZWN0Q2FsbGJhY2tzRm9yVGFzayhFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworCisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVz
b2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fcmVzdWx0Owor
ICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlvbj4gPiBtX2Z1bGZpbGxDYWxs
YmFja3M7CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPiA+IG1fcmVq
ZWN0Q2FsbGJhY2tzOworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZUNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVz
b2x2ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VD
YWxsYmFjazo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTUHJvbWlzZUNhbGxiYWNrKSB9OworCitKU1Byb21pc2VDYWxsYmFj
ayogSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VSZXNvbHZl
ciogcmVzb2x2ZXIsIEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgSlNQcm9taXNlQ2FsbGJh
Y2sqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ2Fs
bGJhY2s+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VDYWxsYmFjayhnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgYWxnb3JpdGhtKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhl
YywgcmVzb2x2ZXIpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBK
U1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDYWxsYmFjazo6SlNQ
cm9taXNlQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEFsZ29yaXRobSBhbGdvcml0aG0pCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQorICAgICwgbV9hbGdvcml0aG0oYWxnb3JpdGhtKQorewor
fQorCit2b2lkIEpTUHJvbWlzZUNhbGxiYWNrOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlcikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihleGVjLT52bSgpLCAiUHJvbWlzZUNhbGxiYWNrIik7CisgICAgbV9yZXNvbHZlci5zZXQo
ZXhlYy0+dm0oKSwgdGhpcywgcmVzb2x2ZXIpOworfQorCit2b2lkIEpTUHJvbWlzZUNhbGxiYWNr
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNQcm9taXNlQ2FsbGJhY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlQ2FsbGJh
Y2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAg
ICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlcik7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ2FsbGJhY2s6OmNhbGxQ
cm9taXNlQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZUNhbGxiYWNr
KiBwcm9taXNlQ2FsbGJhY2sgPSBqc0Nhc3Q8SlNQcm9taXNlQ2FsbGJhY2sqPihleGVjLT5jYWxs
ZWUoKSk7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZUNhbGxiYWNr
LT5tX3Jlc29sdmVyLmdldCgpOworCisgICAgLy8gMS4gTGV0IHZhbHVlIGJlIHRoZSBmaXJzdCBh
cmd1bWVudCB0aGF0IGlzIHBhc3NlZCwgYW5kIHVuZGVmaW5lZCBvdGhlcndpc2UuCisgICAgSlNW
YWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworCisgICAgLy8gMi4gUnVuIHJlc29sdmVy
J3MgYWxnb3JpdGhtIHdpdGggdmFsdWUgYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIHNldC4KKyAg
ICBzd2l0Y2ggKHByb21pc2VDYWxsYmFjay0+bV9hbGdvcml0aG0pIHsKKyAgICBjYXNlIEpTUHJv
bWlzZUNhbGxiYWNrOjpGdWxmaWxsOgorICAgICAgICByZXNvbHZlci0+ZnVsZmlsbChleGVjLCB2
YWx1ZSwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBKU1Byb21pc2VDYWxsYmFj
azo6UmVzb2x2ZToKKyAgICAgICAgcmVzb2x2ZXItPnJlc29sdmUoZXhlYywgdmFsdWUsIHRydWUp
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdDoK
KyAgICAgICAgcmVzb2x2ZXItPnJlamVjdChleGVjLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKK0NhbGxUeXBlIEpTUHJvbWlzZUNhbGxiYWNrOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2Fs
bFByb21pc2VDYWxsYmFjazsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCisKKworCitj
b25zdCBDbGFzc0luZm8gSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNl
V3JhcHBlckNhbGxiYWNrKSB9OworCitKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIEpTUHJvbWlz
ZVdyYXBwZXJDYWxsYmFjazo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyKiBy
ZXNvbHZlciwgSlNWYWx1ZSBjYWxsYmFjaykKK3sKKyAgICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJh
Y2sqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlV3Jh
cHBlckNhbGxiYWNrPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
ZXhlYywgcmVzb2x2ZXIsIGNhbGxiYWNrKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisK
K1N0cnVjdHVyZSogSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pT
UHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJu
YWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1Byb21p
c2VXcmFwcGVyQ2FsbGJhY2s6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9t
aXNlUmVzb2x2ZXIqIHJlc29sdmVyLCBKU1ZhbHVlIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNlV3JhcHBlckNhbGxiYWNrIik7CisgICAg
bV9yZXNvbHZlci5zZXQoZXhlYy0+dm0oKSwgdGhpcywgcmVzb2x2ZXIpOworICAgIG1fY2FsbGJh
Y2suc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGNhbGxiYWNrKTsKK30KKwordm9pZCBKU1Byb21pc2VX
cmFwcGVyQ2FsbGJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVzb2x2ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2NhbGxiYWNrKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21p
c2VXcmFwcGVyQ2FsbGJhY2s6OmNhbGxQcm9taXNlV3JhcHBlckNhbGxiYWNrKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIHByb21pc2VXcmFwcGVyQ2Fs
bGJhY2sgPSBqc0Nhc3Q8SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKj4oZXhlYy0+Y2FsbGVlKCkp
OworCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZVdyYXBwZXJDYWxs
YmFjay0+bV9yZXNvbHZlci5nZXQoKTsKKyAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJvbWlzZVdy
YXBwZXJDYWxsYmFjay0+bV9jYWxsYmFjay5nZXQoKTsKKworICAgIC8vIDEuIExldCBhcmd1bWVu
dCBiZSB0aGUgZmlyc3QgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQsIGFuZCB1bmRlZmluZWQgb3Ro
ZXJ3aXNlLgorICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKworICAg
IC8vIDIuIFNldCBjYWxsYmFjaydzIGNhbGxiYWNrIHRoaXMgdmFsdWUgdG8gcmVzb2x2ZXIncyBh
c3NvY2lhdGVkIHByb21pc2UuCisgICAgLy8gMy4gTGV0IHZhbHVlIGJlIHRoZSByZXN1bHQgb2Yg
aW52b2tpbmcgY2FsbGJhY2sgd2l0aCBhcmd1bWVudCBhcyBhcmd1bWVudC4KKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2Fs
bGJhY2ssIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsK
KworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGNhbGxiYWNrQXJndW1lbnRzOworICAgIGNhbGxi
YWNrQXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6
Y2FsbChleGVjLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCByZXNvbHZlci0+cHJvbWlz
ZSgpLCBjYWxsYmFja0FyZ3VtZW50cyk7CisKKyAgICAvLyA0LiBJZiBpbnZva2luZyBjYWxsYmFj
ayB0aHJldyBhbiBleGNlcHRpb24sIGNhdGNoIGl0IGFuZCBydW4gcmVzb2x2ZXIncyByZWplY3QK
KyAgICAvLyAgICB3aXRoIHRoZSB0aHJvd24gZXhjZXB0aW9uIGFzIGFyZ3VtZW50IGFuZCB0aGUg
c3luY2hyb25vdXMgZmxhZyBzZXQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Cisg
ICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4
ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdChleGVjLCBl
eGNlcHRpb24sIHRydWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIH0KKworICAgIC8vIDUuIE90aGVyd2lzZSwgcnVuIHJlc29sdmVyJ3MgcmVz
b2x2ZSB3aXRoIHZhbHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxhZyBzZXQuCisgICAgcmVzb2x2
ZXItPnJlc29sdmUoZXhlYywgdmFsdWUsIHRydWUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlV3JhcHBlckNhbGxi
YWNrOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFByb21pc2VXcmFwcGVyQ2FsbGJhY2s7CisgICAg
cmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNh
bGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNQcm9taXNlQ2FsbGJhY2tfaAorI2RlZmluZSBKU1Byb21pc2VDYWxsYmFja19oCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU1Byb21pc2VSZXNvbHZlcjsKKworY2xhc3MgSlNQcm9taXNlQ2FsbGJhY2sgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgYSBwb2ludGVyLXRvLW1lbWJl
ciBmdW5jdGlvbiBpbnN0ZWFkLgorICAgIGVudW0gQWxnb3JpdGhtIHsKKyAgICAgICAgRnVsZmls
bCwKKyAgICAgICAgUmVzb2x2ZSwKKyAgICAgICAgUmVqZWN0LAorICAgIH07CisKKyAgICBzdGF0
aWMgSlNQcm9taXNlQ2FsbGJhY2sqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIEpTUHJvbWlzZVJlc29sdmVyKiwgQWxnb3JpdGhtKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUHJvbWlzZUNhbGxiYWNr
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQWxnb3JpdGhtKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTUHJvbWlzZVJlc29sdmVyKik7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpT
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxQcm9taXNlQ2FsbGJhY2soRXhlY1N0YXRlKik7CisgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJp
ZXI8SlNQcm9taXNlUmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgQWxnb3JpdGhtIG1fYWxnb3Jp
dGhtOworfTsKKworY2xhc3MgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworCisgICAgc3RhdGljIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogY3JlYXRlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBKU1Zh
bHVlIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2
YXRlOgorICAgIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayhKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUmVz
b2x2ZXIqLCBKU1ZhbHVlIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOworCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFBy
b21pc2VXcmFwcGVyQ2FsbGJhY2soRXhlY1N0YXRlKik7CisgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9t
aXNlUmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fY2Fs
bGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZUNh
bGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTUHJvbWlzZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTUHJvbWlzZUNv
bnN0cnVjdG9yKTsKKworLy8gc3RhdGljIFByb21pc2UgZnVsZmlsbChhbnkgdmFsdWUpOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5j
RnVsZmlsbChFeGVjU3RhdGUqKTsKKy8vIHN0YXRpYyBQcm9taXNlIHJlc29sdmUoYW55IHZhbHVl
KTsgLy8gc2FtZSBhcyBhbnkodmFsdWUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlKEV4ZWNTdGF0ZSopOworLy8gc3Rh
dGljIFByb21pc2UgcmVqZWN0KGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZWplY3QoRXhlY1N0YXRlKik7CisK
K30KKworI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6cHJv
bWlzZUNvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlQ29uc3Ry
dWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmgKK0Bi
ZWdpbiBwcm9taXNlQ29uc3RydWN0b3JUYWJsZQorICBmdWxmaWxsICAgICAgICAgSlNQcm9taXNl
Q29uc3RydWN0b3JGdW5jRnVsZmlsbCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IHJlc29sdmUgICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVqZWN0ICAgICAgICAgIEpTUHJvbWlzZUNvbnN0
cnVjdG9yRnVuY1JlamVjdCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAor
Ki8KKworSlNQcm9taXNlQ29uc3RydWN0b3IqIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNQcm9taXNlUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQoreworICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTUHJvbWlzZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9taXNlQ29u
c3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbihleGVjLCBwcm9taXNlUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0
b3I7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSlNQcm9taXNlQ29uc3RydWN0b3I6OkpTUHJvbWlzZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxG
dW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgCit7Cit9CisKK3ZvaWQgSlNQcm9taXNl
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlUHJv
dG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPnZtKCksICJQcm9taXNlIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvbWlzZVByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDIpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFy
Z3VtZW50KDApOworCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOworICAgIAorICAgIC8vIDEuIExldCBwcm9t
aXNlIGJlIGEgbmV3IHByb21pc2UuCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNl
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOwor
CisgICAgLy8gMi4gTGV0IHJlc29sdmVyIGJlIHByb21pc2UncyBhc3NvY2lhdGVkIHJlc29sdmVy
LgorICAgIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpj
cmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUo
KSwgcHJvbWlzZSk7CisgICAgcHJvbWlzZS0+c2V0UmVzb2x2ZXIoZXhlYy0+dm0oKSwgcmVzb2x2
ZXIpOworCisgICAgLy8gMy4gU2V0IGluaXQncyBjYWxsYmFjayB0aGlzIHZhbHVlIHRvIHByb21p
c2UuCisgICAgLy8gNC4gSW52b2tlIGluaXQgd2l0aCByZXNvbHZlciBwYXNzZWQgYXMgcGFyYW1l
dGVyLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGluaXRBcmd1bWVudHM7CisgICAgaW5pdEFy
Z3VtZW50cy5hcHBlbmQocmVzb2x2ZXIpOworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgcHJvbWlzZSwgaW5pdEFyZ3VtZW50cyk7CisKKyAgICAvLyA1LiBJZiBp
bml0IHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQsIGFuZCB0aGVuLCBpZiByZXNvbHZlcidz
IHJlc29sdmVkIGZsYWcKKyAgICAvLyAgICBpcyB1bnNldCwgcnVuIHJlc29sdmVyJ3MgcmVqZWN0
IHdpdGggdGhlIHRocm93biBleGNlcHRpb24gYXMgYXJndW1lbnQuCisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0
aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgcmVzb2x2
ZXItPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitDb25zdHJ1Y3RUeXBlIEpTUHJv
bWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
IGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
b25zdHJ1Y3RQcm9taXNlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2Fs
bFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JikKK3sKKyAgICByZXR1cm4gQ2FsbFR5cGVOb25lOworfQorCitib29sIEpTUHJvbWlzZUNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBF
eGVjU3RhdGU6OnByb21pc2VDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNl
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0Z1bGZpbGwoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0
ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlz
ZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdC0+
cHJvbWlzZVN0cnVjdHVyZSgpKTsKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBK
U1Byb21pc2VSZXNvbHZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdC0+cHJvbWlz
ZVJlc29sdmVyU3RydWN0dXJlKCksIHByb21pc2UpOworICAgIHByb21pc2UtPnNldFJlc29sdmVy
KGV4ZWMtPnZtKCksIHJlc29sdmVyKTsKKworICAgIHJlc29sdmVyLT5mdWxmaWxsKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JG
dW5jUmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENv
dW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwor
CisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUoZXhlYy0+dm0oKSwg
Z2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOworICAgIEpTUHJvbWlzZVJlc29sdmVy
KiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFs
T2JqZWN0LT5wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUoKSwgcHJvbWlzZSk7CisgICAgcHJvbWlz
ZS0+c2V0UmVzb2x2ZXIoZXhlYy0+dm0oKSwgcmVzb2x2ZXIpOworCisgICAgcmVzb2x2ZXItPnJl
c29sdmUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwcm9taXNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21p
c2VDb25zdHJ1Y3RvckZ1bmNSZWplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhl
Yy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwor
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKKyAgICBKU1By
b21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBKU1Byb21pc2VSZXNvbHZlcjo6Y3JlYXRlKGV4ZWMt
PnZtKCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKCksIHByb21pc2Up
OworICAgIHByb21pc2UtPnNldFJlc29sdmVyKGV4ZWMtPnZtKCksIHJlc29sdmVyKTsKKworICAg
IHJlc29sdmVyLT5yZWplY3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNQcm9t
aXNlQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOworCitjbGFzcyBKU1Byb21p
c2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VDb25z
dHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
SlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9t
aXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0
dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VDb25z
dHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTUHJvbWlzZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpT
UHJvbWlzZVJlc29sdmVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBU1NFUlRfSEFTX1RSSVZJ
QUxfREVTVFJVQ1RPUihKU1Byb21pc2VQcm90b3R5cGUpOworCisvLyBQcm9taXNlIHRoZW4oW1Ry
ZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55Q2FsbGJhY2sgZnVsZmlsbENhbGxi
YWNrLCBbVHJlYXRVbmRlZmluZWRBcz1NaXNzaW5nXSBvcHRpb25hbCBBbnlDYWxsYmFjayByZWpl
Y3RDYWxsYmFjayk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21p
c2VQcm90b3R5cGVGdW5jVGhlbihFeGVjU3RhdGUqKTsKKy8vIFByb21pc2UgY2F0Y2goW1RyZWF0
VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55Q2FsbGJhY2sgcmVqZWN0Q2FsbGJhY2sp
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUHJvdG90eXBl
RnVuY0NhdGNoKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5
cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNQcm9taXNl
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90eXBlIiwgJkpTTm9uRmluYWxPYmpl
Y3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlUHJvdG90eXBlVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNQcm9taXNlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEpTUHJv
bWlzZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHByb21pc2VQcm90b3R5cGVUYWJsZQorICB0aGVu
ICAgICAgICAgSlNQcm9taXNlUHJvdG90eXBlRnVuY1RoZW4gICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgorICBjYXRjaCAgICAgICAgSlNQcm9taXNlUHJvdG90eXBlRnVuY0NhdGNoICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSlNQcm9taXNlUHJvdG90
eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNQcm9taXNlUHJvdG90eXBl
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG9i
amVjdDsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+dm0o
KSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUHJvbWlzZVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCkpOworfQorCitib29sIEpTUHJvbWlzZVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cHJvbWlzZVByb3Rv
dHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1By
b21pc2VQcm90b3R5cGVGdW5jVGhlbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNl
KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2UqPihleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgb2YgdGhlbiBtdXN0IGJlIGEgUHJv
bWlzZSIpKTsKKworICAgIEpTVmFsdWUgZnVsZmlsbENhbGxiYWNrID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgaWYgKCFmdWxmaWxsQ2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShmdWxmaWxsQ2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCIp
KTsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZSByZWplY3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOworICAgIGlmICghcmVqZWN0Q2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShyZWplY3RDYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIHNlY29uZCBhcmd1bWVu
dCIpKTsKKyAgICB9CisKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y2FsbGVlLT5nbG9iYWxPYmplY3QoKTsKKworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3
IHByb21pc2UuCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOworCisgICAgLy8gMi4g
TGV0IHJlc29sdmVyIGJlIHByb21pc2UncyBhc3NvY2lhdGVkIHJlc29sdmVyLgorICAgIEpTUHJv
bWlzZVJlc29sdmVyKiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUoZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUoKSwgcHJvbWlzZSk7
CisgICAgcHJvbWlzZS0+c2V0UmVzb2x2ZXIoZXhlYy0+dm0oKSwgcmVzb2x2ZXIpOworCisgICAg
Ly8gMy4gTGV0IGZ1bGZpbGxXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVyIGNhbGxiYWNrIGZv
ciByZXNvbHZlciBhbmQgZnVsZmlsbENhbGxiYWNrIGlmIGZ1bGZpbGxDYWxsYmFjayBpcworICAg
IC8vICAgIG5vdCBvbWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFu
ZCBpdHMgZnVsZmlsbCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVybmFsRnVuY3Rpb24q
IGZ1bGZpbGxXcmFwcGVyOworICAgIGlmICghZnVsZmlsbENhbGxiYWNrLmlzVW5kZWZpbmVkKCkp
CisgICAgICAgIGZ1bGZpbGxXcmFwcGVyID0gSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VXcmFwcGVyQ2FsbGJh
Y2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIGZ1bGZpbGxDYWxsYmFjayk7CisgICAgZWxzZQorICAg
ICAgICBmdWxmaWxsV3JhcHBlciA9IEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgpLCByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZpbGwpOworCisgICAgLy8gNC4gTGV0IHJlamVj
dFdyYXBwZXIgYmUgYSBwcm9taXNlIHdyYXBwZXIgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBy
ZWplY3RDYWxsYmFjayBpZiByZWplY3RDYWxsYmFjayBpcworICAgIC8vICAgIG5vdCBvbWl0dGVk
IGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgcmVqZWN0IGFsZ29y
aXRobSBvdGhlcndpc2UuCisgICAgSW50ZXJuYWxGdW5jdGlvbiogcmVqZWN0V3JhcHBlcjsKKyAg
ICBpZiAoIXJlamVjdENhbGxiYWNrLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJlamVjdFdyYXBw
ZXIgPSBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpLCByZXNvbHZl
ciwgcmVqZWN0Q2FsbGJhY2spOworICAgIGVsc2UKKyAgICAgICAgcmVqZWN0V3JhcHBlciA9IEpT
UHJvbWlzZUNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
PnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgpLCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6
OlJlamVjdCk7CisKKyAgICAvLyA1LiBBcHBlbmQgZnVsZmlsbFdyYXBwZXIgYW5kIHJlamVjdFdy
YXBwZXIgdG8gdGhlIGNvbnRleHQgb2JqZWN0LgorICAgIHRoaXNPYmplY3QtPmFwcGVuZENhbGxi
YWNrcyhleGVjLCBmdWxmaWxsV3JhcHBlciwgcmVqZWN0V3JhcHBlcik7CisKKyAgICAvLyA2LiBS
ZXR1cm4gcHJvbWlzZS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1bmNDYXRj
aChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlKiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Byb21pc2UqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiUmVjZWl2ZXIgb2YgY2F0Y2ggbXVzdCBiZSBhIFByb21pc2UiKSk7CisgICAgCisgICAg
SlNWYWx1ZSByZWplY3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghcmVq
ZWN0Q2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
KyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RDYWxsYmFjaywg
Y2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4
cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IikpOworICAgIH0KKworICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgp
OworCisgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KKyAgICBKU1Byb21p
c2UqIHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3Qt
PnByb21pc2VTdHJ1Y3R1cmUoKSk7CisKKyAgICAvLyAyLiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlz
ZSdzIGFzc29jaWF0ZWQgcmVzb2x2ZXIuCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVy
ID0gSlNQcm9taXNlUmVzb2x2ZXI6OmNyZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QtPnBy
b21pc2VSZXNvbHZlclN0cnVjdHVyZSgpLCBwcm9taXNlKTsKKyAgICBwcm9taXNlLT5zZXRSZXNv
bHZlcihleGVjLT52bSgpLCByZXNvbHZlcik7CisKKyAgICAvLyAzLiBMZXQgZnVsZmlsbENhbGxi
YWNrIGJlIGEgbmV3IHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgZnVsZmls
bCBhbGdvcml0aG0uCisgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVsZmlsbFdyYXBwZXIgPSBKU1By
b21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5w
cm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpG
dWxmaWxsKTsKKworICAgIC8vIDQuIExldCByZWplY3RXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFw
cGVyIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQgcmVqZWN0Q2FsbGJhY2sgaWYgcmVqZWN0Q2Fs
bGJhY2sgaXMKKyAgICAvLyAgICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZv
ciByZXNvbHZlciBhbmQgaXRzIHJlamVjdCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVy
bmFsRnVuY3Rpb24qIHJlamVjdFdyYXBwZXI7CisgICAgaWYgKCFyZWplY3RDYWxsYmFjay5pc1Vu
ZGVmaW5lZCgpKQorICAgICAgICByZWplY3RXcmFwcGVyID0gSlNQcm9taXNlV3JhcHBlckNhbGxi
YWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VXcmFw
cGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIHJlamVjdENhbGxiYWNrKTsKKyAgICBl
bHNlCisgICAgICAgIHJlamVjdFdyYXBwZXIgPSBKU1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUo
KSwgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZWplY3QpOworCisgICAgLy8gNS4gQXBw
ZW5kIGZ1bGZpbGxXcmFwcGVyIGFuZCByZWplY3RXcmFwcGVyIHRvIHRoZSBjb250ZXh0IG9iamVj
dC4KKyAgICB0aGlzT2JqZWN0LT5hcHBlbmRDYWxsYmFja3MoZXhlYywgZnVsZmlsbFdyYXBwZXIs
IHJlamVjdFdyYXBwZXIpOworCisgICAgLy8gNi4gUmV0dXJuIHByb21pc2UuCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5
cGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEpTUHJvbWlzZVByb3RvdHlwZV9oCisjZGVmaW5lIEpTUHJvbWlzZVByb3Rv
dHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNQcm9taXNlUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJv
bWlzZVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAgIEpTUHJv
bWlzZVByb3RvdHlwZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1By
b21pc2VQcm90b3R5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU1Byb21pc2VSZXNvbHZlci5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5j
bHVkZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZl
cjo6c19pbmZvID0geyAiUHJvbWlzZVJlc29sdmVyIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VSZXNvbHZlcikgfTsKKworSlNQcm9taXNlUmVzb2x2
ZXIqIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNQcm9taXNlKiBwcm9taXNlKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlcj4odm0uaGVhcCkp
IEpTUHJvbWlzZVJlc29sdmVyKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIHByb21pc2UpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSog
SlNQcm9taXNlUmVzb2x2ZXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUmVzb2x2ZXI6OkpT
UHJvbWlzZVJlc29sdmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05v
bkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2lzUmVzb2x2ZWQoZmFsc2UpCit7
Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQ
cm9taXNlKiBwcm9taXNlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgbV9wcm9taXNlLnNldCh2bSwgdGhpcywgcHJv
bWlzZSk7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VSZXNvbHZlciog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VSZXNvbHZlcio+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBDT01QSUxFX0FT
U0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworCisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlKTsKK30KKworSlNQcm9taXNlKiBKU1Byb21pc2VS
ZXNvbHZlcjo6cHJvbWlzZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsK
K30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZnVsZmlsbElmTm90UmVzb2x2ZWQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghbV9pc1Jlc29sdmVkKSB7Cisg
ICAgICAgIG1faXNSZXNvbHZlZCA9IHRydWU7CisgICAgICAgIGZ1bGZpbGwoZXhlYywgdmFsdWUp
OworICAgIH0KK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6cmVzb2x2ZUlmTm90UmVzb2x2
ZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghbV9pc1Jlc29s
dmVkKSB7CisgICAgICAgIG1faXNSZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHJlc29sdmUoZXhl
YywgdmFsdWUpOworICAgIH0KK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6cmVqZWN0SWZO
b3RSZXNvbHZlZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFt
X2lzUmVzb2x2ZWQpIHsKKyAgICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmVq
ZWN0KGV4ZWMsIHZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OmZ1
bGZpbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBib29sIHN5bmNocm9ub3VzKQor
eworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFzc29jaWF0
ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIGZ1bGZpbGxlZC4K
KyAgICBtX3Byb21pc2UtPnNldFN0YXRlKEpTUHJvbWlzZTo6RnVsZmlsbGVkKTsKKworICAgIC8v
IDMuIFNldCBwcm9taXNlJ3MgcmVzdWx0IHRvIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+c2V0UmVz
dWx0KGV4ZWMtPnZtKCksIHZhbHVlKTsKKworICAgIC8vIDQuIElmIHRoZSBzeW5jaHJvbm91cyBm
bGFnIGlzIHNldCwgcHJvY2VzcyBwcm9taXNlJ3MgZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1
ZS4KKyAgICBpZiAoc3luY2hyb25vdXMpIHsKKyAgICAgICAgbV9wcm9taXNlLT5wcm9jZXNzRnVs
ZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShleGVjLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgLy8gNS4gT3RoZXJ3aXNlLCB0aGUgc3luY2hyb25vdXMgZmxhZyBpcyB1
bnNldCwgcXVldWUgYSB0YXNrIHRvIHByb2Nlc3MgcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tz
IHdpdGggdmFsdWUuCisgICAgbV9wcm9taXNlLT5xdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2Fs
bGJhY2tzKGV4ZWMpOworfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZXNvbHZlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICAvLyAx
LiBMZXQgdGhlbiBiZSBudWxsLgorICAgIEpTVmFsdWUgdGhlbiA9IGpzTnVsbCgpOworICAgIAor
ICAgIC8vIDIuIElmIHZhbHVlIGlzIGEgSmF2YVNjcmlwdCBPYmplY3QsIHNldCB0aGVuIHRvIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgSmF2YVNjcmlwdCBbW0dldF1dIGludGVybmFsCisgICAg
Ly8gICAgbWV0aG9kIG9mIHZhbHVlIHdpdGggcHJvcGVydHkgbmFtZSB0aGVuLgorICAgIGlmICh2
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRoZW4gPSB2YWx1ZS5nZXQoZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRoZW4pOworCisgICAgICAgIC8vIDMuIElmIGNhbGxpbmcgdGhlIFtb
R2V0XV0gaW50ZXJuYWwgbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQgYW5kIHJ1
biByZWplY3Qgd2l0aCB0aGUgdGhyb3duCisgICAgICAgIC8vICAgIGV4Y2VwdGlvbiBhbmQgdGhl
IHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LCBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMu
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1
ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CisKKyAgICAgICAgICAgIHJlamVjdChleGVjLCBleGNlcHRpb24sIHRydWUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gNC4gSWYgSmF2
YVNjcmlwdCBJc0NhbGxhYmxlKHRoZW4pIGlzIHRydWUsIHJ1biB0aGVzZSBzdWJzdGVwcyBhbmQg
dGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHM6CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodGhlbiwgY2FsbERh
dGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAg
ICAvLyA0LjEuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBwcm9taXNlIGNhbGxiYWNrIGZvciB0
aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZXNvbHZlIGFsZ29yaXRobS4KKyAgICAgICAgICAg
IEpTUHJvbWlzZUNhbGxiYWNrKiBmdWxmaWxsQ2FsbGJhY2sgPSBKU1Byb21pc2VDYWxsYmFjazo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBnbG9iYWxPYmplY3QoKS0+cHJvbWlzZUNhbGxi
YWNrU3RydWN0dXJlKCksIHRoaXMsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZXNvbHZlKTsKKworICAg
ICAgICAgICAgLy8gNC4yLiBMZXQgcmVqZWN0Q2FsbGJhY2sgYmUgYSBwcm9taXNlIGNhbGxiYWNr
IGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZWplY3QgYWxnb3JpdGhtLgorICAgICAg
ICAgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHJlamVjdENhbGxiYWNrID0gSlNQcm9taXNlQ2FsbGJh
Y2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgZ2xvYmFsT2JqZWN0KCktPnByb21pc2VD
YWxsYmFja1N0cnVjdHVyZSgpLCB0aGlzLCBKU1Byb21pc2VDYWxsYmFjazo6UmVqZWN0KTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gNC4zLiBDYWxsIHRoZSBKYXZhU2NyaXB0IFtbQ2Fs
bF1dIGludGVybmFsIG1ldGhvZCBvZiB0aGVuIHdpdGggdGhpcyB2YWx1ZSB2YWx1ZSBhbmQgZnVs
ZmlsbENhbGxiYWNrCisgICAgICAgICAgICAvLyAgICAgIGFuZCByZWplY3RDYWxsYmFjayBhcyBh
cmd1bWVudHMuCisgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciB0aGVuQXJndW1lbnRz
OworICAgICAgICAgICAgdGhlbkFyZ3VtZW50cy5hcHBlbmQoZnVsZmlsbENhbGxiYWNrKTsKKyAg
ICAgICAgICAgIHRoZW5Bcmd1bWVudHMuYXBwZW5kKHJlamVjdENhbGxiYWNrKTsKKyAgICAgICAg
ICAgIGNhbGwoZXhlYywgdGhlbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1ZSwgdGhlbkFyZ3Vt
ZW50cyk7CisKKyAgICAgICAgICAgIC8vIDQuNCBJZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRl
cm5hbCBtZXRob2QgdGhyZXcgYW4gZXhjZXB0aW9uLCBjYXRjaCBpdCBhbmQgcnVuIGNvbnRleHQg
b2JqZWN0J3MKKyAgICAgICAgICAgIC8vICAgICByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGV4Y2Vw
dGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LgorICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24g
PSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlv
bigpOworCisgICAgICAgICAgICAgICAgcmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbiwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gNS4gUnVuIGNvbnRleHQgb2JqZWN0J3MgZnVs
ZmlsbCB3aXRoIHZhbHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxhZyBpZiBzZXQuCisgICAgZnVs
ZmlsbChleGVjLCB2YWx1ZSwgc3luY2hyb25vdXMpOworfQorCit2b2lkIEpTUHJvbWlzZVJlc29s
dmVyOjpyZWplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBib29sIHN5bmNocm9u
b3VzKQoreworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFz
c29jaWF0ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIHJlamVj
dGVkLgorICAgIG1fcHJvbWlzZS0+c2V0U3RhdGUoSlNQcm9taXNlOjpSZWplY3RlZCk7CisKKyAg
ICAvLyAzLiBTZXQgcHJvbWlzZSdzIHJlc3VsdCB0byB2YWx1ZS4KKyAgICBtX3Byb21pc2UtPnNl
dFJlc3VsdChleGVjLT52bSgpLCB2YWx1ZSk7CisKKyAgICAvLyA0LiBJZiB0aGUgc3luY2hyb25v
dXMgZmxhZyBpcyBzZXQsIHByb2Nlc3MgcHJvbWlzZSdzIHJlamVjdCBjYWxsYmFja3Mgd2l0aCB2
YWx1ZS4KKyAgICBpZiAoc3luY2hyb25vdXMpIHsKKyAgICAgICAgbV9wcm9taXNlLT5wcm9jZXNz
UmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSBzeW5jaHJvbm91cyBmbGFnIGlz
IHVuc2V0LCBxdWV1ZSBhIHRhc2sgdG8gcHJvY2VzcyBwcm9taXNlJ3MgcmVqZWN0IGNhbGxiYWNr
cyB3aXRoIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+cXVldWVUYXNrVG9Qcm9jZXNzUmVqZWN0Q2Fs
bGJhY2tzKGV4ZWMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNQ
cm9taXNlUmVzb2x2ZXJfaAorI2RlZmluZSBKU1Byb21pc2VSZXNvbHZlcl9oCisKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworCitj
bGFzcyBKU1Byb21pc2VSZXNvbHZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU1By
b21pc2VSZXNvbHZlciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNQcm9taXNlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSgp
IGNvbnN0OworCisgICAgdm9pZCBmdWxmaWxsSWZOb3RSZXNvbHZlZChFeGVjU3RhdGUqLCBKU1Zh
bHVlKTsKKyAgICB2b2lkIHJlc29sdmVJZk5vdFJlc29sdmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUp
OworICAgIHZvaWQgcmVqZWN0SWZOb3RSZXNvbHZlZChFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKwor
ICAgIHZvaWQgZnVsZmlsbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sIHN5bmNocm9ub3VzID0g
ZmFsc2UpOworICAgIHZvaWQgcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sIHN5bmNo
cm9ub3VzID0gZmFsc2UpOworICAgIHZvaWQgcmVqZWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJv
b2wgc3luY2hyb25vdXMgPSBmYWxzZSk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgSlNQcm9taXNlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKKworcHJpdmF0ZToKKyAgICBKU1Byb21pc2VSZXNvbHZlcihWTSYsIFN0cnVjdHVyZSop
OworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworCisgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZT4gbV9wcm9taXNlOworICAgIGJvb2wgbV9p
c1Jlc29sdmVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21p
c2VSZXNvbHZlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1
Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKSB9OworCitKU1Byb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUp
Cit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb21pc2VQ
cm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1By
b21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZVJlc29s
dmVyQ29uc3RydWN0b3I6OkpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSAKK3sKK30KKwordm9pZCBKU1Byb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUpCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2VSZXNvbHZlciIpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIHByb21pc2VSZXNvbHZlclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworfQorCitDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7
CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVOb25lOworfQorCitDYWxsVHlwZSBKU1Byb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpCit7Cisg
ICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVzb2x2ZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3JfaAorI2RlZmluZSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gKKwor
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOworCitjbGFzcyBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
KworcHJpdmF0ZToKKyAgICBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3JfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVy
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlKTsKKworLy8gdm9pZCBmdWxmaWxsKG9wdGlvbmFsIGFueSB2YWx1
ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZUZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSopOworLy8gdm9pZCByZXNvbHZlKG9wdGlv
bmFsIGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZXNvbHZlKEV4ZWNTdGF0ZSopOworLy8gdm9pZCBy
ZWplY3Qob3B0aW9uYWwgYW55IHZhbHVlKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY1JlamVjdChFeGVjU3RhdGUqKTsK
KworfQorCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlByb21pc2VSZXNvbHZlclByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8s
IDAsIEV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3Ig
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBwcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGVUYWJsZQorICBmdWxmaWxsICAgICAgICAgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGVGdW5jRnVsZmlsbCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29sdmUg
ICAgICAgICBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZXNvbHZlICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVqZWN0ICAgICAgICAgIEpTUHJvbWlzZVJlc29sdmVy
UHJvdG90eXBlRnVuY1JlamVjdCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVu
ZAorKi8KKworSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUqIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVy
ZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLCBzdHJ1Y3R1cmUpOworICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OkpTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkp
OworfQorCitib29sIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGVUYWJsZShleGVjKSwganNDYXN0PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU1Byb21pc2VSZXNvbHZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQ
cm9taXNlUmVzb2x2ZXIqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiUmVjZWl2ZXIgb2YgdGhlbiBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyIikpOworCisgICAg
dGhpc09iamVjdC0+ZnVsZmlsbElmTm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVz
b2x2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIHRoZW4gbXVzdCBiZSBhIFByb21p
c2VSZXNvbHZlciIpKTsKKworICAgIHRoaXNPYmplY3QtPnJlc29sdmVJZk5vdFJlc29sdmVkKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlRnVuY1JlamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9t
aXNlUmVzb2x2ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZVJlc29sdmVy
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9m
IHRoZW4gbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsKKworICAgIHRoaXNPYmplY3QtPnJl
amVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZV9oCisjZGVmaW5lIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAgIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBAIGV4
dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxl
IHJlZ0V4cENvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4cFBy
b3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRh
YmxlOworZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUHJvdG90eXBlVGFibGU7CitleHRl
cm4gY29uc3QgSGFzaFRhYmxlIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIGNvbnN0
IEhhc2hUYWJsZSBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsKIAogLy8gTm90ZTogUGxh
dGZvcm0uaCB3aWxsIGVuZm9yY2UgdGhhdCBFTkFCTEUoQVNTRU1CTEVSKSBpcyB0cnVlIGlmIGVp
dGhlcgogLy8gRU5BQkxFKEpJVCkgb3IgRU5BQkxFKFlBUlJfSklUKSBvciBib3RoIGFyZSBlbmFi
bGVkLiBUaGUgY29kZSBiZWxvdwpAQCAtMTYxLDYgKzE2NCw5IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZmFz
dE5ldzxIYXNoVGFibGU+KEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkpCiAgICAgLCByZWdF
eHBQcm90b3R5cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBQcm90b3R5cGVU
YWJsZSkpCiAgICAgLCBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihK
U0M6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKQorICAgICwgcHJvbWlzZVByb3RvdHlwZVRhYmxl
KGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnByb21pc2VQcm90b3R5cGVUYWJsZSkpCisgICAgLCBw
cm9taXNlQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlQ29u
c3RydWN0b3JUYWJsZSkpCisgICAgLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZShmYXN0
TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZSkpCiAgICAg
LCBpZGVudGlmaWVyVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuY3Vy
cmVudElkZW50aWZpZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmllclRhYmxlKCkpCiAgICAgLCBw
cm9wZXJ0eU5hbWVzKG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKSkKICAgICAsIGVtcHR5TGlz
dChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCkBAIC0zMTAsNiArMzE2LDkgQEAgVk06On5WTSgp
CiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICByZWdFeHBQ
cm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdDb25zdHJ1Y3RvclRhYmxl
LT5kZWxldGVUYWJsZSgpOworICAgIHByb21pc2VQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUo
KTsKKyAgICBwcm9taXNlQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBwcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKIAogICAgIGZhc3REZWxl
dGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihhcnJheUNvbnN0cnVjdG9yVGFibGUpKTsKICAgICBm
YXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oYXJyYXlQcm90b3R5cGVUYWJsZSkpOwpA
QCAtMzI4LDYgKzMzNyw5IEBAIFZNOjp+Vk0oKQogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25z
dF9jYXN0PEhhc2hUYWJsZSo+KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKTsKKyAgICBm
YXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZVByb3RvdHlwZVRhYmxlKSk7
CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VDb25zdHJ1Y3Rv
clRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VS
ZXNvbHZlclByb3RvdHlwZVRhYmxlKSk7CiAKICAgICBkZWxldGUgZW1wdHlMaXN0OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsy
MzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBD
b25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFByb3RvdHlw
ZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGU7
CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvbWlzZVByb3RvdHlwZVRhYmxlOworICAgICAg
ICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBjb25z
dCBIYXNoVGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOwogICAgICAgICAKICAg
ICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE1NDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1l
bnRhdGlvbiBvZiBQcm9taXNlcyAtIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNl
cy4KKyAgICAgICAgLSBEZXNwaXRlIFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwg
dGhlIGltcGxlbWVudGF0aW9uIGlzIGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVw
YXJhdGlvbiBmb3IgdGhlIFByb21pc2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBtb3ZlIHRv
IEVDTUFTY3JpcHQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1
bGZpbGxlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWpl
Y3RlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZl
ZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9qcy9Qcm9taXNlLWNoYWluLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWZ1
bGZpbGwtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1pbml0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNl
LXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2pzL1Byb21pc2Utc2ltcGxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1z
dGF0aWMtZnVsZmlsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGlj
LXJlamVjdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29s
dmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNr
cy1pbi13b3JrZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLXdp
dGhvdXQtY2FsbGJhY2tzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVu
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10eXBlcy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2pzL1Byb21pc2UuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcDoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
R2xvYmFsT2JqZWN0Q2FsbGJhY2s6On5KU0dsb2JhbE9iamVjdENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHbG9iYWxPYmplY3RDYWxsYmFjazo6SlNHbG9iYWxPYmplY3RDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0dsb2JhbE9iamVjdFRhc2s6On5KU0dsb2JhbE9iamVjdFRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpwZXJmb3JtVGFzayk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUpOgorICAgICAgICBBZGQg
YSBuZXcgdGFzayB0eXBlIHRvIGJlIHVzZWQgd2l0aCB0aGUgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUncyBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmg6CisgICAgICAgIEltcGxlbWVudCB0aGUgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgY2FsbGJhY2ssIFF1ZXVlVGFza1RvRXZlbnRMb29wLiAKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICBBbGwgdXNpbmcgSlNNYWlu
VGhyZWFkRXhlY1N0YXRlIGFzIGEgc2ltcGxlIFJBSUkgb2JqZWN0LgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1Byb2Zp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9y
dHNSaWNoU291cmNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAg
ICAgQWRkIGEgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgYW5kIGltcGxlbWVudCBRdWV1ZVRhc2tU
b0V2ZW50TG9vcC4gRm9yd2FyZCB0aGUgb3RoZXIgY2FsbGJhY2tzCisgICAgICAgIHRvIEpTR2xv
YmFsT2JqZWN0IHNvIHRoZXkgcmV0YWluIHRoZWlyIGV4aXN0aW5nIGJlaGF2aW9yLgorCiAyMDEz
LTA4LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQlVJ
TEQgRklYOiBJbmNsdWRlIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBmb3IgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzMzIsNiArMjMzMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NRm9ybURh
dGFDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIFwK
KyAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBcCiAgICAgIGJpbmRp
bmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMv
SlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NUGx1
Z2luQXJyYXlDdXN0b20uY3BwIFwKQEAgLTEzNTMsNiArMTM1NCw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBcCisgICAgYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oIFwKICAg
ICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggXApJbmRleDogU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQko
cmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTUZvcm1E
YXRhQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorICAg
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5
cGVBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9t
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCShyZXZpc2lvbiAxNTQ0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEzOCw2ICsxNjEzOCwyMCBA
QAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAiPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMjA2NzcsNiAr
MjA2OTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNEaWN0
aW9uYXJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RP
TUJpbmRpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpT
RE9NR2xvYmFsT2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dDdXN0b20uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93U2hlbGwuaCIgLz4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMJKHJldmlzaW9uIDE1NDQ5NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNDQ4Miw2
ICs0NDgyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9N
R2xvYmFsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xK
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXEpTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIj4KICAgICAgIDxGaWx0ZXI+Ymlu
ZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTExNTc4LDYgKzExNTgxLDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2Jq
ZWN0LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxP
YmplY3RUYXNrLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAgIDwv
Q2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNFcnJv
ckhhbmRsZXIuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTQ0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MzUsNiAr
MTkzNSw4IEBACiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEE4
QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEzMjc3QjYwMDM1Qjg4
MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdM
aXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4
OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CisJCTdDMkJERDNE
MTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyQkREM0IxN0M3Rjk4QjAwMzhG
RjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi87IH07CisJCTdDMkJERDNFMTdDN0Y5
OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBK
U0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJs
YXkuY3BwICovOyB9OwogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmggKi87IH07CkBAIC04MzMwLDYgKzgzMzIsOCBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5MDA2MUYy
M0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERl
YnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyQkREM0IxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01H
bG9iYWxPYmplY3RUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9N
R2xvYmFsT2JqZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0
OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92
ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yT3Zlcmxh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUzNDNGQTE3Qjc0QjYzMDA0MjMy
RjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODYyMyw2ICsxODYyNyw4IEBACiAJCQkJOTNCNzBENDgwOUVC
MEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIw
MDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIwNzZE
NjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8sCisJCQkJN0MyQkREM0IxN0M3Rjk4
QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8sCisJCQkJN0MyQkREM0Mx
N0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovLAogCQkJCUJDNjkz
MjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovLAogCQkJCUJDNjkz
MjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCAqLywKIAkJCQlCQ0JGQjUz
QTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8sCkBAIC0yMzcxNyw2
ICsyMzcyMyw3IEBACiAJCQkJNDlFOTExRDAwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU9w
ZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0OSAv
KiBUcmFuc2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgwOTAw
MENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MyQkREM0Ux
N0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTE3QjQ5MTYxNkE5QjA5NDAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlFOTExRDIwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzcwQTIyOTdCRTAwNThE
N0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI4MCw2ICsyNjI4Nyw3IEBA
CiAJCQkJQkMwQjM1ODcxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjlBMzA5QUMxNTYxQzk5QjAwQkJEOEU1IC8qIFJ1bkxvb3BDRi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzBCMzU4MzE0QzRGOTU0MDA1NUUyMkEgLyogUnVuTG9vcE1hYy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2Jh
bE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdFMkI4MjAwN0Mz
OTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjAwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkocmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBA
QAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5jcHAiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0YUN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgorI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCiAjaW5jbHVkZSAiSlNET01JbXBsZW1lbnRhdGlvbkN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKKworI2luY2x1
ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsT2Jq
ZWN0Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IGNyZWF0ZShKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNr
VG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRh
c2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSlNHbG9iYWxPYmplY3RDYWxsYmFjayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNr
Q29udGV4dCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2so
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNhbGwoKQorICAgIHsKKyAgICAgICAgaWYgKCFj
YW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlZlB0
cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworICAgICAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7CisKKyAgICAgICAgRXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gbV9nbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICAgICAgLy8gV2Ugd2lsbCBmYWlsIHRvIGdldCB0aGUgY29udGV4dCBpZiB0
aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Cisg
ICAgICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOworICAg
ICAgICAgICAgbV9mdW5jdGlvblB0cihleGVjLCBtX3Rhc2tDb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2Z1bmN0aW9uUHRyKGV4ZWMsIG1fdGFza0NvbnRleHQu
Z2V0KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbE9iamVjdENhbGxiYWNrKEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpR
dWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NS
ZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQorICAgICAgICA6IEFjdGl2ZURPTUNhbGxi
YWNrKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICAsIG1f
Z2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KQorICAgICAgICAs
IG1fZnVuY3Rpb25QdHIoZnVuY3Rpb25QdHIpCisgICAgICAgICwgbV90YXNrQ29udGV4dCh0YXNr
Q29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgU3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBt
X2dsb2JhbE9iamVjdDsKKyAgICBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9F
dmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIG1fZnVuY3Rpb25QdHI7CisgICAgUmVmUHRyPFRh
c2tDb250ZXh0PiBtX3Rhc2tDb250ZXh0OworfTsKKworSlNHbG9iYWxPYmplY3RUYXNrOjpKU0ds
b2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBm
dW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCisgICAgOiBt
X2NhbGxiYWNrKEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpCit7Cit9CisKK0pTR2xvYmFsT2JqZWN0VGFzazo6fkpT
R2xvYmFsT2JqZWN0VGFzaygpCit7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RUYXNrOjpwZXJm
b3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3sKKyAgICBtX2NhbGxiYWNrLT5jYWxs
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNET01H
bG9iYWxPYmplY3RUYXNrX2gKKyNkZWZpbmUgSlNET01HbG9iYWxPYmplY3RUYXNrX2gKKworI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0Q2Fs
bGJhY2s7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxKU0dsb2Jh
bE9iamVjdFRhc2s+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVu
Y3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4gdGFza0Nv
bnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEpTR2xvYmFsT2JqZWN0
VGFzayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0VGFzaygpOworICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgSlNHbG9i
YWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RU
YWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRy
PEpTQzo6VGFza0NvbnRleHQ+KTsKKworICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNr
PiBtX2NhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
SlNET01HbG9iYWxPYmplY3RUYXNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUwLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IAogCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dC
YXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3Vw
cG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRF
eHBlcmltZW50c0VuYWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9N
V2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNj
ZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNo
b3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsICZxdWV1
ZVRhc2tUb0V2ZW50TG9vcCB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKQEAg
LTE2Myw2ICsxNjQsMTIgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRFeHBlcmlt
ZQogICAgIHJldHVybiBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFi
bGVkKCk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChj
b25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVl
dWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVm
UHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKK3sKKyAgICBjb25zdCBKU0RPTVdpbmRvd0Jh
c2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2UqPihvYmpl
Y3QpOworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
SlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NV2luZG93QmFzZSopdGhpc09iamVjdCwg
ZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7Cit9CisKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3
aWxsUmVtb3ZlRnJvbVdpbmRvd1NoZWxsKCkKIHsKICAgICBzZXRDdXJyZW50RXZlbnQoMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2
aXNpb24gMTU0NDk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2Ny
aXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgamF2
YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisK
KyAgICAgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZl
bnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0Pik7
CisgICAgICAgIAogICAgICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogCiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaAkocmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1
ZSwgZXhjZXB0aW9uKTsKICAgICB9OwogCi1wcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSlNNYWlu
VGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgICAgICA6IG1fcHJldmlv
dXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCShyZXZp
c2lvbiAxNTQ0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJKU1dv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIApAQCAt
NDYsOCArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkpT
RE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UpIH07CiAKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxs
b3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5m
bywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQs
ICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCB9OworCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCi0gICAgOiBKU0RPTUdsb2Jh
bE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSkpCisgICAgOiBKU0RPTUdsb2Jh
bE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKQogICAgICwgbV9pbXBsKGltcGwpCiB7CiB9CkBAIC02OCw2ICs3MSwzOCBAQCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtlckdsb2JhbFNjCiAgICAgcmV0dXJuIG1faW1w
bC5nZXQoKTsKIH0KIAorCitib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjphbGxvd3NBY2Nl
c3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20ob2JqZWN0LCBleGVj
KTsKK30KKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNQcm9maWxpbmco
Y29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmpl
Y3Q6OnN1cHBvcnRzUHJvZmlsaW5nKG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNHbG9iYWxPYmplY3QqIG9i
amVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUmljaFNvdXJjZUlu
Zm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50
ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJu
IEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQob2JqZWN0KTsKK30KKworYm9v
bCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChj
b25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVj
dDo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChvYmplY3QpOworfQorCit2b2lkIEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChjb25zdCBKU0dsb2JhbE9i
amVjdCogb2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExv
b3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250ZXh0
PiB0YXNrQ29udGV4dCkKK3sKKyAgICBjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4ob2Jq
ZWN0KTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNr
KEpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKChKU0RPTUdsb2JhbE9iamVjdCopdGhpc09iamVj
dCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7Cit9CisKIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlKQogewogICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtlckdsb2JhbFNjb3BlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuaAkocmV2aXNpb24gMTU0NDk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiAr
NTMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAg
ICB9CiAKKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsKKworICAgICAgICBzdGF0aWMgYm9vbCBhbGxvd3NB
Y2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSopOwor
ICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMg
Ym9vbCBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFz
a1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250
ZXh0Pik7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
KEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+
KTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNTQ1NTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw4NSBAQAorMjAxMy0wOC0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBQcm9taXNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGFkYXB0ZWQgZnJvbSB0aGUgTW96
aWxsYSBhbmQgQmxpbmsgcHJvamVjdHMuCisKKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtYWxy
ZWFkeS1mdWxmaWxsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWFscmVhZHktcmVqZWN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvUHJvbWlzZS1jaGFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21p
c2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9t
aXNlLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdv
cmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1m
dWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vy
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0LWlu
LXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29y
a2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4t
d29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13
aXRoLXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1m
dWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdp
dGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJv
bWlzZS1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21p
c2Utc2ltcGxlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxs
YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZp
bGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3Jr
ZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBs
ZS1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1w
bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1m
dWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVq
ZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1yZWplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1y
ZXNvbHZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0
YXRpYy1yZXNvbHZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4t
d29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10
aGVuLWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRo
ZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFj
a3MtaW4td29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhl
bi13aXRob3V0LWNhbGxiYWNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21p
c2UtdGhlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdHlwZXMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qczogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3Jr
ZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlamVj
dC1pbi13b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9t
aXNlLXJlc29sdmUtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNv
dXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13
b3JrZXJzLmpzOiBBZGRlZC4KKwogMjAxMy0wOC0yNCAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53
cz4KIAogICAgICAgICBFbGltaW5hdGUgYSB1c2VsZXNzIGNvbXBhcmlzb24gaW4gc3Jjc2V0J3Mg
Y2FuZGlkYXRlIHNlbGVjdGlvbiBhbGdvcml0aG0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZp
bGxlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFBy
b21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImZv
byIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxs
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJl
YWR5LWZ1bGZpbGxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2Zvbycp
OworICByZXNvbHZlci5mdWxmaWxsKCdmdWxmaWxsJyk7CisgIHJlc29sdmVyLnJlc29sdmUoJ3Jl
c29sdmUnKTsKKyAgcmVzb2x2ZXIucmVqZWN0KCdyZWplY3QnKTsKK30pLnRoZW4oZnVuY3Rpb24o
cmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygncmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkg
eworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1h
bHJlYWR5LXJlamVjdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImZvbyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlamVjdGVkLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNl
LicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLnJlamVjdCgnZm9vJyk7CisgIHJlc29sdmVyLmZ1
bGZpbGwoJ2Z1bGZpbGwnKTsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICByZXNv
bHZlci5yZWplY3QoJ3JlamVjdCcpOworfSkudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxl
ZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVz
dWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
YWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7
CisgIHZhciBhbm90aGVyUmVzb2x2ZXI7CisgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21pc2Uo
ZnVuY3Rpb24ocikgeyBhbm90aGVyUmVzb2x2ZXIgPSByOyB9KSk7CisgIHJlc29sdmVyLmZ1bGZp
bGwoJ2Z1bGZpbGwnKTsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICByZXNvbHZl
ci5yZWplY3QoJ3JlamVjdCcpOworCisgIGFub3RoZXJSZXNvbHZlci5mdWxmaWxsKCdmb28nKTsK
K30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7Cisg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rlc3Qo
KTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BB
U1MgZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHNlY29uZFBy
b21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlLmNhdGNo
KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFz
IGZpcnN0IGFyZ3VtZW50LgorUEFTUyBmaXJzdFByb21pc2UuY2F0Y2goMzcpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50Lgor
UEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQorUEFT
UyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBy
ZXN1bHQgaXMgImhlbGxvIgorUEFTUyByZXN1bHQgaXMgImJ5ZSIKK1BBU1MgZnVsZmlsbGVkCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3Jr
ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE5IEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13b3Jr
ZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0cnVl
CitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQ
QVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS5jYXRjaChudWxsKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgW1dv
cmtlcl0gZmlyc3RQcm9taXNlLmNhdGNoKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBF
eHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gdGhp
c0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2UgaXMgZmFsc2UKK1BBU1MgW1dvcmtl
cl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJieWUi
CitQQVNTIFtXb3JrZXJdIGZ1bGZpbGxlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1j
YXRjaC1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1jYXRjaC1p
bi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KG5ld1Jlc29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIg
PSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS5j
YXRjaChmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9
IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQ
cm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNv
bmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIHJldHVybiAnYnllJzsKK30pOworCitzZWNv
bmRQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1
bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2J5ZScpOworICB0ZXN0UGFz
c2VkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAg
dGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKK30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOwor
c2hvdWxkQmVUcnVlKCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRC
ZVRydWUoJ3NlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93
KCdmaXJzdFByb21pc2UuY2F0Y2gobnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rp
b24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLmNh
dGNoKDM3KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1
bWVudCInKTsKKworcmVzb2x2ZXIucmVqZWN0KCdoZWxsbycpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgUHJvbWlz
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGZ1bGZpbGxlZAorUEFTUyBy
ZXN1bHQgaXMgImhlbGxvIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbzIi
CitQQVNTIHJlamVjdGVkCitQQVNTIHJlc3VsdCBpcyAiZXJyb3IiCitQQVNTIHJlamVjdGVkCitQ
QVNTIHJlc3VsdCBpcyAiZXJyb3IyIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJy
ZWNvdmVyZWQiCitQQVNTIG9wZXJhdGlvbiBpcyAiYXN5bmNocm9ub3VzIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWNoYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocikg
e3Jlc29sdmVyID0gcjt9KTsKK3ZhciBvcGVyYXRpb247CisKK3Byb21pc2UudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAtIGNvbnRpbnVlCisgIHRlc3RQYXNzZWQoJ2Z1bGZp
bGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICByZXR1cm4gJ2hlbGxvMic7Cit9LCBmdW5jdGlvbigp
IHsKKyAgdGVzdEZhaWxlZCgncnJlamVjdGVkJyk7Cit9KS50aGVuKCkgIC8vIHBhc3MgdGhyb3Vn
aAorLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7ICAvLyBmdWxmaWxsZWQgLSB0aHJvdyBhbiBleGNl
cHRpb24KKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1
bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvMicpOworICB0aHJv
dyAnZXJyb3InOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7Cit9
KS50aGVuKGZ1bmN0aW9uKCkgeyAgLy8gcmVqZWN0ZWQgLSB0aHJvdyBhbiBleGNlcHRpb24KKyAg
dGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBh
c3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZXJyb3InKTsKKyAgdGhyb3cgJ2Vycm9yMic7Cit9KS50
aGVuKCkgLy8gcGFzcyB0aHJvdWdoCisudGhlbihmdW5jdGlvbigpIHsgIC8vIHJlamVjdGVkIC0g
cmVjb3ZlcgorICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkg
eworICB0ZXN0UGFzc2VkKCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0Owor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdlcnJvcjInKTsKKyAgcmV0dXJuICdy
ZWNvdmVyZWQnOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAtIHRo
ZSBsYXN0CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVz
dWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdyZWNvdmVyZWQnKTsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvcGVyYXRpb24nLCAnYXN5bmNocm9ub3VzJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK29wZXJhdGlvbiA9ICdzeW5jaHJvbm91cyc7City
ZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCisvLyBUaGUgY2hhaW4gc2hvdWxkIGJlIGV4ZWN1
dGVkIGFzeW5jaHJvbm91c2x5Lgorb3BlcmF0aW9uID0gJ2FzeW5jaHJvbm91cyc7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4Y2Vw
dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworUEFTUyB0aGlzSW5UaGVuQ2FsbGJhY2sgPT09IHRoaXJkUHJvbWlzZSBpcyB0cnVlCitQQVNT
IHJlc3VsdCBpcyAiZm9vYmFyIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNlcHRp
b24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhjZXB0
aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhj
ZXB0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZpcnN0
UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHdpbmRvdy50aGlz
SW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKK30pOworCit2YXIg
c2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB0
aHJvdyAnZm9vYmFyJzsKK30pOworCit2YXIgdGhpcmRQcm9taXNlID0gc2Vjb25kUHJvbWlzZS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBmYWlsKCdVbmV4cGVjdGVkIGludm9jYXRpb24gb2Yg
ZnVsZmlsbENhbGxiYWNrJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJ
blRoZW5DYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luVGhlbkNhbGxiYWNr
ID09PSB0aGlyZFByb21pc2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZm9vYmFyJyk7CisgIGZpbmlzaEpTVGVzdCgpOwor
fSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNyBAQAorUHJv
bWlzZXMgLSBBZGFwdGVkIGZyb20gaHR0cDovL2R4ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRy
YWwvc291cmNlL2RvbS9wcm9taXNlL3Rlc3RzL3Rlc3RfcHJvbWlzZS5odG1sLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCitUZXN0IFByb21pc2UgcmVzb2x2ZS4KK1BBU1MgVGhl
bi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2Ug
cmVqZWN0LgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIK
KworVGVzdCBQcm9taXNlIHJlamVjdC4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVk
CitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSBnYy4KK1BBU1MgVGhlbiAtIHByb21pc2Ug
aXMgc3RpbGwgYWxpdmUKKworVGVzdCBQcm9taXNlIGFzeW5jLgorR2xvYmFsIHNob3VsZCBiZSBm
b28KK1BBU1MgZm9vIGlzIGZvbworR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28KK1BBU1MgZm9v
IGlzIGZvbworR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28gKDIpCitQQVNTIGZvbyBpcyBmb28K
K0dsb2JhbCBzaG91bGQgYmUgYmFyCitQQVNTIGJhciBpcyBiYXIKKworVGVzdCBQcm9taXNlIGRv
dWJsZSB0aGVuLgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlz
IDQyCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgMSBpcyAxCitQQVNT
IDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIHRoZW4gLyBleGNlcHRpb24uCitQQVNTIFRoZW4u
cmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgQ2F0Y2ggaGFuZGxlciAoZS5nLiB0aGUgcmVq
ZWN0IGhhbmRsZXIpIGNhbGxlZC4KKworVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNhdGNoIC8gdGhl
bi4KK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFT
UyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCitQQVNTIFRoZW4u
cmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDQgaXMgNDQKKworVGVzdCBQcm9taXNlIC0g
cmVqZWN0IC8gdGhlbiAvIGNhdGNoIC8gdGhlbi4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4g
Y2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQK
K1BBU1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0
NCBpcyA0NAorCitUZXN0IFByb21pc2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuICgy
KS4KK1BBU1MgQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRoZW4u
cmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDMgaXMgNDMKKworVGVzdCBQcm9taXNlIC0g
cmVqZWN0IC8gdGhlbiAvIGNhdGNoIGV4Y2VwdGlvbiAvIHRoZW4uCitQQVNTIFRoZW4ucmVqZWN0
IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBDYXRjaCBoYXMgYmVlbiBjYWxs
ZWQKK1BBU1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFT
UyA0NCBpcyA0NAorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlc29s
dmUpLgorTWFueSBzdGVwcy4uLiBzaG91bGQgcmV0dXJuIDIKK1BBU1MgMiBpcyAyCisKK1Rlc3Qg
UHJvbWlzZSAtIHRoZW4gLyBjYXRjaCBvcmRlcmluZyAocmVqZWN0KS4KK01hbnkgc3RlcHMuLi4g
c2hvdWxkIHJldHVybiAyCitQQVNTIDIgaXMgMgorCitUZXN0IFByb21pc2UgLSBuZXN0ZWQgcHJv
bWlzZQorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJlc29sdmUg
aGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIG5lc3RlZC1u
ZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BBU1MgVGhl
bi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MyBpcyA0MworCitUZXN0IFByb21pc2Ug
LSB3cm9uZyBuZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQK
K1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0
IFByb21pc2UgLSBwcm9taXNlIGxvb3AuCitQQVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVk
CitQQVNTIE5lc3RlZC1uZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJlc29s
dmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIFByb21p
c2UucmVqZWN0KCkuCitQQVNTIFRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBp
cyA0MgorCitUZXN0IFByb21pc2UgLSBQcm9taXNlLnJlc29sdmUoKS4KK1BBU1MgVGhlbi5yZXNv
bHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSBQcm9t
aXNlLnJlc29sdmUoKSB3aXRoICBuZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2Ug
aXMgZXhlY3V0ZWQKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBp
cyA0MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmls
bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBQcm9t
aXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcHJvbWlzZVN0YXRlIGlz
ICJwZW5kaW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIHByb21pc2VT
dGF0ZSBpcyAiZnVsZmlsbGVkIgorUEFTUyBwcm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3Jr
ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1mdWxmaWxsLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTMgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwtaW4t
d29ya2Vycy5qcworUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNT
IFtXb3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgW1dvcmtlcl0gcHJvbWlz
ZVN0YXRlIGlzICJmdWxmaWxsZWQiCitQQVNTIFtXb3JrZXJdIHByb21pc2VSZXN1bHQgaXMgImhl
bGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13
b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
ZnVsZmlsbC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtl
ciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMn
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtZnVsZmlsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIg
cmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2
ZXIgPSByOyB9KTsKK3ZhciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJl
c3VsdCA9IHVuZGVmaW5lZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJv
bWlzZVN0YXRlID0gJ2Z1bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBm
dW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlz
ZVJlc3VsdCA9IHJlc3VsdDsKK30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VT
dGF0ZScsICdwZW5kaW5nJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcHJvbWlzZS50
aGVuKGZ1bmN0aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScs
ICdmdWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0Jywg
J2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWls
ZWQoJ3Byb21pc2UgaXMgcmVqZWN0ZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWlu
aXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1pbml0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1pbml0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBA
CitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBwcm9t
aXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHByb21pc2UuY29uc3RydWN0b3Ig
aXMgUHJvbWlzZQorUEFTUyB0aGlzSW5Jbml0IGlzIHByb21pc2UKK1BBU1MgcmVzb2x2ZXIgaW5z
dGFuY2VvZiBQcm9taXNlUmVzb2x2ZXIgaXMgdHJ1ZQorUEFTUyByZXNvbHZlci5jb25zdHJ1Y3Rv
ciBpcyBQcm9taXNlUmVzb2x2ZXIKK1BBU1MgbmV3IFByb21pc2UoKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9t
aXNlKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBwcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsgfSkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHJlc3VsdC5tZXNzYWdlIGlzICJmb28iCitQQVNT
IGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorW1dvcmtlcl0gVGVz
dCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtl
cjogcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHBy
b21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZS5j
b25zdHJ1Y3RvciBpcyBQcm9taXNlCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgaXMgcHJvbWlz
ZQorUEFTUyBbV29ya2VyXSByZXNvbHZlciBpbnN0YW5jZW9mIFByb21pc2VSZXNvbHZlciBpcyB0
cnVlCitQQVNTIFtXb3JrZXJdIHJlc29sdmVyLmNvbnN0cnVjdG9yIGlzIFByb21pc2VSZXNvbHZl
cgorUEFTUyBbV29ya2VyXSBuZXcgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gbmV3IFByb21p
c2UoMzcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFtXb3Jr
ZXJdIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigpIHsgdGhyb3cgRXJyb3IoImZvbyIp
OyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgW1dvcmtlcl0gcmVzdWx0Lm1lc3Nh
Z2UgaXMgImZvbyIKK1BBU1MgW1dvcmtlcl0gZnVsZmlsbGVkCitQQVNTIFtXb3JrZXJdIHJlc3Vs
dCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWlu
LXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1pbml0LWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2Vy
ID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
aW5pdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciB0aGlzSW5Jbml0Owor
dmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7Cisg
IHRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7Cit9KTsKKworc2hvdWxkQmVUcnVl
KCdwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmUoJ3Byb21pc2UuY29uc3Ry
dWN0b3InLCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJbkluaXQnLCAncHJvbWlzZScpOwor
c2hvdWxkQmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFByb21pc2VSZXNvbHZlcicpOworc2hv
dWxkQmUoJ3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21pc2VSZXNvbHZlcicpOworCitzaG91
bGRUaHJvdygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBv
bmUgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoMzcpJywgJyJUeXBlRXJy
b3I6IFR5cGUgZXJyb3IiJyk7CisKK3Nob3VsZE5vdFRocm93KCdwcm9taXNlID0gbmV3IFByb21p
c2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsgfSknKTsKK3Byb21pc2UudGhlbih1
bmRlZmluZWQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0Owor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdC5tZXNzYWdlJywgJ2ZvbycpOworfSk7CisK
K25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwoImhl
bGxvIik7CisgIHRocm93IEVycm9yKCJmb28iKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7
CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOwor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rl
c3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0Owor
ICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWpl
Y3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1yZWplY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MiBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
cHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmci
CitQQVNTIHByb21pc2VTdGF0ZSBpcyAicmVqZWN0ZWQiCitQQVNTIHByb21pc2VSZXN1bHQgaXMg
ImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
amVjdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMyBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2Ut
cmVqZWN0LWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0YXRlIGlzICJwZW5k
aW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIFtXb3Jr
ZXJdIHByb21pc2VTdGF0ZSBpcyAicmVqZWN0ZWQiCitQQVNTIFtXb3JrZXJdIHByb21pc2VSZXN1
bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29y
a2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWpl
Y3QtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vy
cy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXJlamVjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXJlamVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3Zh
ciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNv
bHZlciA9IHI7IH0pOwordmFyIHByb21pc2VTdGF0ZSA9ICdwZW5kaW5nJzsKK3ZhciBwcm9taXNl
UmVzdWx0ID0gdW5kZWZpbmVkOworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBw
cm9taXNlU3RhdGUgPSAnZnVsZmlsbGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsKK30s
IGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAncmVqZWN0ZWQnOworICBwcm9t
aXNlUmVzdWx0ID0gcmVzdWx0OworfSk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlz
ZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcmVzb2x2ZXIucmVqZWN0KCdoZWxsbycpOworCitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Byb21pc2Uu
dGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncHJvbWlzZSBpcyBmdWxmaWxsZWQuJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygncHJvbWlzZVN0YXRlJywgJ3JlamVjdGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZXNvbHZlLWNoYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgcmVzdWx0IGlz
ICJieWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUt
Y2hhaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
UHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2
ZXIxLCByZXNvbHZlcjIsIHJlc29sdmVyMzsKK3ZhciByZXNvbHZlcjQsIHJlc29sdmVyNSwgcmVz
b2x2ZXI2OwordmFyIHByb21pc2UxID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZl
cjEgPSByOyB9KTsKK3ZhciBwcm9taXNlMiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVz
b2x2ZXIyID0gcjsgfSk7Cit2YXIgcHJvbWlzZTMgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7
IHJlc29sdmVyMyA9IHI7IH0pOwordmFyIHByb21pc2U0ID0gbmV3IFByb21pc2UoZnVuY3Rpb24o
cikgeyByZXNvbHZlcjQgPSByOyB9KTsKK3ZhciBwcm9taXNlNSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHIpIHsgcmVzb2x2ZXI1ID0gcjsgfSk7Cit2YXIgcHJvbWlzZTYgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyKSB7IHJlc29sdmVyNiA9IHI7IH0pOworCityZXNvbHZlcjMucmVzb2x2ZShwcm9t
aXNlMik7CityZXNvbHZlcjIucmVzb2x2ZShwcm9taXNlMSk7CityZXNvbHZlcjYucmVzb2x2ZShw
cm9taXNlNSk7CityZXNvbHZlcjUucmVzb2x2ZShwcm9taXNlNCk7CisKK3Byb21pc2UzLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVz
dEZhaWxlZCgncmVqZWN0ZWQnKTsKK30pOworCitwcm9taXNlNi50aGVuKGZ1bmN0aW9uKCkgewor
ICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlv
bihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdyZXN1bHQnLCAnYnllJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3Jlc29s
dmVyMS5yZXNvbHZlKCdoZWxsbycpOworcmVzb2x2ZXI0LnJlamVjdCgnYnllJyk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29s
dmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFT
UyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBy
ZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWlu
LXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNl
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3Vy
Y2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1
bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHJl
c3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4t
d29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZXNvbHZlLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4t
d29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRo
ZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitUaGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJlamVjdGVkIG5vdy4K
K1BBU1MgcmVqZWN0ZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlv
bi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29s
dmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Cit2YXIgY2FsbGJhY2s7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmVyKSB7CisgIHJlc29sdmVyLnJlc29sdmUoe3RoZW46IGZ1bmN0aW9uKGZ1bGZpbGxDYWxs
YmFjaywgcmVqZWN0Q2FsbGJhY2spIHsKKyAgICB0aHJvdyAnaGVsbG8nOworICB9fSwgdHJ1ZSk7
Cit9KTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdmdWxmaWxs
ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBh
c3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdAorICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwor
CitkZWJ1ZygnVGhlIHByb21pc2UgaXMgYWxyZWFkeSByZWplY3RlZCBub3cuJyk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LXdpdGgtdGhlbi1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRo
LXRoZW4tZnVsZmlsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBA
QAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgdmFs
dWUudGhlbiBpcyBjYWxsZWQuCitQQVNTIHRoaXNWYWx1ZSBpcyB2YWx1ZQorVGhlIHByb21pc2Ug
aXMgbm90IGZ1bGZpbGxlZCBub3cuCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhl
bGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxm
aWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29s
dmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBjYWxsYmFjazsKK3ZhciB2YWx1ZSA9IHsKKyAgdGhl
bjogZnVuY3Rpb24oZnVsZmlsbENhbGxiYWNrLCByZWplY3RDYWxsYmFjaykgeworICAgIHRlc3RQ
YXNzZWQoJ3ZhbHVlLnRoZW4gaXMgY2FsbGVkLicpOworICAgIHdpbmRvdy50aGlzVmFsdWUgPSB0
aGlzOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUnLCAndmFsdWUnKTsKKyAgICBjYWxsYmFjayA9
IGZ1bGZpbGxDYWxsYmFjazsKKyAgfQorfTsKK2ZpbmlzaEpTVGVzdCgpOwordmFyIHByb21pc2Ug
PSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIucmVzb2x2ZSh2YWx1ZSk7IH0pOworCitwcm9t
aXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOwor
ICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3Vs
dCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0
RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhl
IHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuJyk7CisKK2NhbGxiYWNrKCdoZWxsbycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
cmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LXdpdGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNT
IHZhbHVlLnRoZW4gaXMgY2FsbGVkLgorUEFTUyB0aGlzVmFsdWUgaXMgdmFsdWUKK1RoZSBwcm9t
aXNlIGlzIG5vdCByZWplY3RlZCBub3cuCitQQVNTIHJlamVjdGVkCitQQVNTIHJlc3VsdCBpcyAi
aGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJl
amVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNv
bHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwordmFyIGNhbGxiYWNrOwordmFyIHZhbHVlID0geworICB0aGVu
OiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKSB7CisgICAgdGVzdFBh
c3NlZCgndmFsdWUudGhlbiBpcyBjYWxsZWQuJyk7CisgICAgd2luZG93LnRoaXNWYWx1ZSA9IHRo
aXM7CisgICAgc2hvdWxkQmUoJ3RoaXNWYWx1ZScsICd2YWx1ZScpOworICAgIGNhbGxiYWNrID0g
cmVqZWN0Q2FsbGJhY2s7CisgIH0KK307Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHIpIHsgci5yZXNvbHZlKHZhbHVlKTsgfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOwor
fSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ3JlamVjdGVkJyk7CisgIHdpbmRv
dy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hl
bGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBu
b3QgcmVqZWN0ZWQgbm93LicpOworCitjYWxsYmFjaygnaGVsbG8nKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgnaGVsbG8n
KTsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hv
dWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAg
d2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQn
LCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgZmFpbCgn
cmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1w
bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgUHJv
bWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRoaXNJbkluaXQgPT09
IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vj
b25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxm
aWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rlc3QgUHJv
bWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyAiaGVs
bG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1j
YWxsYmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5z
aWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAK
K1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3Vs
dCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxs
LWluc2lkZS1jYWxsYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2Fs
bGJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
UHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZnV0dXJl
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgn
aGVsbG8nKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZnV0dXJlID0gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBy
ZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworICB9LCAwKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVz
dWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1p
bi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitbV29ya2VyXSBUZXN0IFByb21pc2Uu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJj
ZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSB0aGlzSW5Jbml0
ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxsQ2Fs
bGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMg
ImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4t
d29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtl
ciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcycp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2Utc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVz
dCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNv
bHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29s
dmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNv
bHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0
aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAg
c2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsK
KyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1
bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0
aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8n
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgUHJvbWlzZS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyB1bmRlZmluZWQKK1BB
U1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGlj
LWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
c3RhdGljLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CityZXN1bHQgPSB1bmRlZmluZWQ7CisKK1Byb21pc2UuZnVsZmlsbCgnaGVsbG8nKS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30s
IGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworc2hvdWxkQmUoJ3Jlc3VsdCcsICd1bmRlZmluZWQnKTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1y
ZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkCitQQVNTIHJlc3VsdCBpcyAiaGVs
bG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWpl
Y3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJv
bWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworcmVzdWx0ID0gdW5kZWZp
bmVkOworCitQcm9taXNlLnJlamVjdCgnaGVsbG8nKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlv
bihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKK3Nob3Vs
ZEJlKCdyZXN1bHQnLCAndW5kZWZpbmVkJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
cmVzdWx0IGlzIHVuZGVmaW5lZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Jlc3VsdCA9IHVuZGVmaW5lZDsKKwordmFyIHJl
c29sdmVyOwordmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rp
b24gKHIpIHsgcmVzb2x2ZXIgPSByO30gKSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsK
KyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworcmVz
b2x2ZXIucmVzb2x2ZSgnaGVsbG8nKTsKK3Nob3VsZEJlKCdyZXN1bHQnLCAndW5kZWZpbmVkJyk7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS10aGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtdGhlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtdGhlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NyBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
dGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlIGlu
c3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHNlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQ
cm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlLnRoZW4obnVsbCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQ
QVNTIGZpcnN0UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgc2Vjb25kIGFyZ3VtZW50LgorUEFTUyBm
aXJzdFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQg
ZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFj
ayA9PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9
PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhl
bi1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBA
CitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
U3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanMKK1BB
U1MgW1dvcmtlcl0gdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3Jr
ZXJdIHNlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtl
cl0gZmlyc3RQcm9taXNlLnRoZW4obnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhw
ZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIGZpcnN0
UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
RXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgc2Vjb25kIGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSBm
aXJzdFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQg
ZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1bGZp
bGxDYWxsYmFjayA9PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJdIHRoaXNJ
bkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJd
IHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4t
d29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10
aGVuLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10aGVuLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
d29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5q
cycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4t
d2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
cmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRo
b3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNl
LXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSByZXN1
bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQt
Y2FsbGJhY2tzLWluLXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxi
YWNrcy1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9
IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWlu
LXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91
dC1jYWxsYmFja3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCituZXcg
UHJvbWlzZShmdW5jdGlvbihyKSB7IHIuZnVsZmlsbCgnaGVsbG8nKTsgfSkKKyAgLnRoZW4oKQor
ICAudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0Owor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7CisgIH0pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXRoZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS10aGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KwordmFyIHJlc29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rp
b24obmV3UmVzb2x2ZXIpIHsKKyAgd2luZG93LnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZl
ciA9IG5ld1Jlc29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNl
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy50aGlzSW5GdWxmaWxsQ2FsbGJhY2sg
PSB0aGlzOworICBzaG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0
UHJvbWlzZScpOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vj
b25kUHJvbWlzZScpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitz
aG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworc2hvdWxkQmVUcnVl
KCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZVRydWUoJ3NlY29u
ZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93KCdmaXJzdFByb21p
c2UudGhlbihudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJz
dCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbih1bmRlZmluZWQs
IG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIHNlY29uZCBhcmd1
bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbigzNyknLCAnIlR5cGVFcnJv
cjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Jlc29sdmVy
LmZ1bGZpbGwoJ2hlbGxvJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACitQcm9taXNlcyAtIFRlc3QgYmFzaWMgdHlwZXMg
LyBleGNlcHRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQcm9taXNl
cworCithUHJvbWlzZSA9IG5ldyBQcm9taXNlKC4uLikKK1BBU1MgYVByb21pc2UgaXMgYW4gaW5z
dGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBTdHJpbmcoYVByb21pc2UpIGlzICdbb2JqZWN0IFByb21p
c2VdJworUEFTUyBhUHJvbWlzZS50aGVuIGlzIGRlZmluZWQuCitQQVNTIGFQcm9taXNlLnRoZW4g
aXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgYVByb21pc2UudGhlbi5sZW5ndGggaXMg
MgorUEFTUyBhUHJvbWlzZS5jYXRjaCBpcyBkZWZpbmVkLgorUEFTUyBhUHJvbWlzZS5jYXRjaCBp
cyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBhUHJvbWlzZS5jYXRjaC5sZW5ndGggaXMg
MQorCitQcm9taXNlIGNvbnN0cnVjdG9yCisKK1BBU1MgbmV3IFByb21pc2UoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIG5l
dyBQcm9taXNlKDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IG5ldyBQcm9taXNlKCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCitQQVNTIG5ldyBQcm9taXNlKFtdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgorUEFTUyBuZXcgUHJvbWlzZSh7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgbmV3IFByb21pc2UobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IFByb21pc2UodW5kZWZpbmVkKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlcikgeyByZXNvbHZlci5yZXNvbHZlKDEpOyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEZ1bmN0aW9uIGlz
IG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdQcm9taXNlKCknKS4KKworUHJvbWlzZSBzdGF0
aWNzCisKK1BBU1MgUHJvbWlzZS5mdWxmaWxsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
RXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBQcm9taXNlLmZ1bGZpbGwoMSkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFByb21pc2UucmVzb2x2ZSgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1Mg
UHJvbWlzZS5yZXNvbHZlKDEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBQcm9taXNl
LnJlamVjdCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudC4KK1BBU1MgUHJvbWlzZS5yZWplY3QoMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIFByb21pc2UuZnVsZmlsbCgxKSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlCitQ
QVNTIFByb21pc2UucmVzb2x2ZSgxKSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlCitQQVNTIFBy
b21pc2UucmVqZWN0KDEpIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKKworUHJvbWlzZVJlc29s
dmVyCisKK2FSZXNvbHZlciBpcyBmcm9tIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGFSZXNvbHZlcikg
eyAuLi4gfSkKK1BBU1MgYVJlc29sdmVyIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2VSZXNvbHZl
cgorUEFTUyBTdHJpbmcoYVJlc29sdmVyKSBpcyAnW29iamVjdCBQcm9taXNlUmVzb2x2ZXJdJwor
UEFTUyBhUmVzb2x2ZXIuZnVsZmlsbCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBh
UmVzb2x2ZXIuZnVsZmlsbC5sZW5ndGggaXMgMQorUEFTUyBhUmVzb2x2ZXIucmVzb2x2ZSBpcyBh
biBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBhUmVzb2x2ZXIucmVzb2x2ZS5sZW5ndGggaXMg
MQorUEFTUyBhUmVzb2x2ZXIucmVqZWN0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNT
IGFSZXNvbHZlci5yZWplY3QubGVuZ3RoIGlzIDEKK1BBU1MgcmVzb2x2ZXJGdWxmaWxsKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2YgdGhlbiBtdXN0IGJlIGEgUHJvbWlz
ZVJlc29sdmVyLgorUEFTUyByZXNvbHZlclJlc29sdmUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBSZWNlaXZlciBvZiB0aGVuIG11c3QgYmUgYSBQcm9taXNlUmVzb2x2ZXIuCitQQVNTIHJl
c29sdmVyUmVqZWN0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2YgdGhl
biBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyLgorCitQcm9taXNlUmVzb2x2ZXIgY29uc3RydWN0
b3IKKworUEFTUyBuZXcgUHJvbWlzZVJlc29sdmVyKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogRnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBQcm9taXNl
UmVzb2x2ZXIoKScpLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCJQcm9taXNlcyAtIFRlc3QgYmFzaWMgdHlwZXMgLyBleGNlcHRpb25zLiIpOworCisv
LyB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKworLy8gUHJvbWlzZQorZGVidWcoIiIp
OworZGVidWcoIlByb21pc2VzIik7CitkZWJ1ZygiIik7CisKKy8vIFByb21pc2VzIHNob3VsZCBi
ZSBvZiB0eXBlIFByb21pc2UuCisKK3ZhciBhUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmVyKSB7IHJlc29sdmVyLnJlc29sdmUoMSk7IH0pOworCitkZWJ1ZygiYVByb21pc2Ug
PSBuZXcgUHJvbWlzZSguLi4pIikKK3Nob3VsZEJlVHlwZSgiYVByb21pc2UiLCAiUHJvbWlzZSIp
Oworc2hvdWxkQmUoIlN0cmluZyhhUHJvbWlzZSkiLCAiJ1tvYmplY3QgUHJvbWlzZV0nIik7CisK
K3Nob3VsZEJlRGVmaW5lZCgiYVByb21pc2UudGhlbiIpOworc2hvdWxkQmVUeXBlKCJhUHJvbWlz
ZS50aGVuIiwgIkZ1bmN0aW9uIik7CitzaG91bGRCZSgiYVByb21pc2UudGhlbi5sZW5ndGgiLCAi
MiIpOworc2hvdWxkQmVEZWZpbmVkKCJhUHJvbWlzZS5jYXRjaCIpOworc2hvdWxkQmVUeXBlKCJh
UHJvbWlzZS5jYXRjaCIsICJGdW5jdGlvbiIpOworc2hvdWxkQmUoImFQcm9taXNlLmNhdGNoLmxl
bmd0aCIsICIxIik7CisKKworLy8gUHJvbWlzZSBjb25zdHJ1Y3RvcgorZGVidWcoIiIpOworZGVi
dWcoIlByb21pc2UgY29uc3RydWN0b3IiKTsKK2RlYnVnKCIiKTsKKworLy8gTmVlZCBhdCBsZWFz
dCBvbmUgcGFyYW1ldGVyLgorc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKCkiKTsKKworLy8gUGFy
YW1ldGVyIG11c3QgYmUgYSBmdW5jdGlvbi4KK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSgxKSIp
Oworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKCdoZWxsbycpIik7CitzaG91bGRUaHJvdygibmV3
IFByb21pc2UoW10pIik7CitzaG91bGRUaHJvdygibmV3IFByb21pc2Uoe30pIik7CitzaG91bGRU
aHJvdygibmV3IFByb21pc2UobnVsbCkiKTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSh1bmRl
ZmluZWQpIik7CitzaG91bGROb3RUaHJvdygibmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIp
IHsgcmVzb2x2ZXIucmVzb2x2ZSgxKTsgfSkiKTsKKworLy8gQ2FuJ3QgYmUgY2FsbGVkIGFzIGEg
ZnVuY3Rpb24KK3Nob3VsZFRocm93KCJQcm9taXNlKCkiKTsKKworCisvLyBQcm9taXNlIHN0YXRp
Y3MKK2RlYnVnKCIiKTsKK2RlYnVnKCJQcm9taXNlIHN0YXRpY3MiKTsKK2RlYnVnKCIiKTsKKwor
CisvLyBOZWVkIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIuCitzaG91bGRUaHJvdygiUHJvbWlzZS5m
dWxmaWxsKCkiKTsKK3Nob3VsZE5vdFRocm93KCJQcm9taXNlLmZ1bGZpbGwoMSkiKTsKK3Nob3Vs
ZFRocm93KCJQcm9taXNlLnJlc29sdmUoKSIpOworc2hvdWxkTm90VGhyb3coIlByb21pc2UucmVz
b2x2ZSgxKSIpOworc2hvdWxkVGhyb3coIlByb21pc2UucmVqZWN0KCkiKTsKK3Nob3VsZE5vdFRo
cm93KCJQcm9taXNlLnJlamVjdCgxKSIpOworCisvLyBTaG91bGQgcmV0dXJuIFByb21pc2Ugb2Jq
ZWN0cy4KK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5mdWxmaWxsKDEpIiwgIlByb21pc2UiKTsKK3No
b3VsZEJlVHlwZSgiUHJvbWlzZS5yZXNvbHZlKDEpIiwgIlByb21pc2UiKTsKK3Nob3VsZEJlVHlw
ZSgiUHJvbWlzZS5yZWplY3QoMSkiLCAiUHJvbWlzZSIpOworCisKKworLy8gUHJvbWlzZVJlc29s
dmVyCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVyIik7CitkZWJ1ZygiIik7CisK
K3ZhciBhUmVzb2x2ZXI7Cit2YXIgcmVzb2x2ZXJGdWxmaWxsOwordmFyIHJlc29sdmVyUmVzb2x2
ZTsKK3ZhciByZXNvbHZlclJlamVjdDsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAg
IGFSZXNvbHZlciA9IHI7CisKKyAgICAvLyBUaGUgcmVzb2x2ZXIgc2hvdWxkIGJlIG9mIHR5cGUg
UHJvbWlzZVJlc29sdmVyLgorICAgIGRlYnVnKCJhUmVzb2x2ZXIgaXMgZnJvbSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihhUmVzb2x2ZXIpIHsgLi4uIH0pIikKKyAgICBzaG91bGRCZVR5cGUoImFSZXNv
bHZlciIsICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBzaG91bGRCZSgiU3RyaW5nKGFSZXNvbHZl
cikiLCAiJ1tvYmplY3QgUHJvbWlzZVJlc29sdmVyXSciKTsKKyAgICBzaG91bGRCZVR5cGUoImFS
ZXNvbHZlci5mdWxmaWxsIiwgIkZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmUoImFSZXNvbHZlci5m
dWxmaWxsLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmVUeXBlKCJhUmVzb2x2ZXIucmVzb2x2
ZSIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVzb2x2ZS5sZW5ndGgi
LCAiMSIpOworICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVyLnJlamVjdCIsICJGdW5jdGlvbiIp
OworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVqZWN0Lmxlbmd0aCIsICIxIik7CisKKyAgICAv
LyBSZXNvbHZlcnMgZnVuY3Rpb25zIG11c3QgYmUgY2FsbGVkIG9uIHRoZSByZXNvbHZlci4KKyAg
ICByZXNvbHZlckZ1bGZpbGwgPSBhUmVzb2x2ZXIuZnVsZmlsbDsKKyAgICBzaG91bGRUaHJvdygi
cmVzb2x2ZXJGdWxmaWxsKCkiKTsKKyAgICByZXNvbHZlclJlc29sdmUgPSBhUmVzb2x2ZXIucmVz
b2x2ZTsKKyAgICBzaG91bGRUaHJvdygicmVzb2x2ZXJSZXNvbHZlKCkiKTsKKyAgICByZXNvbHZl
clJlamVjdCA9IGFSZXNvbHZlci5yZWplY3Q7CisgICAgc2hvdWxkVGhyb3coInJlc29sdmVyUmVq
ZWN0KCkiKTsKK30pOworCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVyIGNvbnN0
cnVjdG9yIik7CitkZWJ1ZygiIik7CisKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZVJlc29sdmVy
KCkiKTsKKworZGVidWcoIiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KKworLy8gQWRhcHRlZCBmcm9tIGh0dHA6Ly9keHIubW96aWxsYS5vcmcvbW96aWxsYS1j
ZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90ZXN0X3Byb21pc2UuaHRtbCB3aGljaCBz
dGF0ZWQ6CisvLyAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8KKworZGVzY3JpcHRpb24oIlByb21pc2VzIC0gQWRhcHRlZCBmcm9tIGh0dHA6Ly9keHIu
bW96aWxsYS5vcmcvbW96aWxsYS1jZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90ZXN0
X3Byb21pc2UuaHRtbC4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5j
dGlvbiB0ZXN0KF9hLCBfYikKK3sKKyAgICBpZiAoaXNSZXN1bHRDb3JyZWN0KF9hLCBfYikpCisg
ICAgICAgIHRlc3RQYXNzZWQoc3RyaW5naWZ5KF9hKSArICIgaXMgIiArIHN0cmluZ2lmeShfYikp
OworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChzdHJpbmdpZnkoX2EpICsgIiBzaG91bGQg
YmUgIiArIHN0cmluZ2lmeShfYikpOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVzb2x2ZSgpIHsK
KyAgZGVidWcoIlRlc3QgUHJvbWlzZSByZXNvbHZlLiIpCisgIAorICB2YXIgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZSg0Mik7
CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2
ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7
CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVu
IGNhbGxlZCIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VS
ZWplY3QoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgcmVqZWN0LiIpOworICAKKyAgdmFyIHBy
b21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJl
amVjdCg0Mik7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQoIlRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0
aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQi
KTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5j
dGlvbiBwcm9taXNlRXhjZXB0aW9uKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIHJlamVjdC4i
KTsKKworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7Cisg
ICAgdGhyb3cgNDI7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQo
IlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1
bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxs
ZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitm
dW5jdGlvbiBwcm9taXNlR0MoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgZ2MuIik7CisgIAor
ICB2YXIgcmVzb2x2ZXI7CisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikg
eworICAgIHJlc29sdmVyID0gcjsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVz
dFBhc3NlZCgiVGhlbiAtIHByb21pc2UgaXMgc3RpbGwgYWxpdmUiKTsKKyAgICBydW5UZXN0KCk7
CisgIH0pOworCisgIHByb21pc2UgPSBudWxsOworCisgIGdjKCk7CisKKyAgcmVzb2x2ZXIucmVz
b2x2ZSg0Mik7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VBc3luYygpIHsKKyAgZGVidWcoIlRlc3Qg
UHJvbWlzZSBhc3luYy4iKTsKKworICB2YXIgZ2xvYmFsID0gImZvbyI7CisgIHZhciBmID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIGJlIGZvbyIp
OworICAgIHRlc3QoZ2xvYmFsLCAnZm9vJyk7CisKKyAgICByLnJlc29sdmUoNDIpOworCisgICAg
ZGVidWcoIkdsb2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vIik7CisgICAgdGVzdChnbG9iYWwsICdm
b28nKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBkZWJ1ZygiR2xvYmFs
IHNob3VsZCBiZSBiYXIiKTsKKyAgICAgIHRlc3QoZ2xvYmFsLCAnYmFyJyk7CisgICAgICBydW5U
ZXN0KCk7CisgICAgfSwgMCk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZ2xvYmFsID0g
ImJhciI7CisgIH0pOworCisgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIHN0aWxsIGJlIGZvbyAoMiki
KTsKKyAgdGVzdChnbG9iYWwsICdmb28nKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZURvdWJsZVRo
ZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgZG91YmxlIHRoZW4uIik7CisKKyAgdmFyIHN0
ZXBzID0gMDsKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikg
eworICAgIHJlc29sdmVyLnJlc29sdmUoNDIpOworICB9KTsKKworICBwcm9taXNlLnRoZW4oZnVu
Y3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxs
ZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBzdGVwcysrOworICB9LCBmdW5jdGlvbih3
aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7Cisg
IH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qoc3RlcHMsIDEpOworICAg
IHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgewor
ICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30K
KworZnVuY3Rpb24gcHJvbWlzZVRoZW5FeGNlcHRpb24oKSB7CisgIGRlYnVnKCJUZXN0IFByb21p
c2UgLSB0aGVuIC8gZXhjZXB0aW9uLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKDQyKTsKKyAgfSk7CisK
KyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJl
c29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGhyb3cgImJvb2giOworICB9KS5jYXRjaChm
dW5jdGlvbihlKSB7CisgICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFuZGxlciAoZS5nLiB0aGUgcmVq
ZWN0IGhhbmRsZXIpIGNhbGxlZC4iKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5j
dGlvbiBwcm9taXNlVGhlbkNhdGNoVGhlbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHRo
ZW4gLyBjYXRjaCAvIHRoZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5j
dGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUoNDIpOworICB9KTsKKworICB2
YXIgcHJvbWlzZTIgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNz
ZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsK
KyAgICByZXR1cm4gd2hhdCArIDE7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFp
bGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7CisKKyAgcHJvbWlzZTIu
dGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBi
ZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAgIHJldHVybiB3aGF0ICsgMTsK
KyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBi
ZWVuIGNhbGxlZCIpOworICB9KS5jYXRjaChmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJD
YXRjaCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hh
dCwgNDQpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RG
YWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rp
b24gcHJvbWlzZVJlamVjdFRoZW5DYXRjaFRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2Ug
LSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZWplY3QoNDIpOwor
ICB9KTsKKworICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgewor
ICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSwgZnVu
Y3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxl
ZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJldHVybiB3aGF0ICsgMTsKKyAgfSk7CisK
KyAgcHJvbWlzZTIudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5y
ZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAgIHJldHVy
biB3aGF0ICsgMTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQo
IkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAg
ICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3
aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVJl
amVjdFRoZW5DYXRjaFRoZW4yKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcmVqZWN0IC8g
dGhlbiAvIGNhdGNoIC8gdGhlbiAoMikuIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7CisgIH0pOwor
CisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5y
ZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJldHVy
biB3aGF0ICsgMTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQo
IkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJldHVy
biB3aGF0ICsgMTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAg
IHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RUaGVuQ2F0Y2hF
eGNlcHRpb25UaGVuKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcmVqZWN0IC8gdGhlbiAv
IGNhdGNoIGV4Y2VwdGlvbiAvIHRoZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7CisgIH0pOwor
CisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5y
ZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVz
dFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0
Mik7CisgICAgdGhyb3cod2hhdCArIDEpOworICB9KS5jYXRjaChmdW5jdGlvbih3aGF0KSB7Cisg
ICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0
Myk7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAg
ICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3
aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVRo
ZW5DYXRjaE9yZGVyaW5nUmVzb2x2ZSgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHRoZW4g
LyBjYXRjaCBvcmRlcmluZyAocmVzb2x2ZSkuIik7CisKKyAgdmFyIGdsb2JhbCA9IDA7CisgIHZh
ciBmID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHIucmVzb2x2ZSg0Mik7CisgIH0p
OworCisgIGYudGhlbihmdW5jdGlvbigpIHsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
ICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLmNhdGNoKGZ1bmN0aW9uKCkgeworICAgICAgZ2xv
YmFsKys7CisgICAgfSk7CisgICAgZi50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgZ2xvYmFsKys7
CisgICAgfSk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIGRlYnVnKCJNYW55
IHN0ZXBzLi4uIHNob3VsZCByZXR1cm4gMiIpOworICAgICAgdGVzdChnbG9iYWwsIDIpOworICAg
ICAgcnVuVGVzdCgpOworICAgIH0sIDApOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVRo
ZW5DYXRjaE9yZGVyaW5nUmVqZWN0KCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gdGhlbiAv
IGNhdGNoIG9yZGVyaW5nIChyZWplY3QpLiIpOworCisgIHZhciBnbG9iYWwgPSAwOworICB2YXIg
ZiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICByLnJlamVjdCg0Mik7CisgIH0pCisK
KyAgZi50aGVuKGZ1bmN0aW9uKCkge30sIGZ1bmN0aW9uKCkgeworICAgIGYudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYuY2F0Y2goZnVuY3Rpb24oKSB7
CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7fSwgZnVu
Y3Rpb24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgZGVidWcoIk1hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAyIik7Cisg
ICAgICB0ZXN0KGdsb2JhbCwgMik7CisgICAgICBydW5UZXN0KCk7CisgICAgfSwgMCk7CisgIH0p
OworfQorCitmdW5jdGlvbiBwcm9taXNlTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVidWcoIlRlc3Qg
UHJvbWlzZSAtIG5lc3RlZCBwcm9taXNlIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVz
b2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsK
KyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICBy
LnJlc29sdmUoNDIpOworICAgIH0pKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAg
IHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZh
bHVlLCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZU5l
c3RlZE5lc3RlZFByb21pc2UoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBuZXN0ZWQtbmVz
dGVkIHByb21pc2UuIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAg
ICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRlc3RQ
YXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUoNDIp
OworICAgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeyByZXR1cm4gd2hhdCArIDE7IH0pKTsKKyAg
fSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBo
YXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Myk7CisgICAgcnVuVGVzdCgpOwor
ICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVdyb25nTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVi
dWcoIlRlc3QgUHJvbWlzZSAtIHdyb25nIG5lc3RlZCBwcm9taXNlLiIpOworCisgIG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZShuZXcgUHJvbWlz
ZShmdW5jdGlvbihyKSB7CisgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQgcHJvbWlzZSBpcyBleGVj
dXRlZCIpOworICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICB9KSk7CisgICAgcmVzb2x2ZXIucmVq
ZWN0KDQyKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNzZWQoIlRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Mik7CisgICAg
cnVuVGVzdCgpOworICB9LCBmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4u
cmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZUxv
b3AoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBwcm9taXNlIGxvb3AuIik7CisKKyAgbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9taXNlIGlz
IGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQtbmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQiKTsK
KyAgICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICAgIH0pKTsKKyAgICB9KSk7CisgIH0pLnRoZW4o
ZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4g
Y2FsbGVkIik7CisgICAgdGVzdCh2YWx1ZSwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVu
Y3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxs
ZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RDb25zdHJ1Y3RvcigpIHsK
KyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIFByb21pc2UucmVqZWN0KCkuIik7CisKKyAgdmFyIHBy
b21pc2UgPSBQcm9taXNlLnJlamVjdCg0MikudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVz
dEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5jdGlvbih3
aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7Cisg
ICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24g
cHJvbWlzZVJlc29sdmVDb25zdHJ1Y3RvcigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIFBy
b21pc2UucmVzb2x2ZSgpLiIpOworCisgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKDQy
KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFz
IGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9
LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxs
ZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3JOZXN0
ZWRQcm9taXNlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNvbHZlKCkg
d2l0aCAgbmVzdGVkIHByb21pc2UuIik7CisKKyAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9t
aXNlIGlzIGV4ZWN1dGVkIik7CisgICAgci5yZXNvbHZlKDQyKTsKKyAgfSwgZnVuY3Rpb24oKSB7
CisgICAgdGVzdEZhaWxlZCgiU2Vjb25kIGFyZ3VtZW50IHRvIFByb21pc2UgY29uc3RydWN0b3Ig
Y2FsbGVkLiIpOworICB9KSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAg
IHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWpl
Y3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOworfQorCit2YXIgdGVzdHMgPSBbCisgICAgcHJv
bWlzZVJlc29sdmUsCisgICAgcHJvbWlzZVJlamVjdCwKKyAgICBwcm9taXNlRXhjZXB0aW9uLAor
ICAgIHByb21pc2VHQywKKyAgICBwcm9taXNlQXN5bmMsCisgICAgcHJvbWlzZURvdWJsZVRoZW4s
CisgICAgcHJvbWlzZVRoZW5FeGNlcHRpb24sCisgICAgcHJvbWlzZVRoZW5DYXRjaFRoZW4sCisg
ICAgcHJvbWlzZVJlamVjdFRoZW5DYXRjaFRoZW4sCisgICAgcHJvbWlzZVJlamVjdFRoZW5DYXRj
aFRoZW4yLAorICAgIHByb21pc2VSZWplY3RUaGVuQ2F0Y2hFeGNlcHRpb25UaGVuLAorICAgIHBy
b21pc2VUaGVuQ2F0Y2hPcmRlcmluZ1Jlc29sdmUsCisgICAgcHJvbWlzZVRoZW5DYXRjaE9yZGVy
aW5nUmVqZWN0LAorICAgIHByb21pc2VOZXN0ZWRQcm9taXNlLAorICAgIHByb21pc2VOZXN0ZWRO
ZXN0ZWRQcm9taXNlLAorICAgIHByb21pc2VXcm9uZ05lc3RlZFByb21pc2UsCisgICAgcHJvbWlz
ZUxvb3AsCisgICAgcHJvbWlzZVJlamVjdENvbnN0cnVjdG9yLCAKKyAgICBwcm9taXNlUmVzb2x2
ZUNvbnN0cnVjdG9yLAorICAgIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3JOZXN0ZWRQcm9taXNl
LAorXTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICBkZWJ1ZygiIik7CisgIHZh
ciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgdGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMv
UHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vy
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACitpbXBvcnRTY3JpcHRzKCcuL2pz
LXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciBn
bG9iYWwgPSB0aGlzOworCitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgcmVzb2x2
ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNvbHZl
cikgeworICBnbG9iYWwudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVzb2x2
ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UuY2F0Y2goZnVuY3Rp
b24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlzOworICBz
aG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZScpOwor
ICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZScp
OworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jl
c3VsdCcsICdoZWxsbycpOworICByZXR1cm4gJ2J5ZSc7Cit9KTsKKworc2Vjb25kUHJvbWlzZS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdieWUnKTsKKyAgdGVzdFBhc3NlZCgnZnVsZmls
bGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQo
J3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7Cit9KTsKKwor
c2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1
ZSgnZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdzZWNv
bmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygnZmlyc3RQcm9t
aXNlLmNhdGNoKG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZp
cnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS5jYXRjaCgzNyknLCAn
IlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisK
K3Jlc29sdmVyLnJlamVjdCgnaGVsbG8nKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWZ1
bGZpbGwtaW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitpbXBv
cnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21p
c2UuJyk7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7Cit2YXIgcHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9KTsKK3ZhciBw
cm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVuZGVmaW5lZDsK
K3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ2Z1bGZp
bGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsK
K30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7
CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
cHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgewor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdmdWxmaWxsZWQnKTsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3Byb21pc2UgaXMgcmVq
ZWN0ZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtaW5p
dC1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKK2ltcG9ydFNj
cmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CitnbG9iYWwu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K3ZhciB0aGlzSW5Jbml0OwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyKSB7CisgIHRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7Cit9
KTsKKworc2hvdWxkQmVUcnVlKCdwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxk
QmUoJ3Byb21pc2UuY29uc3RydWN0b3InLCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJbklu
aXQnLCAncHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFByb21p
c2VSZXNvbHZlcicpOworc2hvdWxkQmUoJ3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21pc2VS
ZXNvbHZlcicpOworCitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9yOiBF
eHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFByb21p
c2UoMzcpJywgJyJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiJyk7CisKK3Nob3VsZE5vdFRocm93KCdw
cm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsgfSkn
KTsKK3Byb21pc2UudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwu
cmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdC5tZXNzYWdl
JywgJ2ZvbycpOworfSk7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJl
c29sdmVyLmZ1bGZpbGwoImhlbGxvIik7CisgIHRocm93IEVycm9yKCJmb28iKTsKK30pLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RQYXNz
ZWQoJ2Z1bGZpbGxlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxs
bycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwu
cmVzdWx0ID0gcmVzdWx0OworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rl
c3QoKTsKK30pOworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21p
c2UtcmVqZWN0LWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0U2NyaXB0cygnLi9qcy10
ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCitqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0gJ3Bl
bmRpbmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9taXNl
UmVzdWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9
ICdyZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5yZWpl
Y3QoJ2hlbGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3Bl
bmRpbmcnKTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdwcm9t
aXNlIGlzIGZ1bGZpbGxlZC4nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncmVqZWN0ZWQnKTsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9t
aXNlLXJlc29sdmUtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3Jr
ZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydFNjcmlwdHMoJy4v
anMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFy
IGdsb2JhbCA9IHRoaXM7CitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBmaXJz
dFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICByZXNvbHZlci5y
ZXNvbHZlKCdoZWxsbycpOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNl
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJhY2sg
PSB0aGlzOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25k
UHJvbWlzZScpOworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9u
KCkgeworICBmYWlsKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXNp
bXBsZS1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI2IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2Ny
aXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworCitnbG9iYWwu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlz
ZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50aGlzSW5J
bml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25k
UHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwu
dGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxm
aWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJlc3Vs
dDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNo
SlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21p
c2UnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10
aGVuLWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAoraW1wb3J0
U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNl
LicpOworCit2YXIgZ2xvYmFsID0gdGhpczsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCit2YXIgcmVzb2x2ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5j
dGlvbihuZXdSZXNvbHZlcikgeworICBnbG9iYWwudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29s
dmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21p
c2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnRoaXNJbkZ1bGZpbGxDYWxsYmFj
ayA9IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmly
c3RQcm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBz
ZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisK
K3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91bGRCZVRy
dWUoJ2ZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgnc2Vj
b25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2ZpcnN0UHJv
bWlzZS50aGVuKG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZp
cnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKHVuZGVmaW5l
ZCwgbnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgc2Vjb25kIGFy
Z3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKDM3KScsICciVHlwZUVy
cm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKKworcmVzb2x2
ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291
cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91
dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydFNjcmlwdHMoJy4vanMt
dGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFyIGds
b2JhbCA9IHRoaXM7CisKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbmV3IFByb21p
c2UoZnVuY3Rpb24ocikgeyByLmZ1bGZpbGwoJ2hlbGxvJyk7IH0pCisgIC50aGVuKCkKKyAgLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICAgIGZpbmlzaEpTVGVz
dCgpOworICB9KTsKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209570</attachid>
            <date>2013-08-24 23:01:36 -0700</date>
            <delta_ts>2013-08-25 13:07:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120260-20130824230139.patch</filename>
            <type>text/plain</type>
            <size>239020</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBA
QAorMjAxMy0wOC0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBQcm9taXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIwMjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGFuIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgUHJvbWlzZXMg
LSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jcHJvbWlzZXMuCisgICAgICAgIC0gRGVzcGl0
ZSBQcm9taXNlcyBiZWluZyBkZWZpbmVkIGluIHRoZSBET00sIHRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBiZWluZyBwdXQgaW4gSlNDCisgICAgICAgICAgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBQcm9t
aXNlcyBldmVudHVhbGx5IGJlaW5nIGRlZmluZWQgbW92ZSB0byBFQ01BU2NyaXB0LgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgVXBkYXRlIGpzYydzIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IHRvIHN0dWIgb3V0IHRoZSBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suIFRoaXMg
bWVhbidzCisgICAgICAgIHlvdSBjYW4ndCBxdWl0ZSB1c2UgUHJvbWlzZXMgd2l0aCB3aXRoIHRo
ZSBjb21tYW5kIGxpbmUgdG9vbCB5ZXQuCisgICAgCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxl
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSk6Cisg
ICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBz
dXBwb3J0aW5nIGNvZGUgZm9yIHRoZSBuZXcgc3RhdGljIGxvb2t1cCB0YWJsZXMuCisKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgIEFkZCAzIG5ldyBpZGVu
dGlmaWVycywgIlByb21pc2UiLCAiUHJvbWlzZVJlc29sdmVyIiwgYW5kICJ0aGVuIi4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJl
c29sdmVyJ3MgY29uc3RydWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpUYXNrQ29udGV4dDo6flRhc2tDb250
ZXh0KToKKyAgICAgICAgQWRkIGEgbmV3IGNhbGxiYWNrIHRvIHRoZSBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSB0byBwb3N0IGEgdGFzayBvbiB0aGUgZW1iZWRkZXIncyBydW5sb29wLgorCisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSk6CisgICAgICAg
IEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVyJ3MgY29uc3Ry
dWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZVRhc2tDb250ZXh0OjpKU1Byb21pc2VUYXNrQ29udGV4dCk6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVRhc2tDb250ZXh0Ojp+SlNQcm9taXNlVGFza0NvbnRl
eHQpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpKU1By
b21pc2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpzZXRSZXNvbHZlcik6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzb2x2ZXIpOgorICAgICAgICAoSlNDOjpKU1Byb21p
c2U6OnNldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlOjpzZXRTdGF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6
c3RhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmFwcGVuZENhbGxiYWNrcyk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZTo6cXVldWVUYXNrVG9Qcm9jZXNzRnVsZmlsbENhbGxiYWNrcyk6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cXVldWVUYXNrVG9Qcm9jZXNzUmVqZWN0Q2FsbGJh
Y2tzKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNrc0Zv
clRhc2spOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OnByb2Nlc3NSZWplY3RDYWxsYmFja3NG
b3JUYXNrKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNr
c1dpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cHJvY2Vzc1JlamVjdENhbGxi
YWNrc1dpdGhWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuaDogQWRkZWQuCisg
ICAgICAgICogcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNl
Q2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNhbGxi
YWNrOjpKU1Byb21pc2VDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNhbGxiYWNr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNhbGxiYWNrOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ2FsbGJhY2s6OmNhbGxQcm9taXNl
Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDYWxsYmFjazo6Z2V0Q2FsbERhdGEp
OgorICAgICAgICAoSlNDOjpKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjYWxsUHJv
bWlzZVdyYXBwZXJDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVdyYXBwZXJDYWxs
YmFjazo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2su
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdFByb21pc2UpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1
bmNGdWxmaWxsKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVjdCk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1By
b21pc2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpK
U1Byb21pc2VQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VQcm90b3R5cGVGdW5jVGhlbik6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZUZ1bmNDYXRjaCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VSZXNvbHZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNv
bHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXI6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyOjpKU1Byb21pc2VSZXNv
bHZlcik6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXI6OnByb21pc2UpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2VSZXNvbHZlcjo6ZnVsZmlsbElmTm90UmVzb2x2ZWQpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2VSZXNvbHZlcjo6cmVzb2x2ZUlmTm90UmVzb2x2ZWQpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2VSZXNvbHZlcjo6cmVqZWN0SWZOb3RSZXNvbHZlZCk6CisgICAgICAgIChKU0M6OkpTUHJv
bWlzZVJlc29sdmVyOjpmdWxmaWxsKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXI6
OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlcjo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2ZXJD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlUmVzb2x2
ZXJQcm90b3R5cGU6OkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgIChKU0M6OkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY0Z1bGZpbGwpOgorICAgICAg
ICAoSlNDOjpKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVqZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICBBZGQg
UHJvbWlzZSBpbXBsZW1lbnRhdGlvbi4KKwogMjAxMy0wOC0yNCAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNdIGxpbmsgYWdhaW5zdCBsaWJ6IGluIGEgbW9y
ZSBjaXZpbGl6ZWQgbWFubmVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2UuY3BwCisgICAgcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKKyAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAg
IHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTUsNiAr
NDIyLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgYWxsIDogXAogICAgIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggXAorICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAg
ICAgTmFtZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDkgQEAgTFVU
X0ZJTEVTICs9IFwKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcCBc
CisgICAgcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTmFt
ZVByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5o
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTWF0aE9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTmFtZVByb3RvdHlw
ZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggXApAQCAtODExLDYgKzgxNCwyMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvbWlzZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcCBcCisg
ICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRp
bWUvSlNTY29wZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE1NDU2
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNyArMjU5LDcgQEAgcHJvdGVjdGVkOgogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9i
YWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNiArNDY4LDEzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Byb21pc2UuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNQcm9taXNlQ2FsbGJhY2suY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUHJvdG90eXBlLmNwcCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyLmNwcCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPg0KQEAgLTU0Myw2ICs1NTAsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQ
cm90b3R5cGUubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5sdXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExMSW50QXNzZW1ibHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0
LmgiIC8+DQpAQCAtODgwLDYgKzg5MCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09OT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09iamVjdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b21pc2VDYWxsYmFjay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTUHJvbWlzZVByb3RvdHlwZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUmVzb2x2ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b3h5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDU2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsNiArNjQ4LDIwIEBACiAJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
ICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggKi87IH07CisJCTdDMTVGNjVEMTdDMTk5Q0Uw
MDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9t
aXNlQ2FsbGJhY2suY3BwICovOyB9OworCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQ
cm9taXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTVGNjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICov
OyB9OworCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMw
MDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwICovOyB9OworCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi87IH07CisJ
CTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFGMTdC
RUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8q
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI4
RTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuY3BwICovOyB9OworCQk3QzNC
QTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0JBMjhGMTdDMDM5NTYwMDcyRERD
OSAvKiBKU1Byb21pc2VSZXNvbHZlci5oICovOyB9OworCQk3QzNCQTI5NjE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MDE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDM0JBMjk3MTdDMDM5
NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MTE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk3QzNCQTI5ODE3
QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQkEyOTIxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJN0MzQkEy
OTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MzE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJN0VGRjAwNjQw
RUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAx
MSw4ICsxMDI1LDYgQEAKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyog
V2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4
QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07Ci0JCUJDMThDNTI2MEUxNkZDQTcwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmx1dC5oICovOyB9OwotCQlCQzE4QzUyQTBFMTZGQ0MyMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDNTI5MEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oICovOyB9OwogCQlC
QzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0
NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9Owog
CQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2Qzkg
LyogQXJndW1lbnRzLmggKi87IH07CkBAIC0xNzc3LDYgKzE3ODksMjMgQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEUx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJl
c29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0JBMjkwMTdDMDM5NTYwMDcy
RERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5MTE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDM0JBMjkyMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5QTE3QzAzQkUxMDA3
MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVy
ZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VGRjAwNjMwRUMwNUE5
QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE5LDggKzIxNDgs
NiBAQAogCQlCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYw
IC8qIE1hdGhPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTJCMEUx
NkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTQsNyArMjE4MSw2IEBACiAJCUJDNzk1MjM0MEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJvb2xlYW5Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzc5NTIzNTBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0Nl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDZWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM4MTQ5QUYxMkY4OUY1MzAwN0IyQzMyIC8q
IEhlYWRlckRldGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFk
ZXJEZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjMsMTggKzI4
ODksMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MzQkEyOUEx
N0MwM0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywK
IAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywK
LQkJCQlCQzgxNDlBRjEyRjg5RjUzMDA3QjJDMzIgLyogSGVhZGVyRGV0ZWN0aW9uLmggKi8sCiAJ
CQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCisJCQkJ
N0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAq
LywKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8sCi0JCQkJ
QkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYwIC8qIE1hdGhPYmplY3QubHV0LmggKi8sCiAJCQkJQkMy
NjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8sCiAJ
CQkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLywKLQkJ
CQlCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCTVENTM3MjdEMEUxQzU1RUMwMDIxRTU0OSAvKiBUcmFjaW5nRHRyYWNlLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMzEwMCw2ICszMTI2LDIwIEBACiAJ
CQkJQkMyMkEzOTkwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmggKi8sCiAJCQkJQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovLAogCQkJCUE3Rjk5MzVEMEZE
NzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi8sCisJCQkJN0MxODRFMTgxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8sCisJCQkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovLAorCQkJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8sCisJCQkJN0MxNUY2NUMxN0MxOTlDRTAwNzk0RDQwIC8qIEpT
UHJvbWlzZUNhbGxiYWNrLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0Eg
LyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJN0MzQkEyOEUxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLywKKwkJCQk3QzNCQTI4RjE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCAqLywKKwkJCQk3QzNCQTI5MDE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJN0Mz
QkEyOTExN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3QzNCQTI5MjE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oICovLAogCQkJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKQEAgLTM3NjQsNiArMzgwNCw3IEBACiAJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zODMxLDYgKzM4NzIsNyBAQAogCQkJCUE3RDlBMjk4MTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZD
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTA4LDYgKzM5NTAsNyBAQAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zOTcyLDYgKzQwMTUsNyBAQAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2
RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdD
MDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggaW4gSGVhZGVycyAqLywKQEAgLTQxMzIsNyArNDE3Niw2IEBACiAJCQkJQzIxMTIyRTMx
NUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDMThDNTJBMEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhF
MjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MTk3LDExICs0MjQwLDE0IEBACiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3Rv
dHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMTg0RTFC
MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2
NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFBy
b3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTcx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyRDYwRTE3MDcwODAwMkM3RTgyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCNDExMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjEyLDYgKzQyNTgsNyBA
QAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdCMiAvKiBSZWplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJl
cGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBE
QjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyMzgsNyArNDI4
NSw2IEBACiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5n
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzUyNjBFMTZGQ0E3MDBC
MzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
M0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDcyNCw2ICs0NzcwLDcgQEAKIAkJCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZH
RGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyOTgxRkRDMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk4MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVF
MDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NDc0NSw2ICs0NzkyLDcgQEAKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQx
NTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZH
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyog
REZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENGMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDc2NCw2ICs0ODEy
LDcgQEAKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlERDIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
M0JBMjk2MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC00NzkzLDYgKzQ4NDIsNyBAQAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJC
NzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE4NEUxRTE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9t
aXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBB
MjcxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTQ4NTQsNiArNDkwNCw3IEBACiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4
IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDky
Myw2ICs0OTc0LDcgQEAKIAkJCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRF
MUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDk3Nyw2ICs1MDI5LDcgQEAKIAkJ
CQkxNDc0QzMzQzE2QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTg0RTIyMTdCRUUyNDAwMDdDQjYzQSAv
KiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEw
N0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNC
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25z
dHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZt
KCkucmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
Y2FsbEZyYW1lLT52bSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5zdHJpbmdDb25zdHJ1Y3RvclRhYmxlOyB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VQcm90b3R5cGVUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnByb21pc2VQcm90b3R5
cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgp
LnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGU7IH0K
IAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJh
c2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAg
ICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKICAgICBtYWNybyhO
YU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNy
byhQcm9taXNlKSBcCisgICAgbWFjcm8oUHJvbWlzZVJlc29sdmVyKSBcCiAgICAgbWFjcm8oUmFu
Z2VFcnJvcikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVnRXhw
KSBcCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN1
YmFycmF5KSBcCiAgICAgbWFjcm8odGVzdCkgXAorICAgIG1hY3JvKHRoZW4pIFwKICAgICBtYWNy
byh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkgXAogICAgIG1hY3JvKHRvSVNP
U3RyaW5nKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDEzIEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk5LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0Vu
YWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogLyogU291cmNlIGZvciBK
U0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0yOTcsNiAr
MzA0LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBt
X2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9lcnJvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fcHJvbWlz
ZVByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9wcm9taXNlU3Ry
dWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fcHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CisgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhp
cywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb21pc2VDYWxs
YmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVjLT52bSgp
LCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAgICAgLy8gQ29u
c3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzIxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0g
Qm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBudW1iZXJDb25z
dHJ1Y3RvciA9IE51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgTnVtYmVyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogZGF0
ZUNvbnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgRGF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBwcm9t
aXNlQ29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMs
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVn
RXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCkpKTsKIApAQCAtMzI5LDYgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIG1f
ZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CisgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHBy
b21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzQ1LDYg
KzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuU3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5z
dHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24u
Z2V0KCksIERvbnRFbnVtKTsKQEAgLTU2NCw2ICs1ODUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGF0ZVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtNTk0LDcgKzYxNywxMSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlKTsKKwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIAog
I2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiAj
aW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwpAQCAtNTgsNiAr
NTksOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKK2NsYXNzIEpT
UHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xh
c3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I7CkBAIC03MCw3ICs3MywxMyBAQCBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNr
Tm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CiAKIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2
PiBFeGVjU3RhdGVTdGFjazsKLSAgICAKKworc3RydWN0IFRhc2tDb250ZXh0IDogUmVmQ291bnRl
ZDxUYXNrQ29udGV4dD4geworICAgIHZpcnR1YWwgflRhc2tDb250ZXh0KCkKKyAgICB7CisgICAg
fQorfTsKKwogc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJv
b2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kiwg
RXhlY1N0YXRlKik7CiAgICAgQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9uUHRyIGFsbG93c0FjY2Vz
c0Zyb207CkBAIC04Niw2ICs5NSwxMCBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
ewogCiAgICAgdHlwZWRlZiBib29sICgqSmF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZEZ1bmN0
aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIEphdmFTY3JpcHRFeHBlcmltZW50
c0VuYWJsZWRGdW5jdGlvblB0ciBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkOworCisgICAg
dHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyKShF
eGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHR5cGVkZWYgdm9pZCAoKlF1ZXVlVGFza1Rv
RXZlbnRMb29wRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiwgUXVldWVUYXNrVG9F
dmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250ZXh0Pik7Cisg
ICAgUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRhc2tUb0V2ZW50TG9vcDsK
IH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewpAQCAtMTM0LDYgKzE0Nyw4IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8
RGF0ZVByb3RvdHlwZT4gbV9kYXRlUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQ
cm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxFcnJvclByb3Rv
dHlwZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUHJvdG90
eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CkBAIC0xNjcsNyArMTgy
LDExIEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmU7Ci0gICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlU3RydWN0
dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVJlc29sdmVyU3RydWN0
dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZUNhbGxiYWNrU3RydWN0
dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFj
a1N0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVyUHJvdG90eXBlPiBt
X2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJy
YXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zMTIsNiArMzMxLDggQEAgcHVibGljOgogICAg
IERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVQcm90
b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQo
KTsgfQorICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJvbWlzZVJlc29sdmVy
UHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiB3aXRoU2Nv
cGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CkBAIC0zNTks
NyArMzgwLDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
LSAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VSZXNvbHZl
clN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVyU3RydWN0dXJlLmdl
dCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVy
ZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
bWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorCiAgICAgSlNBcnJheUJ1ZmZl
clByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5
QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJheUJ1ZmZlclN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZl
ci5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBKU1Byb21pc2VUYXNrQ29udGV4
dCA6IHB1YmxpYyBUYXNrQ29udGV4dCB7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNQcm9taXNl
VGFza0NvbnRleHQ+IGNyZWF0ZShWTSYgdm0sIEpTUHJvbWlzZSogcHJvbWlzZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNQcm9taXNlVGFza0NvbnRleHQodm0sIHByb21p
c2UpKTsKKyAgICB9CisgICAgCisgICAgSlNQcm9taXNlVGFza0NvbnRleHQoVk0mIHZtLCBKU1By
b21pc2UqIHByb21pc2UpCisgICAgeworICAgICAgICBtX3Byb21pc2Uuc2V0KHZtLCBwcm9taXNl
KTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+SlNQcm9taXNlVGFza0NvbnRleHQoKQorICAg
IHsKKyAgICB9CisKKyAgICBTdHJvbmc8SlNQcm9taXNlPiBtX3Byb21pc2U7Cit9OworCitjb25z
dCBDbGFzc0luZm8gSlNQcm9taXNlOjpzX2luZm8gPSB7ICJQcm9taXNlIiwgJkJhc2U6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2UpIH07CisKK0pTUHJvbWlzZSog
SlNQcm9taXNlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBK
U1Byb21pc2UqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4o
dm0uaGVhcCkpIEpTUHJvbWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlz
ZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2U6OkpTUHJvbWlzZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkK
KyAgICAsIG1fc3RhdGUoUGVuZGluZykKK3sKK30KKwordm9pZCBKU1Byb21pc2U6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEpTUHJvbWlzZTo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNQcm9taXNlKj4oY2VsbCktPkpTUHJvbWlz
ZTo6fkpTUHJvbWlzZSgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb21pc2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9yZXNvbHZlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVz
dWx0KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9mdWxmaWxs
Q2FsbGJhY2tzLnNpemUoKTsgKytpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmKHRoaXNPYmpl
Y3QtPm1fZnVsZmlsbENhbGxiYWNrc1tpXSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dGhpc09iamVjdC0+bV9yZWplY3RDYWxsYmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCYodGhpc09iamVjdC0+bV9yZWplY3RDYWxsYmFja3NbaV0pKTsKK30KKwordm9p
ZCBKU1Byb21pc2U6OnNldFJlc29sdmVyKFZNJiB2bSwgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29s
dmVyKQoreworICAgIG1fcmVzb2x2ZXIuc2V0KHZtLCB0aGlzLCByZXNvbHZlcik7Cit9CisKK0pT
UHJvbWlzZVJlc29sdmVyKiBKU1Byb21pc2U6OnJlc29sdmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yZXNvbHZlci5nZXQoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNldFJlc3VsdChWTSYg
dm0sIEpTVmFsdWUgcmVzdWx0KQoreworICAgIG1fcmVzdWx0LnNldCh2bSwgdGhpcywgcmVzdWx0
KTsKK30KKworSlNWYWx1ZSBKU1Byb21pc2U6OnJlc3VsdCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmVzdWx0LmdldCgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0U3RhdGUoSlNQcm9taXNl
OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBQZW5kaW5nKTsKKyAgICBt
X3N0YXRlID0gc3RhdGU7Cit9CisKK0pTUHJvbWlzZTo6U3RhdGUgSlNQcm9taXNlOjpzdGF0ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK3ZvaWQgSlNQcm9taXNlOjphcHBl
bmRDYWxsYmFja3MoRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdWxmaWxsQ2Fs
bGJhY2ssIEludGVybmFsRnVuY3Rpb24qIHJlamVjdENhbGxiYWNrKQoreworICAgIC8vIDEuIEFw
cGVuZCBmdWxmaWxsQ2FsbGJhY2sgdG8gcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tzLgorICAg
IG1fZnVsZmlsbENhbGxiYWNrcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEludGVybmFsRnVuY3Rpb24+
KGV4ZWMtPnZtKCksIHRoaXMsIGZ1bGZpbGxDYWxsYmFjaykpOworICAgIAorICAgIC8vIDIuIEFw
cGVuZCByZWplY3RDYWxsYmFjayB0byBwcm9taXNlJyByZWplY3QgY2FsbGJhY2tzLgorICAgIG1f
cmVqZWN0Q2FsbGJhY2tzLmFwcGVuZChXcml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlvbj4oZXhl
Yy0+dm0oKSwgdGhpcywgcmVqZWN0Q2FsbGJhY2spKTsKKworICAgIC8vIDMuIElmIHByb21pc2Un
cyBzdGF0ZSBpcyBmdWxmaWxsZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNzIHByb21pc2UncyBm
dWxmaWxsIGNhbGxiYWNrcyB3aXRoIHByb21pc2UncyByZXN1bHQuCisgICAgaWYgKG1fc3RhdGUg
PT0gRnVsZmlsbGVkKSB7CisgICAgICAgIHF1ZXVlVGFza1RvUHJvY2Vzc0Z1bGZpbGxDYWxsYmFj
a3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiBwcm9taXNl
J3Mgc3RhdGUgaXMgcmVqZWN0ZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNzIHByb21pc2UncyBy
ZWplY3QgY2FsbGJhY2tzIHdpdGggcHJvbWlzZSdzIHJlc3VsdC4KKyAgICBpZiAobV9zdGF0ZSA9
PSBSZWplY3RlZCkgeworICAgICAgICBxdWV1ZVRhc2tUb1Byb2Nlc3NSZWplY3RDYWxsYmFja3Mo
ZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgSlNQcm9taXNlOjpxdWV1
ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
aWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9F
dmVudExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzRnVsZmlsbENhbGxi
YWNrc0ZvclRhc2ssIEpTUHJvbWlzZVRhc2tDb250ZXh0OjpjcmVhdGUoZXhlYy0+dm0oKSwgdGhp
cykpOworICAgIGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUjogRXZlbnQgbG9vcCBu
b3Qgc3VwcG9ydGVkLiIpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cXVldWVUYXNrVG9Qcm9jZXNz
UmVqZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3ApCisgICAg
ICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9F
dmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzUmVqZWN0Q2FsbGJhY2tzRm9yVGFzaywgSlNQ
cm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZShleGVjLT52bSgpLCB0aGlzKSk7CisgICAgZWxzZQor
ICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBzdXBwb3J0ZWQuIik7
Cit9CisKK3ZvaWQgSlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNrc0ZvclRhc2soRXhl
Y1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7CisgICAgSlNQcm9taXNl
VGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTUHJvbWlzZVRh
c2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IHByb21p
c2VUYXNrQ29udGV4dC0+bV9wcm9taXNlLmdldCgpOworCisgICAgcHJvbWlzZS0+cHJvY2Vzc0Z1
bGZpbGxDYWxsYmFja3NXaXRoVmFsdWUoZXhlYywgcHJvbWlzZS0+cmVzdWx0KCkpOworfQorCit2
b2lkIEpTUHJvbWlzZTo6cHJvY2Vzc1JlamVjdENhbGxiYWNrc0ZvclRhc2soRXhlY1N0YXRlKiBl
eGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7CisgICAgSlNQcm9taXNlVGFza0NvbnRl
eHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTUHJvbWlzZVRhc2tDb250ZXh0
Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IHByb21pc2VUYXNrQ29u
dGV4dC0+bV9wcm9taXNlLmdldCgpOworCisgICAgcHJvbWlzZS0+cHJvY2Vzc1JlamVjdENhbGxi
YWNrc1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLT5yZXN1bHQoKSk7Cit9CisKK3ZvaWQgSlNQcm9t
aXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gRnVsZmlsbGVkKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdWxmaWxsQ2FsbGJhY2tzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBtX2Z1bGZpbGxDYWxsYmFja3NbaV0uZ2V0KCk7
CisKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBBU1NFUlQo
Y2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworICAgICAgICBj
YWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7
CisgICAgfQorICAgIAorICAgIG1fZnVsZmlsbENhbGxiYWNrcy5jbGVhcigpOworfQorCit2b2lk
IEpTUHJvbWlzZTo6cHJvY2Vzc1JlamVjdENhbGxiYWNrc1dpdGhWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gUmVqZWN0ZWQpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlamVjdENhbGxiYWNrcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gbV9yZWplY3RDYWxsYmFja3NbaV0uZ2V0
KCk7CisKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworICAgICAg
ICBjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50
cyk7CisgICAgfQorICAgIAorICAgIG1fcmVqZWN0Q2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKU1Byb21pc2VfaAorI2RlZmluZSBKU1Byb21pc2VfaAorCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUHJvbWlz
ZVJlc29sdmVyOworY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKK3N0cnVjdCBUYXNrQ29udGV4dDsK
KworY2xhc3MgSlNQcm9taXNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMg
SlNQcm9taXNlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgdm9pZCBzZXRSZXNvbHZlcihWTSYsIEpTUHJvbWlzZVJlc29s
dmVyKik7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyKCkgY29uc3Q7CisKKyAgICBl
bnVtIFN0YXRlIHsKKyAgICAgICAgUGVuZGluZywKKyAgICAgICAgRnVsZmlsbGVkLAorICAgICAg
ICBSZWplY3RlZCwKKyAgICB9OworCisgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CisgICAgU3Rh
dGUgc3RhdGUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UmVzdWx0KFZNJiwgSlNWYWx1ZSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQoKSBjb25zdDsKKworICAgIHZvaWQgYXBwZW5kQ2FsbGJhY2tzKEV4
ZWNTdGF0ZSosIEludGVybmFsRnVuY3Rpb24qIGZ1bGZpbGxDYWxsYmFjaywgSW50ZXJuYWxGdW5j
dGlvbiogcmVqZWN0Q2FsbGJhY2spOworCisgICAgdm9pZCBxdWV1ZVRhc2tUb1Byb2Nlc3NGdWxm
aWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSopOworICAgIHZvaWQgcXVldWVUYXNrVG9Qcm9jZXNzUmVq
ZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSopOworICAgIHZvaWQgcHJvY2Vzc0Z1bGZpbGxDYWxsYmFj
a3NXaXRoVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgdm9pZCBwcm9jZXNzUmVqZWN0
Q2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0
dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlKFZNJiwgU3RydWN0dXJlKik7CisK
KyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRnVsZmlsbENhbGxiYWNrc0ZvclRhc2soRXhlY1N0YXRl
KiwgVGFza0NvbnRleHQqKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzUmVqZWN0Q2FsbGJhY2tz
Rm9yVGFzayhFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworCisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVzb2x2ZXI+IG1fcmVz
b2x2ZXI7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fcmVzdWx0OworICAgIFZlY3RvcjxX
cml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlvbj4gPiBtX2Z1bGZpbGxDYWxsYmFja3M7CisgICAg
VmVjdG9yPFdyaXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPiA+IG1fcmVqZWN0Q2FsbGJhY2tz
OworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEpTUHJvbWlzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZUNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VDYWxsYmFjazo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTUHJvbWlzZUNhbGxiYWNrKSB9OworCitKU1Byb21pc2VDYWxsYmFjayogSlNQcm9taXNl
Q2FsbGJhY2s6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIs
IEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgSlNQcm9taXNlQ2FsbGJhY2sqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ2FsbGJhY2s+KCpleGVj
LT5oZWFwKCkpKSBKU1Byb21pc2VDYWxsYmFjayhnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgYWxn
b3JpdGhtKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcmVzb2x2ZXIp
OworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VDYWxs
YmFjazo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDYWxsYmFjazo6SlNQcm9taXNlQ2FsbGJh
Y2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFs
Z29yaXRobSBhbGdvcml0aG0pCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQorICAgICwgbV9hbGdvcml0aG0oYWxnb3JpdGhtKQoreworfQorCit2b2lkIEpT
UHJvbWlzZUNhbGxiYWNrOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlz
ZVJlc29sdmVyKiByZXNvbHZlcikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52
bSgpLCAiUHJvbWlzZUNhbGxiYWNrIik7CisgICAgbV9yZXNvbHZlci5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgcmVzb2x2ZXIpOworfQorCit2b2lkIEpTUHJvbWlzZUNhbGxiYWNrOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNQcm9taXNl
Q2FsbGJhY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlQ2FsbGJhY2sqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlcik7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ2FsbGJhY2s6OmNhbGxQcm9taXNlQ2FsbGJh
Y2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZUNhbGxiYWNrKiBwcm9taXNlQ2Fs
bGJhY2sgPSBqc0Nhc3Q8SlNQcm9taXNlQ2FsbGJhY2sqPihleGVjLT5jYWxsZWUoKSk7CisgICAg
SlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZUNhbGxiYWNrLT5tX3Jlc29sdmVy
LmdldCgpOworCisgICAgLy8gMS4gTGV0IHZhbHVlIGJlIHRoZSBmaXJzdCBhcmd1bWVudCB0aGF0
IGlzIHBhc3NlZCwgYW5kIHVuZGVmaW5lZCBvdGhlcndpc2UuCisgICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworCisgICAgLy8gMi4gUnVuIHJlc29sdmVyJ3MgYWxnb3JpdGht
IHdpdGggdmFsdWUgYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIHNldC4KKyAgICBzd2l0Y2ggKHBy
b21pc2VDYWxsYmFjay0+bV9hbGdvcml0aG0pIHsKKyAgICBjYXNlIEpTUHJvbWlzZUNhbGxiYWNr
OjpGdWxmaWxsOgorICAgICAgICByZXNvbHZlci0+ZnVsZmlsbChleGVjLCB2YWx1ZSwgdHJ1ZSk7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBKU1Byb21pc2VDYWxsYmFjazo6UmVzb2x2ZToK
KyAgICAgICAgcmVzb2x2ZXItPnJlc29sdmUoZXhlYywgdmFsdWUsIHRydWUpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdDoKKyAgICAgICAgcmVz
b2x2ZXItPnJlamVjdChleGVjLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0NhbGxU
eXBlIEpTUHJvbWlzZUNhbGxiYWNrOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFByb21pc2VDYWxs
YmFjazsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCisKKworCitjb25zdCBDbGFzc0lu
Zm8gSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlV3JhcHBlckNhbGxi
YWNrKSB9OworCitKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIEpTUHJvbWlzZVdyYXBwZXJDYWxs
YmFjazo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciwgSlNW
YWx1ZSBjYWxsYmFjaykKK3sKKyAgICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlV3JhcHBlckNhbGxiYWNr
PigqZXhlYy0+aGVhcCgpKSkgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcmVzb2x2
ZXIsIGNhbGxiYWNrKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSog
SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZVdyYXBw
ZXJDYWxsYmFjazo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2s6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlUmVzb2x2ZXIq
IHJlc29sdmVyLCBKU1ZhbHVlIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGV4ZWMtPnZtKCksICJQcm9taXNlV3JhcHBlckNhbGxiYWNrIik7CisgICAgbV9yZXNvbHZlci5z
ZXQoZXhlYy0+dm0oKSwgdGhpcywgcmVzb2x2ZXIpOworICAgIG1fY2FsbGJhY2suc2V0KGV4ZWMt
PnZtKCksIHRoaXMsIGNhbGxiYWNrKTsKK30KKwordm9pZCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJh
Y2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9t
aXNlV3JhcHBlckNhbGxiYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVzb2x2ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNr
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2s6OmNhbGxQcm9taXNlV3JhcHBlckNhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIHByb21pc2VXcmFwcGVyQ2FsbGJhY2sgPSBqc0Nh
c3Q8SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKj4oZXhlYy0+Y2FsbGVlKCkpOworCisgICAgSlNQ
cm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZVdyYXBwZXJDYWxsYmFjay0+bV9yZXNv
bHZlci5nZXQoKTsKKyAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJvbWlzZVdyYXBwZXJDYWxsYmFj
ay0+bV9jYWxsYmFjay5nZXQoKTsKKworICAgIC8vIDEuIExldCBhcmd1bWVudCBiZSB0aGUgZmly
c3QgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQsIGFuZCB1bmRlZmluZWQgb3RoZXJ3aXNlLgorICAg
IEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKworICAgIC8vIDIuIFNldCBj
YWxsYmFjaydzIGNhbGxiYWNrIHRoaXMgdmFsdWUgdG8gcmVzb2x2ZXIncyBhc3NvY2lhdGVkIHBy
b21pc2UuCisgICAgLy8gMy4gTGV0IHZhbHVlIGJlIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgY2Fs
bGJhY2sgd2l0aCBhcmd1bWVudCBhcyBhcmd1bWVudC4KKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
KyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxE
YXRhKTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGNhbGxiYWNrQXJndW1lbnRzOworICAgIGNhbGxiYWNrQXJndW1lbnRz
LmFwcGVuZChhcmd1bWVudCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBj
YWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCByZXNvbHZlci0+cHJvbWlzZSgpLCBjYWxsYmFj
a0FyZ3VtZW50cyk7CisKKyAgICAvLyA0LiBJZiBpbnZva2luZyBjYWxsYmFjayB0aHJldyBhbiBl
eGNlcHRpb24sIGNhdGNoIGl0IGFuZCBydW4gcmVzb2x2ZXIncyByZWplY3QKKyAgICAvLyAgICB3
aXRoIHRoZSB0aHJvd24gZXhjZXB0aW9uIGFzIGFyZ3VtZW50IGFuZCB0aGUgc3luY2hyb25vdXMg
ZmxhZyBzZXQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFs
dWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhj
ZXB0aW9uKCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdChleGVjLCBleGNlcHRpb24sIHRy
dWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IH0KKworICAgIC8vIDUuIE90aGVyd2lzZSwgcnVuIHJlc29sdmVyJ3MgcmVzb2x2ZSB3aXRoIHZh
bHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxhZyBzZXQuCisgICAgcmVzb2x2ZXItPnJlc29sdmUo
ZXhlYywgdmFsdWUsIHRydWUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbFByb21pc2VXcmFwcGVyQ2FsbGJhY2s7CisgICAgcmV0dXJuIENhbGxU
eXBlSG9zdDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNQcm9t
aXNlQ2FsbGJhY2tfaAorI2RlZmluZSBKU1Byb21pc2VDYWxsYmFja19oCisKKyNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2VS
ZXNvbHZlcjsKKworY2xhc3MgSlNQcm9taXNlQ2FsbGJhY2sgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAg
ICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgYSBwb2ludGVyLXRvLW1lbWJlciBmdW5jdGlvbiBp
bnN0ZWFkLgorICAgIGVudW0gQWxnb3JpdGhtIHsKKyAgICAgICAgRnVsZmlsbCwKKyAgICAgICAg
UmVzb2x2ZSwKKyAgICAgICAgUmVqZWN0LAorICAgIH07CisKKyAgICBzdGF0aWMgSlNQcm9taXNl
Q2FsbGJhY2sqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEpTUHJvbWlzZVJlc29sdmVyKiwgQWxnb3JpdGhtKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUHJvbWlzZUNhbGxiYWNrKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgQWxnb3JpdGhtKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIEpTUHJvbWlzZVJlc29sdmVyKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1
Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxQcm9taXNlQ2FsbGJhY2soRXhlY1N0YXRlKik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNl
UmVzb2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgQWxnb3JpdGhtIG1fYWxnb3JpdGhtOworfTsKKwor
Y2xhc3MgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
eworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3Rh
dGljIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBKU1ZhbHVlIGNhbGxiYWNr
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpT
UHJvbWlzZVdyYXBwZXJDYWxsYmFjayhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBKU1Zh
bHVlIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCisg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2VXcmFwcGVy
Q2FsbGJhY2soRXhlY1N0YXRlKik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVzb2x2ZXI+
IG1fcmVzb2x2ZXI7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fY2FsbGJhY2s7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZUNhbGxiYWNrX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9t
aXNlQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZUNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNQ
cm9taXNlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTUHJvbWlzZUNvbnN0cnVjdG9yKTsK
KworLy8gc3RhdGljIFByb21pc2UgZnVsZmlsbChhbnkgdmFsdWUpOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jRnVsZmlsbChFeGVj
U3RhdGUqKTsKKy8vIHN0YXRpYyBQcm9taXNlIHJlc29sdmUoYW55IHZhbHVlKTsgLy8gc2FtZSBh
cyBhbnkodmFsdWUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21p
c2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlKEV4ZWNTdGF0ZSopOworLy8gc3RhdGljIFByb21pc2Ug
cmVqZWN0KGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZWplY3QoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1
ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6cHJvbWlzZUNvbnN0cnVj
dG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlQ29uc3RydWN0b3IpIH07CisK
Ky8qIFNvdXJjZSBmb3IgSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBwcm9taXNl
Q29uc3RydWN0b3JUYWJsZQorICBmdWxmaWxsICAgICAgICAgSlNQcm9taXNlQ29uc3RydWN0b3JG
dW5jRnVsZmlsbCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29sdmUgICAg
ICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgcmVqZWN0ICAgICAgICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jl
amVjdCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSlNQcm9t
aXNlQ29uc3RydWN0b3IqIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNQcm9taXNlUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQoreworICAgIEpTUHJvbWlzZUNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJv
bWlzZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9taXNlQ29uc3RydWN0b3IoZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihl
eGVjLCBwcm9taXNlUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0
cnVjdHVyZSogSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNl
Q29uc3RydWN0b3I6OkpTUHJvbWlzZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkgCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlUHJvdG90eXBlKiBwcm9t
aXNlUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQ
cm9taXNlIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvbWlzZVByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDIpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFy
Z3VtZW50IikpOworCisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5v
bmUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmdsb2JhbE9iamVjdCgpOworICAgIAorICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3
IHByb21pc2UuCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOworCisgICAgLy8gMi4g
TGV0IHJlc29sdmVyIGJlIHByb21pc2UncyBhc3NvY2lhdGVkIHJlc29sdmVyLgorICAgIEpTUHJv
bWlzZVJlc29sdmVyKiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUoZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUoKSwgcHJvbWlzZSk7
CisgICAgcHJvbWlzZS0+c2V0UmVzb2x2ZXIoZXhlYy0+dm0oKSwgcmVzb2x2ZXIpOworCisgICAg
Ly8gMy4gU2V0IGluaXQncyBjYWxsYmFjayB0aGlzIHZhbHVlIHRvIHByb21pc2UuCisgICAgLy8g
NC4gSW52b2tlIGluaXQgd2l0aCByZXNvbHZlciBwYXNzZWQgYXMgcGFyYW1ldGVyLgorICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGluaXRBcmd1bWVudHM7CisgICAgaW5pdEFyZ3VtZW50cy5hcHBl
bmQocmVzb2x2ZXIpOworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgcHJvbWlzZSwgaW5pdEFyZ3VtZW50cyk7CisKKyAgICAvLyA1LiBJZiBpbml0IHRocmV3IGFu
IGV4Y2VwdGlvbiwgY2F0Y2ggaXQsIGFuZCB0aGVuLCBpZiByZXNvbHZlcidzIHJlc29sdmVkIGZs
YWcKKyAgICAvLyAgICBpcyB1bnNldCwgcnVuIHJlc29sdmVyJ3MgcmVqZWN0IHdpdGggdGhlIHRo
cm93biBleGNlcHRpb24gYXMgYXJndW1lbnQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSB7CisgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAg
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdElm
Tm90UmVzb2x2ZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RQcm9t
aXNlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSlNQcm9t
aXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikKK3sKKyAgICBy
ZXR1cm4gQ2FsbFR5cGVOb25lOworfQorCitib29sIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnBy
b21pc2VDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3Iq
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0Z1bGZpbGwoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qg
b25lIGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IEpTUHJvbWlzZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVj
dHVyZSgpKTsKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBKU1Byb21pc2VSZXNv
bHZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVJlc29sdmVyU3Ry
dWN0dXJlKCksIHByb21pc2UpOworICAgIHByb21pc2UtPnNldFJlc29sdmVyKGV4ZWMtPnZtKCks
IHJlc29sdmVyKTsKKworICAgIHJlc29sdmVyLT5mdWxmaWxsKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVzb2x2ZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBl
Y3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNQcm9t
aXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0
LT5wcm9taXNlU3RydWN0dXJlKCkpOworICAgIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciA9
IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5wcm9t
aXNlUmVzb2x2ZXJTdHJ1Y3R1cmUoKSwgcHJvbWlzZSk7CisgICAgcHJvbWlzZS0+c2V0UmVzb2x2
ZXIoZXhlYy0+dm0oKSwgcmVzb2x2ZXIpOworCisgICAgcmVzb2x2ZXItPnJlc29sdmUoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNl
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3Rv
ckZ1bmNSZWplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnRD
b3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsK
KworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKGV4ZWMtPnZtKCks
IGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKKyAgICBKU1Byb21pc2VSZXNvbHZl
ciogcmVzb2x2ZXIgPSBKU1Byb21pc2VSZXNvbHZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2Jh
bE9iamVjdC0+cHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKCksIHByb21pc2UpOworICAgIHByb21p
c2UtPnNldFJlc29sdmVyKGV4ZWMtPnZtKCksIHJlc29sdmVyKTsKKworICAgIHJlc29sdmVyLT5y
ZWplY3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNQcm9taXNlQ29uc3RydWN0
b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOworCitjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VDb25zdHJ1Y3RvciogY3Jl
YXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUHJv
dG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUHJvdG90eXBl
Kik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisK
K3ByaXZhdGU6CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VDb25zdHJ1Y3Rvcl9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVBy
b3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIK
KyNpbmNsdWRlICJKU1Byb21pc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29s
dmVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU1Byb21pc2VQcm90b3R5cGUpOworCisvLyBQcm9taXNlIHRoZW4oW1RyZWF0VW5kZWZpbmVk
QXM9TWlzc2luZ10gb3B0aW9uYWwgQW55Q2FsbGJhY2sgZnVsZmlsbENhbGxiYWNrLCBbVHJlYXRV
bmRlZmluZWRBcz1NaXNzaW5nXSBvcHRpb25hbCBBbnlDYWxsYmFjayByZWplY3RDYWxsYmFjayk7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VQcm90b3R5cGVG
dW5jVGhlbihFeGVjU3RhdGUqKTsKKy8vIFByb21pc2UgY2F0Y2goW1RyZWF0VW5kZWZpbmVkQXM9
TWlzc2luZ10gb3B0aW9uYWwgQW55Q2FsbGJhY2sgcmVqZWN0Q2FsbGJhY2spOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUHJvdG90eXBlRnVuY0NhdGNoKEV4
ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJQcm9taXNlUHJvdG90eXBlIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywg
MCwgRXhlY1N0YXRlOjpwcm9taXNlUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNQcm9taXNlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEpTUHJvbWlzZVByb3RvdHlw
ZS5sdXQuaAorQGJlZ2luIHByb21pc2VQcm90b3R5cGVUYWJsZQorICB0aGVuICAgICAgICAgSlNQ
cm9taXNlUHJvdG90eXBlRnVuY1RoZW4gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICBjYXRjaCAgICAgICAgSlNQcm9taXNlUHJvdG90eXBlRnVuY0NhdGNoICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSlNQcm9taXNlUHJvdG90eXBlKiBKU1Byb21p
c2VQcm90b3R5cGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VQcm90b3R5cGU+KCpleGVjLT5oZWFw
KCkpKSBKU1Byb21pc2VQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKwor
U3RydWN0dXJlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNl
UHJvdG90eXBlOjpKU1Byb21pc2VQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEpTUHJvbWlzZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
PnZtKCkpOworfQorCitib29sIEpTUHJvbWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VQcm90b3R5
cGVGdW5jVGhlbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlKiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2UqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCF0aGlzT2JqZWN0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgb2YgdGhlbiBtdXN0IGJlIGEgUHJvbWlzZSIpKTsKKwor
ICAgIEpTVmFsdWUgZnVsZmlsbENhbGxiYWNrID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYg
KCFmdWxmaWxsQ2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdWxmaWxsQ2Fs
bGJhY2ssIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCIpKTsKKyAgICB9Cisg
ICAgCisgICAgSlNWYWx1ZSByZWplY3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAg
IGlmICghcmVqZWN0Q2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RD
YWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25l
KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIHNlY29uZCBhcmd1bWVudCIpKTsKKyAgICB9
CisKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9i
YWxPYmplY3QoKTsKKworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisg
ICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xv
YmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOworCisgICAgLy8gMi4gTGV0IHJlc29sdmVy
IGJlIHByb21pc2UncyBhc3NvY2lhdGVkIHJlc29sdmVyLgorICAgIEpTUHJvbWlzZVJlc29sdmVy
KiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFs
T2JqZWN0LT5wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUoKSwgcHJvbWlzZSk7CisgICAgcHJvbWlz
ZS0+c2V0UmVzb2x2ZXIoZXhlYy0+dm0oKSwgcmVzb2x2ZXIpOworCisgICAgLy8gMy4gTGV0IGZ1
bGZpbGxXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVyIGNhbGxiYWNrIGZvciByZXNvbHZlciBh
bmQgZnVsZmlsbENhbGxiYWNrIGlmIGZ1bGZpbGxDYWxsYmFjayBpcworICAgIC8vICAgIG5vdCBv
bWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgZnVsZmls
bCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bGZpbGxXcmFw
cGVyOworICAgIGlmICghZnVsZmlsbENhbGxiYWNrLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGZ1
bGZpbGxXcmFwcGVyID0gSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUo
KSwgcmVzb2x2ZXIsIGZ1bGZpbGxDYWxsYmFjayk7CisgICAgZWxzZQorICAgICAgICBmdWxmaWxs
V3JhcHBlciA9IEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgpLCByZXNvbHZlciwgSlNQcm9t
aXNlQ2FsbGJhY2s6OkZ1bGZpbGwpOworCisgICAgLy8gNC4gTGV0IHJlamVjdFdyYXBwZXIgYmUg
YSBwcm9taXNlIHdyYXBwZXIgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCByZWplY3RDYWxsYmFj
ayBpZiByZWplY3RDYWxsYmFjayBpcworICAgIC8vICAgIG5vdCBvbWl0dGVkIGFuZCBhIHByb21p
c2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgcmVqZWN0IGFsZ29yaXRobSBvdGhlcndp
c2UuCisgICAgSW50ZXJuYWxGdW5jdGlvbiogcmVqZWN0V3JhcHBlcjsKKyAgICBpZiAoIXJlamVj
dENhbGxiYWNrLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJlamVjdFdyYXBwZXIgPSBKU1Byb21p
c2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpLCByZXNvbHZlciwgcmVqZWN0Q2Fs
bGJhY2spOworICAgIGVsc2UKKyAgICAgICAgcmVqZWN0V3JhcHBlciA9IEpTUHJvbWlzZUNhbGxi
YWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VDYWxs
YmFja1N0cnVjdHVyZSgpLCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdCk7CisK
KyAgICAvLyA1LiBBcHBlbmQgZnVsZmlsbFdyYXBwZXIgYW5kIHJlamVjdFdyYXBwZXIgdG8gdGhl
IGNvbnRleHQgb2JqZWN0LgorICAgIHRoaXNPYmplY3QtPmFwcGVuZENhbGxiYWNrcyhleGVjLCBm
dWxmaWxsV3JhcHBlciwgcmVqZWN0V3JhcHBlcik7CisKKyAgICAvLyA2LiBSZXR1cm4gcHJvbWlz
ZS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1bmNDYXRjaChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNQcm9taXNlKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1By
b21pc2UqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2
ZXIgb2YgY2F0Y2ggbXVzdCBiZSBhIFByb21pc2UiKSk7CisgICAgCisgICAgSlNWYWx1ZSByZWpl
Y3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghcmVqZWN0Q2FsbGJhY2su
aXNVbmRlZmluZWQoKSkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RDYWxsYmFjaywgY2FsbERhdGEpOwor
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0
aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IikpOworICAgIH0KKworICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpOworCisgICAgLy8g
MS4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KKyAgICBKU1Byb21pc2UqIHByb21pc2Ug
PSBKU1Byb21pc2U6OmNyZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1
Y3R1cmUoKSk7CisKKyAgICAvLyAyLiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0
ZWQgcmVzb2x2ZXIuCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gSlNQcm9taXNl
UmVzb2x2ZXI6OmNyZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QtPnByb21pc2VSZXNvbHZl
clN0cnVjdHVyZSgpLCBwcm9taXNlKTsKKyAgICBwcm9taXNlLT5zZXRSZXNvbHZlcihleGVjLT52
bSgpLCByZXNvbHZlcik7CisKKyAgICAvLyAzLiBMZXQgZnVsZmlsbENhbGxiYWNrIGJlIGEgbmV3
IHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgZnVsZmlsbCBhbGdvcml0aG0u
CisgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVsZmlsbFdyYXBwZXIgPSBKU1Byb21pc2VDYWxsYmFj
azo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ2FsbGJh
Y2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpGdWxmaWxsKTsKKwor
ICAgIC8vIDQuIExldCByZWplY3RXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVyIGNhbGxiYWNr
IGZvciByZXNvbHZlciBhbmQgcmVqZWN0Q2FsbGJhY2sgaWYgcmVqZWN0Q2FsbGJhY2sgaXMKKyAg
ICAvLyAgICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBh
bmQgaXRzIHJlamVjdCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVybmFsRnVuY3Rpb24q
IHJlamVjdFdyYXBwZXI7CisgICAgaWYgKCFyZWplY3RDYWxsYmFjay5pc1VuZGVmaW5lZCgpKQor
ICAgICAgICByZWplY3RXcmFwcGVyID0gSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VXcmFwcGVyQ2FsbGJhY2tT
dHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIHJlamVjdENhbGxiYWNrKTsKKyAgICBlbHNlCisgICAgICAg
IHJlamVjdFdyYXBwZXIgPSBKU1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIs
IEpTUHJvbWlzZUNhbGxiYWNrOjpSZWplY3QpOworCisgICAgLy8gNS4gQXBwZW5kIGZ1bGZpbGxX
cmFwcGVyIGFuZCByZWplY3RXcmFwcGVyIHRvIHRoZSBjb250ZXh0IG9iamVjdC4KKyAgICB0aGlz
T2JqZWN0LT5hcHBlbmRDYWxsYmFja3MoZXhlYywgZnVsZmlsbFdyYXBwZXIsIHJlamVjdFdyYXBw
ZXIpOworCisgICAgLy8gNi4gUmV0dXJuIHByb21pc2UuCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEpTUHJvbWlzZVByb3RvdHlwZV9oCisjZGVmaW5lIEpTUHJvbWlzZVByb3RvdHlwZV9oCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNl
UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlw
ZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAgIEpTUHJvbWlzZVByb3RvdHlw
ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VQcm90b3R5
cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Byb21p
c2VSZXNvbHZlci5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9t
aXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZlcjo6c19pbmZvID0g
eyAiUHJvbWlzZVJlc29sdmVyIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Byb21pc2VSZXNvbHZlcikgfTsKKworSlNQcm9taXNlUmVzb2x2ZXIqIEpTUHJvbWlz
ZVJlc29sdmVyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNQcm9taXNl
KiBwcm9taXNlKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlcj4odm0uaGVhcCkpIEpTUHJvbWlzZVJl
c29sdmVyKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHBy
b21pc2UpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9taXNlUmVz
b2x2ZXI6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUmVzb2x2ZXI6OkpTUHJvbWlzZVJlc29s
dmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2lzUmVzb2x2ZWQoZmFsc2UpCit7Cit9CisKK3ZvaWQg
SlNQcm9taXNlUmVzb2x2ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm9taXNlKiBwcm9t
aXNlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CisgICAgbV9wcm9taXNlLnNldCh2bSwgdGhpcywgcHJvbWlzZSk7Cit9CisK
K3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VSZXNvbHZlciogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Byb21pc2VSZXNvbHZlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1
cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5X
aXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworCisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9wcm9taXNlKTsKK30KKworSlNQcm9taXNlKiBKU1Byb21pc2VSZXNvbHZlcjo6cHJv
bWlzZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsKK30KKwordm9pZCBK
U1Byb21pc2VSZXNvbHZlcjo6ZnVsZmlsbElmTm90UmVzb2x2ZWQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghbV9pc1Jlc29sdmVkKSB7CisgICAgICAgIG1faXNS
ZXNvbHZlZCA9IHRydWU7CisgICAgICAgIGZ1bGZpbGwoZXhlYywgdmFsdWUpOworICAgIH0KK30K
Kwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6cmVzb2x2ZUlmTm90UmVzb2x2ZWQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghbV9pc1Jlc29sdmVkKSB7CisgICAg
ICAgIG1faXNSZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHJlc29sdmUoZXhlYywgdmFsdWUpOwor
ICAgIH0KK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6cmVqZWN0SWZOb3RSZXNvbHZlZChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2ZWQp
IHsKKyAgICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0KGV4ZWMsIHZh
bHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OmZ1bGZpbGwoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBib29sIHN5bmNocm9ub3VzKQoreworICAgIC8vIDEu
IExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvbWlzZS4K
KyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIGZ1bGZpbGxlZC4KKyAgICBtX3Byb21p
c2UtPnNldFN0YXRlKEpTUHJvbWlzZTo6RnVsZmlsbGVkKTsKKworICAgIC8vIDMuIFNldCBwcm9t
aXNlJ3MgcmVzdWx0IHRvIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+c2V0UmVzdWx0KGV4ZWMtPnZt
KCksIHZhbHVlKTsKKworICAgIC8vIDQuIElmIHRoZSBzeW5jaHJvbm91cyBmbGFnIGlzIHNldCwg
cHJvY2VzcyBwcm9taXNlJ3MgZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBpZiAo
c3luY2hyb25vdXMpIHsKKyAgICAgICAgbV9wcm9taXNlLT5wcm9jZXNzRnVsZmlsbENhbGxiYWNr
c1dpdGhWYWx1ZShleGVjLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgLy8gNS4gT3RoZXJ3aXNlLCB0aGUgc3luY2hyb25vdXMgZmxhZyBpcyB1bnNldCwgcXVldWUg
YSB0YXNrIHRvIHByb2Nlc3MgcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tzIHdpdGggdmFsdWUu
CisgICAgbV9wcm9taXNlLT5xdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKGV4ZWMp
OworfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICAvLyAxLiBMZXQgdGhlbiBi
ZSBudWxsLgorICAgIEpTVmFsdWUgdGhlbiA9IGpzTnVsbCgpOworICAgIAorICAgIC8vIDIuIElm
IHZhbHVlIGlzIGEgSmF2YVNjcmlwdCBPYmplY3QsIHNldCB0aGVuIHRvIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyB0aGUgSmF2YVNjcmlwdCBbW0dldF1dIGludGVybmFsCisgICAgLy8gICAgbWV0aG9k
IG9mIHZhbHVlIHdpdGggcHJvcGVydHkgbmFtZSB0aGVuLgorICAgIGlmICh2YWx1ZS5pc09iamVj
dCgpKSB7CisgICAgICAgIHRoZW4gPSB2YWx1ZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnRoZW4pOworCisgICAgICAgIC8vIDMuIElmIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJu
YWwgbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQgYW5kIHJ1biByZWplY3Qgd2l0
aCB0aGUgdGhyb3duCisgICAgICAgIC8vICAgIGV4Y2VwdGlvbiBhbmQgdGhlIHN5bmNocm9ub3Vz
IGZsYWcgaWYgc2V0LCBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24g
PSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CisKKyAgICAgICAgICAgIHJlamVjdChleGVjLCBleGNlcHRpb24sIHRydWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gNC4gSWYgSmF2YVNjcmlwdCBJc0Nh
bGxhYmxlKHRoZW4pIGlzIHRydWUsIHJ1biB0aGVzZSBzdWJzdGVwcyBhbmQgdGhlbiB0ZXJtaW5h
dGUgdGhlc2Ugc3RlcHM6CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEodGhlbiwgY2FsbERhdGEpOworICAgICAg
ICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAvLyA0LjEuIExl
dCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBwcm9taXNlIGNhbGxiYWNrIGZvciB0aGUgY29udGV4dCBv
YmplY3QgYW5kIGl0cyByZXNvbHZlIGFsZ29yaXRobS4KKyAgICAgICAgICAgIEpTUHJvbWlzZUNh
bGxiYWNrKiBmdWxmaWxsQ2FsbGJhY2sgPSBKU1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBnbG9iYWxPYmplY3QoKS0+cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJl
KCksIHRoaXMsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZXNvbHZlKTsKKworICAgICAgICAgICAgLy8g
NC4yLiBMZXQgcmVqZWN0Q2FsbGJhY2sgYmUgYSBwcm9taXNlIGNhbGxiYWNrIGZvciB0aGUgY29u
dGV4dCBvYmplY3QgYW5kIGl0cyByZWplY3QgYWxnb3JpdGhtLgorICAgICAgICAgICAgSlNQcm9t
aXNlQ2FsbGJhY2sqIHJlamVjdENhbGxiYWNrID0gSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QoKSwgZ2xvYmFsT2JqZWN0KCktPnByb21pc2VDYWxsYmFja1N0cnVj
dHVyZSgpLCB0aGlzLCBKU1Byb21pc2VDYWxsYmFjazo6UmVqZWN0KTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gNC4zLiBDYWxsIHRoZSBKYXZhU2NyaXB0IFtbQ2FsbF1dIGludGVybmFs
IG1ldGhvZCBvZiB0aGVuIHdpdGggdGhpcyB2YWx1ZSB2YWx1ZSBhbmQgZnVsZmlsbENhbGxiYWNr
CisgICAgICAgICAgICAvLyAgICAgIGFuZCByZWplY3RDYWxsYmFjayBhcyBhcmd1bWVudHMuCisg
ICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciB0aGVuQXJndW1lbnRzOworICAgICAgICAg
ICAgdGhlbkFyZ3VtZW50cy5hcHBlbmQoZnVsZmlsbENhbGxiYWNrKTsKKyAgICAgICAgICAgIHRo
ZW5Bcmd1bWVudHMuYXBwZW5kKHJlamVjdENhbGxiYWNrKTsKKyAgICAgICAgICAgIGNhbGwoZXhl
YywgdGhlbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1ZSwgdGhlbkFyZ3VtZW50cyk7CisKKyAg
ICAgICAgICAgIC8vIDQuNCBJZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qg
dGhyZXcgYW4gZXhjZXB0aW9uLCBjYXRjaCBpdCBhbmQgcnVuIGNvbnRleHQgb2JqZWN0J3MKKyAg
ICAgICAgICAgIC8vICAgICByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGV4Y2VwdGlvbiBhbmQgdGhl
IHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LgorICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNl
cHRpb24oKTsKKyAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworCisgICAg
ICAgICAgICAgICAgcmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gNS4gUnVuIGNvbnRleHQgb2JqZWN0J3MgZnVsZmlsbCB3aXRoIHZh
bHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxhZyBpZiBzZXQuCisgICAgZnVsZmlsbChleGVjLCB2
YWx1ZSwgc3luY2hyb25vdXMpOworfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZWplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBib29sIHN5bmNocm9ub3VzKQoreworICAg
IC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFzc29jaWF0ZWQgcHJv
bWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIHJlamVjdGVkLgorICAgIG1f
cHJvbWlzZS0+c2V0U3RhdGUoSlNQcm9taXNlOjpSZWplY3RlZCk7CisKKyAgICAvLyAzLiBTZXQg
cHJvbWlzZSdzIHJlc3VsdCB0byB2YWx1ZS4KKyAgICBtX3Byb21pc2UtPnNldFJlc3VsdChleGVj
LT52bSgpLCB2YWx1ZSk7CisKKyAgICAvLyA0LiBJZiB0aGUgc3luY2hyb25vdXMgZmxhZyBpcyBz
ZXQsIHByb2Nlc3MgcHJvbWlzZSdzIHJlamVjdCBjYWxsYmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBp
ZiAoc3luY2hyb25vdXMpIHsKKyAgICAgICAgbV9wcm9taXNlLT5wcm9jZXNzUmVqZWN0Q2FsbGJh
Y2tzV2l0aFZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSBzeW5jaHJvbm91cyBmbGFnIGlzIHVuc2V0LCBxdWV1
ZSBhIHRhc2sgdG8gcHJvY2VzcyBwcm9taXNlJ3MgcmVqZWN0IGNhbGxiYWNrcyB3aXRoIHZhbHVl
LgorICAgIG1fcHJvbWlzZS0+cXVldWVUYXNrVG9Qcm9jZXNzUmVqZWN0Q2FsbGJhY2tzKGV4ZWMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNQcm9taXNlUmVzb2x2
ZXJfaAorI2RlZmluZSBKU1Byb21pc2VSZXNvbHZlcl9oCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworCitjbGFzcyBKU1Byb21p
c2VSZXNvbHZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VSZXNvbHZl
ciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNQcm9taXNlKik7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSgpIGNvbnN0OworCisg
ICAgdm9pZCBmdWxmaWxsSWZOb3RSZXNvbHZlZChFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICB2
b2lkIHJlc29sdmVJZk5vdFJlc29sdmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHZvaWQg
cmVqZWN0SWZOb3RSZXNvbHZlZChFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKworICAgIHZvaWQgZnVs
ZmlsbChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sIHN5bmNocm9ub3VzID0gZmFsc2UpOworICAg
IHZvaWQgcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sIHN5bmNocm9ub3VzID0gZmFs
c2UpOworICAgIHZvaWQgcmVqZWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wgc3luY2hyb25v
dXMgPSBmYWxzZSk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNQcm9taXNlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKworcHJp
dmF0ZToKKyAgICBKU1Byb21pc2VSZXNvbHZlcihWTSYsIFN0cnVjdHVyZSopOworCisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZT4gbV9wcm9taXNlOworICAgIGJvb2wgbV9pc1Jlc29sdmVkOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VSZXNvbHZlcl9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBU1NF
UlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKSB9OworCitKU1Byb21pc2VSZXNvbHZlckNvbnN0
cnVjdG9yKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCit7CisgICAgSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb21pc2VQcm90b3R5cGUpOwor
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VSZXNvbHZl
ckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0
b3I6OkpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKSAKK3sKK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlckNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZVJlc29sdmVy
UHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2VSZXNvbHZlciIpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsIHByb21pc2VSZXNvbHZlclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOworfQorCitDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpCit7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVOb25lOworfQorCitDYWxsVHlwZSBKU1Byb21pc2VSZXNvbHZlckNvbnN0
cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpCit7CisgICAgcmV0dXJuIENh
bGxUeXBlTm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3Jf
aAorI2RlZmluZSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIklu
dGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlOworCitjbGFzcyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3Iq
IGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJpdmF0ZToK
KyAgICBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpT
UHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3JfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKTsKKworLy8gdm9pZCBmdWxmaWxsKG9wdGlvbmFsIGFueSB2YWx1ZSk7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1
bmNGdWxmaWxsKEV4ZWNTdGF0ZSopOworLy8gdm9pZCByZXNvbHZlKG9wdGlvbmFsIGFueSB2YWx1
ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZUZ1bmNSZXNvbHZlKEV4ZWNTdGF0ZSopOworLy8gdm9pZCByZWplY3Qob3B0aW9u
YWwgYW55IHZhbHVlKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY1JlamVjdChFeGVjU3RhdGUqKTsKKworfQorCisjaW5j
bHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlByb21pc2VSZXNvbHZlclByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0
ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNQcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJs
ZQorICBmdWxmaWxsICAgICAgICAgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jRnVsZmls
bCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29sdmUgICAgICAgICBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZXNvbHZlICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgcmVqZWN0ICAgICAgICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVu
Y1JlamVjdCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGUqIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJl
KQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAo
KSkpIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBvYmplY3Q7
Cit9CisKK1N0cnVjdHVyZSogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
K30KKworSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OkpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZp
bmFsT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworfQorCitib29s
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgRXhlY1N0YXRlOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZShleGVj
KSwganNDYXN0PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZUZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1By
b21pc2VSZXNvbHZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlUmVzb2x2
ZXIqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIg
b2YgdGhlbiBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyIikpOworCisgICAgdGhpc09iamVjdC0+
ZnVsZmlsbElmTm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
dGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIHRoZW4gbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIp
KTsKKworICAgIHRoaXNPYmplY3QtPnJlc29sdmVJZk5vdFJlc29sdmVkKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlRnVuY1JlamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIHRoZW4gbXVzdCBi
ZSBhIFByb21pc2VSZXNvbHZlciIpKTsKKworICAgIHRoaXNPYmplY3QtPnJlamVjdElmTm90UmVz
b2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZV9o
CisjZGVmaW5lIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAgIEpTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBAIGV4dGVybiBjb25zdCBI
YXNoVGFibGUgcmVnRXhwVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4cENvbnN0
cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4cFByb3RvdHlwZVRhYmxl
OwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOworZXh0ZXJu
IGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUHJvdG90eXBlVGFibGU7CitleHRlcm4gY29uc3QgSGFz
aFRhYmxlIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBw
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsKIAogLy8gTm90ZTogUGxhdGZvcm0uaCB3aWxs
IGVuZm9yY2UgdGhhdCBFTkFCTEUoQVNTRU1CTEVSKSBpcyB0cnVlIGlmIGVpdGhlcgogLy8gRU5B
QkxFKEpJVCkgb3IgRU5BQkxFKFlBUlJfSklUKSBvciBib3RoIGFyZSBlbmFibGVkLiBUaGUgY29k
ZSBiZWxvdwpAQCAtMTYxLDYgKzE2NCw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNoVGFi
bGU+KEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkpCiAgICAgLCByZWdFeHBQcm90b3R5cGVU
YWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBQcm90b3R5cGVUYWJsZSkpCiAgICAg
LCBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnN0cmluZ0Nv
bnN0cnVjdG9yVGFibGUpKQorICAgICwgcHJvbWlzZVByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFz
aFRhYmxlPihKU0M6OnByb21pc2VQcm90b3R5cGVUYWJsZSkpCisgICAgLCBwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlQ29uc3RydWN0b3JUYWJs
ZSkpCisgICAgLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJs
ZT4oSlNDOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZSkpCiAgICAgLCBpZGVudGlmaWVy
VGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuY3VycmVudElkZW50aWZp
ZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmllclRhYmxlKCkpCiAgICAgLCBwcm9wZXJ0eU5hbWVz
KG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKSkKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2Vk
QXJndW1lbnRCdWZmZXIpCkBAIC0zMTAsNiArMzE2LDkgQEAgVk06On5WTSgpCiAgICAgcmVnRXhw
Q29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICByZWdFeHBQcm90b3R5cGVUYWJs
ZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJs
ZSgpOworICAgIHByb21pc2VQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBwcm9t
aXNlQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBwcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKIAogICAgIGZhc3REZWxldGUoY29uc3RfY2Fz
dDxIYXNoVGFibGUqPihhcnJheUNvbnN0cnVjdG9yVGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNv
bnN0X2Nhc3Q8SGFzaFRhYmxlKj4oYXJyYXlQcm90b3R5cGVUYWJsZSkpOwpAQCAtMzI4LDYgKzMz
Nyw5IEBAIFZNOjp+Vk0oKQogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihy
ZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hU
YWJsZSo+KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0
PEhhc2hUYWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKTsKKyAgICBmYXN0RGVsZXRlKGNv
bnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZVByb3RvdHlwZVRhYmxlKSk7CisgICAgZmFzdERl
bGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VDb25zdHJ1Y3RvclRhYmxlKSk7Cisg
ICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VSZXNvbHZlclByb3Rv
dHlwZVRhYmxlKSk7CiAKICAgICBkZWxldGUgZW1wdHlMaXN0OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRh
YmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFByb3RvdHlwZVRhYmxlOwogICAg
ICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGU7CisgICAgICAgIGNv
bnN0IEhhc2hUYWJsZSogcHJvbWlzZVByb3RvdHlwZVRhYmxlOworICAgICAgICBjb25zdCBIYXNo
VGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUq
IHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOwogICAgICAgICAKICAgICAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
NDU2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg4IEBACisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQ
cm9taXNlcyAtIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNlcy4KKyAgICAgICAg
LSBEZXNwaXRlIFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwgdGhlIGltcGxlbWVu
dGF0aW9uIGlzIGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3Ig
dGhlIFByb21pc2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBtb3ZlIHRvIEVDTUFTY3JpcHQu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9q
cy9Qcm9taXNlLWNoYWluLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1leGNl
cHRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29y
a2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1pbml0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
anMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pz
L1Byb21pc2UtcmVqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1yZXNv
bHZlLWNoYWluLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWlu
LXdvcmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0
aC10aGVuLWV4Y2VwdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVz
b2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1zaW1w
bGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Q
cm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlz
ZS1zaW1wbGUtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Ut
c2ltcGxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmls
bC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJh
Y2tzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10eXBlcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2pzL1Byb21pc2UuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cDoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0VGFzay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxP
YmplY3RDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0
Q2FsbGJhY2s6On5KU0dsb2JhbE9iamVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
R2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxP
YmplY3RDYWxsYmFjazo6SlNHbG9iYWxPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayk6CisgICAgICAgIChXZWJD
b3JlOjpKU0dsb2JhbE9iamVjdFRhc2s6On5KU0dsb2JhbE9iamVjdFRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUpOgorICAgICAgICBBZGQgYSBuZXcgdGFzayB0
eXBlIHRvIGJlIHVzZWQgd2l0aCB0aGUgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUncyBuZXcgUXVl
dWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1
ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
Lmg6CisgICAgICAgIEltcGxlbWVudCB0aGUgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgY2FsbGJh
Y2ssIFF1ZXVlVGFza1RvRXZlbnRMb29wLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICBBbGwgdXNpbmcgSlNNYWluVGhyZWFkRXhlY1N0
YXRlIGFzIGEgc2ltcGxlIFJBSUkgb2JqZWN0LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291cmNl
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAgICAgQWRkIGEgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgYW5kIGltcGxlbWVudCBRdWV1ZVRhc2tUb0V2ZW50TG9vcC4g
Rm9yd2FyZCB0aGUgb3RoZXIgY2FsbGJhY2tzCisgICAgICAgIHRvIEpTR2xvYmFsT2JqZWN0IHNv
IHRoZXkgcmV0YWluIHRoZWlyIGV4aXN0aW5nIGJlaGF2aW9yLgorCiAyMDEzLTA4LTI0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCBhZnRlciByMTU0NTYwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzMzIsNiArMjMzMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAg
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NRm9y
bURhdGFDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
IFwKKyAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBcCiAgICAgIGJp
bmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3Mv
anMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQXJyYXlDdXN0b20uY3BwIFwKQEAgLTEzNTMsNiArMTM1NCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBcCisgICAg
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmggXAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oIFwK
ICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFr
ZQkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTUZv
cm1EYXRhQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAor
ICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NTWlt
ZVR5cGVBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3Vz
dG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEzOCw2ICsxNjEzOCwy
MCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAi
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMjA2Nzcs
NiArMjA2OTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNE
aWN0aW9uYXJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xK
U0RPTUJpbmRpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XEpTRE9NR2xvYmFsT2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dDdXN0b20uaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93U2hlbGwuaCIgLz4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE1NDU2NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNDQ4
Miw2ICs0NDgyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpT
RE9NR2xvYmFsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXEpTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIj4KICAgICAgIDxGaWx0ZXI+
YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTExNTc4LDYgKzExNTgx
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFs
T2JqZWN0LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9i
YWxPYmplY3RUYXNrLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNF
cnJvckhhbmRsZXIuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTQ1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MzUs
NiArMTkzNSw4IEBACiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3Bv
aW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZE
NEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEzMjc3QjYwMDM1
Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVi
dWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJC
RUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CisJCTdDMkJE
RDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyQkREM0IxN0M3Rjk4QjAw
MzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi87IH07CisJCTdDMkJERDNFMTdD
N0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAv
KiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3
Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92
ZXJsYXkuY3BwICovOyB9OwogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmggKi87IH07CkBAIC04MzMwLDYgKzgzMzIsOCBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5MDA2
MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyQkREM0Ix
N0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNE
T01HbG9iYWxPYmplY3RUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NR2xvYmFsT2JqZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUy
MkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rv
ck92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yT3Zl
cmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUzNDNGQTE3Qjc0QjYzMDA0
MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODYyMyw2ICsxODYyNyw4IEBACiAJCQkJOTNCNzBENDgw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAogCQkJCUUxQzM2Q0JDMEVCMDgw
NjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIw
NzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8sCisJCQkJN0MyQkREM0IxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8sCisJCQkJN0MyQkRE
M0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovLAogCQkJCUJD
NjkzMjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovLAogCQkJCUJD
NjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCAqLywKIAkJCQlCQ0JG
QjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8sCkBAIC0yMzcx
Nyw2ICsyMzcyMyw3IEBACiAJCQkJNDlFOTExRDAwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9y
bU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0
OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgw
OTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MyQkRE
M0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTE3QjQ5MTYxNkE5QjA5NDAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExRDIwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzcwQTIyOTdCRTAw
NThEN0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI4MCw2ICsyNjI4Nyw3
IEBACiAJCQkJQkMwQjM1ODcxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjlBMzA5QUMxNTYxQzk5QjAwQkJEOEU1IC8qIFJ1bkxvb3BDRi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzBCMzU4MzE0QzRGOTU0MDA1NUUyMkEgLyogUnVuTG9vcE1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUds
b2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdFMkI4MjAw
N0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjAw
RDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgs
NyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5jcHAiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0
YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgorI2luY2x1ZGUg
IkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCiAjaW5jbHVkZSAiSlNET01JbXBsZW1lbnRhdGlv
bkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKKworI2lu
Y2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFs
T2JqZWN0Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IGNyZWF0ZShKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVU
YXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRy
PFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSlNHbG9iYWxPYmplY3RDYWxsYmFjayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0
YXNrQ29udGV4dCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2soKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNhbGwoKQorICAgIHsKKyAgICAgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJl
ZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7CisKKyAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKworICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbV9nbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgLy8gV2Ugd2lsbCBmYWlsIHRvIGdldCB0aGUgY29udGV4dCBp
ZiB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCisgICAgICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7
CisgICAgICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOwor
ICAgICAgICAgICAgbV9mdW5jdGlvblB0cihleGVjLCBtX3Rhc2tDb250ZXh0LmdldCgpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Z1bmN0aW9uUHRyKGV4ZWMsIG1fdGFza0NvbnRl
eHQuZ2V0KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbE9iamVjdENhbGxiYWNr
KEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
OjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBh
c3NSZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQorICAgICAgICA6IEFjdGl2ZURPTUNh
bGxiYWNrKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICAs
IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KQorICAgICAg
ICAsIG1fZnVuY3Rpb25QdHIoZnVuY3Rpb25QdHIpCisgICAgICAgICwgbV90YXNrQ29udGV4dCh0
YXNrQ29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgU3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0
PiBtX2dsb2JhbE9iamVjdDsKKyAgICBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNr
VG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIG1fZnVuY3Rpb25QdHI7CisgICAgUmVmUHRy
PFRhc2tDb250ZXh0PiBtX3Rhc2tDb250ZXh0OworfTsKKworSlNHbG9iYWxPYmplY3RUYXNrOjpK
U0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0
ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCisgICAg
OiBtX2NhbGxiYWNrKEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpCit7Cit9CisKK0pTR2xvYmFsT2JqZWN0VGFzazo6
fkpTR2xvYmFsT2JqZWN0VGFzaygpCit7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RUYXNrOjpw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3sKKyAgICBtX2NhbGxiYWNrLT5j
YWxsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNE
T01HbG9iYWxPYmplY3RUYXNrX2gKKyNkZWZpbmUgSlNET01HbG9iYWxPYmplY3RUYXNrX2gKKwor
I2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
Q2FsbGJhY2s7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxKU0ds
b2JhbE9iamVjdFRhc2s+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNr
RnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4gdGFz
a0NvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEpTR2xvYmFsT2Jq
ZWN0VGFzayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0VGFzaygpOworICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgSlNH
bG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVm
UHRyPEpTQzo6VGFza0NvbnRleHQ+KTsKKworICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxi
YWNrPiBtX2NhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gSlNET01HbG9iYWxPYmplY3RUYXNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUwLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wg
c2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IAogCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5k
b3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
RE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93
QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywg
JnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsICZx
dWV1ZVRhc2tUb0V2ZW50TG9vcCB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFz
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2lu
ZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
QEAgLTE2Myw2ICsxNjQsMTIgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRFeHBl
cmltZQogICAgIHJldHVybiBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkKCk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9v
cChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6
UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNz
UmVmUHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKK3sKKyAgICBjb25zdCBKU0RPTVdpbmRv
d0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2UqPihv
YmplY3QpOworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRh
c2soSlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NV2luZG93QmFzZSopdGhpc09iamVj
dCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7Cit9CisKIHZvaWQgSlNET01XaW5kb3dCYXNl
Ojp3aWxsUmVtb3ZlRnJvbVdpbmRvd1NoZWxsKCkKIHsKICAgICBzZXRDdXJyZW50RXZlbnQoMCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAko
cmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0
U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisKKyAgICAgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1Rv
RXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0
Pik7CisgICAgICAgIAogICAgICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogCiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVj
U3RhdGUuaAkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNW
YWx1ZSwgZXhjZXB0aW9uKTsKICAgICB9OwogCi1wcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSlNN
YWluVGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgICAgICA6IG1fcHJl
dmlvdXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCShy
ZXZpc2lvbiAxNTQ1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJK
U1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIApA
QCAtNDYsOCArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8g
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwg
JkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UpIH07CiAKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAm
YWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNl
SW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJs
ZWQsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCB9OworCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCi0gICAgOiBKU0RPTUds
b2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSkpCisgICAgOiBKU0RPTUds
b2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKQogICAgICwgbV9pbXBsKGltcGwpCiB7CiB9CkBAIC02OCw2ICs3MSwzOCBA
QCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtlckdsb2JhbFNjCiAgICAgcmV0dXJuIG1f
aW1wbC5nZXQoKTsKIH0KIAorCitib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjphbGxvd3NB
Y2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20ob2JqZWN0LCBl
eGVjKTsKK30KKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNQcm9maWxp
bmcoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxP
YmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nKG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNHbG9iYWxPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8ob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2hvdWxk
SW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0
dXJuIEpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQob2JqZWN0KTsKK30KKwor
Ym9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxl
ZChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9i
amVjdDo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChvYmplY3QpOworfQorCit2b2lkIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVu
dExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250
ZXh0PiB0YXNrQ29udGV4dCkKK3sKKyAgICBjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4o
b2JqZWN0KTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RU
YXNrKEpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKChKU0RPTUdsb2JhbE9iamVjdCopdGhpc09i
amVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7Cit9CisKIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtl
ckdsb2JhbFNjb3BlKQogewogICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtlckdsb2JhbFNjb3Bl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuaAkocmV2aXNpb24gMTU0NTY2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
ICAgICB9CiAKKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsKKworICAgICAgICBzdGF0aWMgYm9vbCBhbGxv
d3NBY2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSop
OworICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUmljaFNvdXJjZUluZm8o
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0
aWMgYm9vbCBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVl
VGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tD
b250ZXh0Pik7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2Nv
cGU+KTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNTQ1NjYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw4NSBAQAorMjAxMy0wOC0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBQcm9taXNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGFkYXB0ZWQgZnJvbSB0aGUg
TW96aWxsYSBhbmQgQmxpbmsgcHJvamVjdHMuCisKKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
YWxyZWFkeS1mdWxmaWxsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWlu
LXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
ZnVsZmlsbC1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1mdWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29y
a2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0
LWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4t
d29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUt
aW4td29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2
ZS13aXRoLXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhl
bi1mdWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LXdpdGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
UHJvbWlzZS1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2Utc2ltcGxlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1j
YWxsYmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1
bGZpbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13
b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNp
bXBsZS1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1z
aW1wbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxm
aWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1mdWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMt
cmVqZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0
YXRpYy1yZWplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1yZXNvbHZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LXN0YXRpYy1yZXNvbHZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10
aGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4t
aW4td29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LXRoZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxs
YmFja3MtaW4td29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
dGhlbi13aXRob3V0LWNhbGxiYWNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtdGhlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdHlwZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qczogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMu
anM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13
b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJl
amVjdC1pbi13b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Q
cm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9y
ZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1p
bi13b3JrZXJzLmpzOiBBZGRlZC4KKwogMjAxMy0wOC0yNCAgWW9hdiBXZWlzcyAgPHlvYXZAeW9h
di53cz4KIAogICAgICAgICBFbGltaW5hdGUgYSB1c2VsZXNzIGNvbXBhcmlzb24gaW4gc3Jjc2V0
J3MgY2FuZGlkYXRlIHNlbGVjdGlvbiBhbGdvcml0aG0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1
bGZpbGxlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0
IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMg
ImZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxm
aWxsZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1h
bHJlYWR5LWZ1bGZpbGxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2Zv
bycpOworICByZXNvbHZlci5mdWxmaWxsKCdmdWxmaWxsJyk7CisgIHJlc29sdmVyLnJlc29sdmUo
J3Jlc29sdmUnKTsKKyAgcmVzb2x2ZXIucmVqZWN0KCdyZWplY3QnKTsKK30pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygncmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9u
KCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1hbHJlYWR5LXJlamVjdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImZvbyIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlamVjdGVkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9t
aXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1
bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLnJlamVjdCgnZm9vJyk7CisgIHJlc29sdmVy
LmZ1bGZpbGwoJ2Z1bGZpbGwnKTsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICBy
ZXNvbHZlci5yZWplY3QoJ3JlamVjdCcpOworfSkudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZh
aWxlZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0
KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29s
dmVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVy
KSB7CisgIHZhciBhbm90aGVyUmVzb2x2ZXI7CisgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21p
c2UoZnVuY3Rpb24ocikgeyBhbm90aGVyUmVzb2x2ZXIgPSByOyB9KSk7CisgIHJlc29sdmVyLmZ1
bGZpbGwoJ2Z1bGZpbGwnKTsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICByZXNv
bHZlci5yZWplY3QoJ3JlamVjdCcpOworCisgIGFub3RoZXJSZXNvbHZlci5mdWxmaWxsKCdmb28n
KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rl
c3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1BBU1MgdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUK
K1BBU1MgZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHNlY29u
ZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlLmNh
dGNoKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFz
IGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBmaXJzdFByb21pc2UuY2F0Y2goMzcpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50
LgorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQor
UEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFT
UyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyByZXN1bHQgaXMgImJ5ZSIKK1BBU1MgZnVsZmlsbGVk
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13
b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE5IEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13
b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0
cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1
ZQorUEFTUyBbV29ya2VyXSBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVl
CitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS5jYXRjaChudWxsKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1Mg
W1dvcmtlcl0gZmlyc3RQcm9taXNlLmNhdGNoKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0g
dGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2UgaXMgZmFsc2UKK1BBU1MgW1dv
cmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BB
U1MgW1dvcmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJi
eWUiCitQQVNTIFtXb3JrZXJdIGZ1bGZpbGxlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1jYXRjaC1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1jYXRj
aC1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKG5ld1Jlc29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2
ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlz
ZS5jYXRjaChmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJbkZ1bGZpbGxDYWxsYmFj
ayA9IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmly
c3RQcm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBz
ZWNvbmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIHJldHVybiAnYnllJzsKK30pOworCitz
ZWNvbmRQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2J5ZScpOworICB0ZXN0
UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsK
KyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlv
bigpIHsKK30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScp
Oworc2hvdWxkQmVUcnVlKCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91
bGRCZVRydWUoJ3NlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRo
cm93KCdmaXJzdFByb21pc2UuY2F0Y2gobnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNl
LmNhdGNoKDM3KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBh
cmd1bWVudCInKTsKKworcmVzb2x2ZXIucmVqZWN0KCdoZWxsbycpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hh
aW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgUHJv
bWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGZ1bGZpbGxlZAorUEFT
UyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxs
bzIiCitQQVNTIHJlamVjdGVkCitQQVNTIHJlc3VsdCBpcyAiZXJyb3IiCitQQVNTIHJlamVjdGVk
CitQQVNTIHJlc3VsdCBpcyAiZXJyb3IyIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlz
ICJyZWNvdmVyZWQiCitQQVNTIG9wZXJhdGlvbiBpcyAiYXN5bmNocm9ub3VzIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLWNoYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAo
cikge3Jlc29sdmVyID0gcjt9KTsKK3ZhciBvcGVyYXRpb247CisKK3Byb21pc2UudGhlbihmdW5j
dGlvbihyZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAtIGNvbnRpbnVlCisgIHRlc3RQYXNzZWQoJ2Z1
bGZpbGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICByZXR1cm4gJ2hlbGxvMic7Cit9LCBmdW5jdGlv
bigpIHsKKyAgdGVzdEZhaWxlZCgncnJlamVjdGVkJyk7Cit9KS50aGVuKCkgIC8vIHBhc3MgdGhy
b3VnaAorLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7ICAvLyBmdWxmaWxsZWQgLSB0aHJvdyBhbiBl
eGNlcHRpb24KKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvMicpOworICB0
aHJvdyAnZXJyb3InOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7
Cit9KS50aGVuKGZ1bmN0aW9uKCkgeyAgLy8gcmVqZWN0ZWQgLSB0aHJvdyBhbiBleGNlcHRpb24K
KyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVz
dFBhc3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZXJyb3InKTsKKyAgdGhyb3cgJ2Vycm9yMic7Cit9
KS50aGVuKCkgLy8gcGFzcyB0aHJvdWdoCisudGhlbihmdW5jdGlvbigpIHsgIC8vIHJlamVjdGVk
IC0gcmVjb3ZlcgorICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKK30sIGZ1bmN0aW9uKHJlc3Vs
dCkgeworICB0ZXN0UGFzc2VkKCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0
OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdlcnJvcjInKTsKKyAgcmV0dXJu
ICdyZWNvdmVyZWQnOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAt
IHRoZSBsYXN0CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0g
cmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdyZWNvdmVyZWQnKTsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvcGVyYXRpb24nLCAnYXN5bmNocm9ub3VzJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVk
Jyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK29wZXJhdGlvbiA9ICdzeW5jaHJvbm91cyc7
CityZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCisvLyBUaGUgY2hhaW4gc2hvdWxkIGJlIGV4
ZWN1dGVkIGFzeW5jaHJvbm91c2x5Lgorb3BlcmF0aW9uID0gJ2FzeW5jaHJvbm91cyc7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworUEFTUyB0aGlzSW5UaGVuQ2FsbGJhY2sgPT09IHRoaXJkUHJvbWlzZSBpcyB0cnVlCitQ
QVNTIHJlc3VsdCBpcyAiZm9vYmFyIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNl
cHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhj
ZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
ZXhjZXB0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZp
cnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHdpbmRvdy50
aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKK30pOworCit2
YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICB0aHJvdyAnZm9vYmFyJzsKK30pOworCit2YXIgdGhpcmRQcm9taXNlID0gc2Vjb25kUHJvbWlz
ZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBmYWlsKCdVbmV4cGVjdGVkIGludm9jYXRpb24g
b2YgZnVsZmlsbENhbGxiYWNrJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRo
aXNJblRoZW5DYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luVGhlbkNhbGxi
YWNrID09PSB0aGlyZFByb21pc2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZm9vYmFyJyk7CisgIGZpbmlzaEpTVGVzdCgp
OworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNyBAQAor
UHJvbWlzZXMgLSBBZGFwdGVkIGZyb20gaHR0cDovL2R4ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNl
bnRyYWwvc291cmNlL2RvbS9wcm9taXNlL3Rlc3RzL3Rlc3RfcHJvbWlzZS5odG1sLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitUZXN0IFByb21pc2UgcmVzb2x2ZS4KK1BBU1Mg
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21p
c2UgcmVqZWN0LgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMg
NDIKKworVGVzdCBQcm9taXNlIHJlamVjdC4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2Fs
bGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSBnYy4KK1BBU1MgVGhlbiAtIHByb21p
c2UgaXMgc3RpbGwgYWxpdmUKKworVGVzdCBQcm9taXNlIGFzeW5jLgorR2xvYmFsIHNob3VsZCBi
ZSBmb28KK1BBU1MgZm9vIGlzIGZvbworR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28KK1BBU1Mg
Zm9vIGlzIGZvbworR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28gKDIpCitQQVNTIGZvbyBpcyBm
b28KK0dsb2JhbCBzaG91bGQgYmUgYmFyCitQQVNTIGJhciBpcyBiYXIKKworVGVzdCBQcm9taXNl
IGRvdWJsZSB0aGVuLgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQy
IGlzIDQyCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgMSBpcyAxCitQ
QVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIHRoZW4gLyBleGNlcHRpb24uCitQQVNTIFRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgQ2F0Y2ggaGFuZGxlciAoZS5nLiB0aGUg
cmVqZWN0IGhhbmRsZXIpIGNhbGxlZC4KKworVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNhdGNoIC8g
dGhlbi4KK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0Mgor
UEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCitQQVNTIFRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDQgaXMgNDQKKworVGVzdCBQcm9taXNl
IC0gcmVqZWN0IC8gdGhlbiAvIGNhdGNoIC8gdGhlbi4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJl
ZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxs
ZWQKK1BBU1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFT
UyA0NCBpcyA0NAorCitUZXN0IFByb21pc2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVu
ICgyKS4KK1BBU1MgQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDMgaXMgNDMKKworVGVzdCBQcm9taXNl
IC0gcmVqZWN0IC8gdGhlbiAvIGNhdGNoIGV4Y2VwdGlvbiAvIHRoZW4uCitQQVNTIFRoZW4ucmVq
ZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBDYXRjaCBoYXMgYmVlbiBj
YWxsZWQKK1BBU1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAor
UEFTUyA0NCBpcyA0NAorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJl
c29sdmUpLgorTWFueSBzdGVwcy4uLiBzaG91bGQgcmV0dXJuIDIKK1BBU1MgMiBpcyAyCisKK1Rl
c3QgUHJvbWlzZSAtIHRoZW4gLyBjYXRjaCBvcmRlcmluZyAocmVqZWN0KS4KK01hbnkgc3RlcHMu
Li4gc2hvdWxkIHJldHVybiAyCitQQVNTIDIgaXMgMgorCitUZXN0IFByb21pc2UgLSBuZXN0ZWQg
cHJvbWlzZQorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJlc29s
dmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIG5lc3Rl
ZC1uZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BBU1Mg
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MyBpcyA0MworCitUZXN0IFByb21p
c2UgLSB3cm9uZyBuZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0
ZWQKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitU
ZXN0IFByb21pc2UgLSBwcm9taXNlIGxvb3AuCitQQVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1
dGVkCitQQVNTIE5lc3RlZC1uZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJl
c29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIFBy
b21pc2UucmVqZWN0KCkuCitQQVNTIFRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0
MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSBQcm9taXNlLnJlc29sdmUoKS4KK1BBU1MgVGhlbi5y
ZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSBQ
cm9taXNlLnJlc29sdmUoKSB3aXRoICBuZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21p
c2UgaXMgZXhlY3V0ZWQKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0
MiBpcyA0MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBQ
cm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcHJvbWlzZVN0YXRl
IGlzICJwZW5kaW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIHByb21p
c2VTdGF0ZSBpcyAiZnVsZmlsbGVkIgorUEFTUyBwcm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13
b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTMgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwt
aW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQ
QVNTIFtXb3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgW1dvcmtlcl0gcHJv
bWlzZVN0YXRlIGlzICJmdWxmaWxsZWQiCitQQVNTIFtXb3JrZXJdIHByb21pc2VSZXN1bHQgaXMg
ImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1p
bi13b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtZnVsZmlsbC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dv
cmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMu
anMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtZnVsZmlsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWZ1bGZpbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2
YXIgcmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVz
b2x2ZXIgPSByOyB9KTsKK3ZhciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlz
ZVJlc3VsdCA9IHVuZGVmaW5lZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAg
cHJvbWlzZVN0YXRlID0gJ2Z1bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9
LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJv
bWlzZVJlc3VsdCA9IHJlc3VsdDsKK30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21p
c2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcHJvbWlz
ZS50aGVuKGZ1bmN0aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0
ZScsICdmdWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0
JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RG
YWlsZWQoJ3Byb21pc2UgaXMgcmVqZWN0ZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWluaXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1pbml0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1pbml0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBw
cm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHByb21pc2UuY29uc3RydWN0
b3IgaXMgUHJvbWlzZQorUEFTUyB0aGlzSW5Jbml0IGlzIHByb21pc2UKK1BBU1MgcmVzb2x2ZXIg
aW5zdGFuY2VvZiBQcm9taXNlUmVzb2x2ZXIgaXMgdHJ1ZQorUEFTUyByZXNvbHZlci5jb25zdHJ1
Y3RvciBpcyBQcm9taXNlUmVzb2x2ZXIKK1BBU1MgbmV3IFByb21pc2UoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIG5ldyBQ
cm9taXNlKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBw
cm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsgfSkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHJlc3VsdC5tZXNzYWdlIGlzICJmb28iCitQ
QVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vy
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorW1dvcmtlcl0g
VGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdv
cmtlcjogcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJd
IHByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcHJvbWlz
ZS5jb25zdHJ1Y3RvciBpcyBQcm9taXNlCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgaXMgcHJv
bWlzZQorUEFTUyBbV29ya2VyXSByZXNvbHZlciBpbnN0YW5jZW9mIFByb21pc2VSZXNvbHZlciBp
cyB0cnVlCitQQVNTIFtXb3JrZXJdIHJlc29sdmVyLmNvbnN0cnVjdG9yIGlzIFByb21pc2VSZXNv
bHZlcgorUEFTUyBbV29ya2VyXSBuZXcgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gbmV3IFBy
b21pc2UoMzcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFtX
b3JrZXJdIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigpIHsgdGhyb3cgRXJyb3IoImZv
byIpOyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgW1dvcmtlcl0gcmVzdWx0Lm1l
c3NhZ2UgaXMgImZvbyIKK1BBU1MgW1dvcmtlcl0gZnVsZmlsbGVkCitQQVNTIFtXb3JrZXJdIHJl
c3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29y
a2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0
LWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1pbml0LWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29y
a2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcycp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtaW5pdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1p
bml0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5p
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciB0aGlzSW5Jbml0
OwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7
CisgIHRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7Cit9KTsKKworc2hvdWxkQmVU
cnVlKCdwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmUoJ3Byb21pc2UuY29u
c3RydWN0b3InLCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJbkluaXQnLCAncHJvbWlzZScp
Oworc2hvdWxkQmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFByb21pc2VSZXNvbHZlcicpOwor
c2hvdWxkQmUoJ3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21pc2VSZXNvbHZlcicpOworCitz
aG91bGRUaHJvdygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFz
dCBvbmUgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoMzcpJywgJyJUeXBl
RXJyb3I6IFR5cGUgZXJyb3IiJyk7CisKK3Nob3VsZE5vdFRocm93KCdwcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsgfSknKTsKK3Byb21pc2UudGhl
bih1bmRlZmluZWQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0
OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdC5tZXNzYWdlJywgJ2ZvbycpOworfSk7
CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwo
ImhlbGxvIik7CisgIHRocm93IEVycm9yKCJmb28iKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcp
OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0
OworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1yZWplY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMiBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1MgcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgInBlbmRp
bmciCitQQVNTIHByb21pc2VTdGF0ZSBpcyAicmVqZWN0ZWQiCitQQVNTIHByb21pc2VSZXN1bHQg
aXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vy
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXJlamVjdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21p
c2UtcmVqZWN0LWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0YXRlIGlzICJw
ZW5kaW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIFtX
b3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicmVqZWN0ZWQiCitQQVNTIFtXb3JrZXJdIHByb21pc2VS
ZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4t
d29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZWplY3QtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29y
a2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlamVjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlamVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyBy
ZXNvbHZlciA9IHI7IH0pOwordmFyIHByb21pc2VTdGF0ZSA9ICdwZW5kaW5nJzsKK3ZhciBwcm9t
aXNlUmVzdWx0ID0gdW5kZWZpbmVkOworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICBwcm9taXNlU3RhdGUgPSAnZnVsZmlsbGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsK
K30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAncmVqZWN0ZWQnOworICBw
cm9taXNlUmVzdWx0ID0gcmVzdWx0OworfSk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJv
bWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcmVzb2x2ZXIucmVqZWN0KCdoZWxsbycpOworCitz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Byb21p
c2UudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncHJvbWlzZSBpcyBmdWxmaWxsZWQu
Jyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3JlamVjdGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLWNoYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgcmVzdWx0
IGlzICJieWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFp
bi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29s
dmUtY2hhaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVz
b2x2ZXIxLCByZXNvbHZlcjIsIHJlc29sdmVyMzsKK3ZhciByZXNvbHZlcjQsIHJlc29sdmVyNSwg
cmVzb2x2ZXI2OwordmFyIHByb21pc2UxID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNv
bHZlcjEgPSByOyB9KTsKK3ZhciBwcm9taXNlMiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsg
cmVzb2x2ZXIyID0gcjsgfSk7Cit2YXIgcHJvbWlzZTMgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
KSB7IHJlc29sdmVyMyA9IHI7IH0pOwordmFyIHByb21pc2U0ID0gbmV3IFByb21pc2UoZnVuY3Rp
b24ocikgeyByZXNvbHZlcjQgPSByOyB9KTsKK3ZhciBwcm9taXNlNSA9IG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHIpIHsgcmVzb2x2ZXI1ID0gcjsgfSk7Cit2YXIgcHJvbWlzZTYgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyKSB7IHJlc29sdmVyNiA9IHI7IH0pOworCityZXNvbHZlcjMucmVzb2x2ZShw
cm9taXNlMik7CityZXNvbHZlcjIucmVzb2x2ZShwcm9taXNlMSk7CityZXNvbHZlcjYucmVzb2x2
ZShwcm9taXNlNSk7CityZXNvbHZlcjUucmVzb2x2ZShwcm9taXNlNCk7CisKK3Byb21pc2UzLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7Cit9LCBmdW5jdGlvbigpIHsKKyAg
dGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKK30pOworCitwcm9taXNlNi50aGVuKGZ1bmN0aW9uKCkg
eworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdyZXN1bHQnLCAnYnllJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3Jl
c29sdmVyMS5yZXNvbHZlKCdoZWxsbycpOworcmVzb2x2ZXI0LnJlamVjdCgnYnllJyk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
UEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFT
UyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorW1dvcmtlcl0gVGVzdCBQcm9t
aXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVz
b3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJ
bkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJd
IHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUt
aW4td29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUt
aW4td29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRo
LXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitUaGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJlamVjdGVkIG5v
dy4KK1BBU1MgcmVqZWN0ZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2Vw
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Cit2YXIgY2FsbGJhY2s7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmVyKSB7CisgIHJlc29sdmVyLnJlc29sdmUoe3RoZW46IGZ1bmN0aW9uKGZ1bGZpbGxD
YWxsYmFjaywgcmVqZWN0Q2FsbGJhY2spIHsKKyAgICB0aHJvdyAnaGVsbG8nOworICB9fSwgdHJ1
ZSk7Cit9KTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdmdWxm
aWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVz
dFBhc3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdAorICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgYWxyZWFkeSByZWplY3RlZCBub3cuJyk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNv
bHZlLXdpdGgtdGhlbi1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13
aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MyBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
dmFsdWUudGhlbiBpcyBjYWxsZWQuCitQQVNTIHRoaXNWYWx1ZSBpcyB2YWx1ZQorVGhlIHByb21p
c2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMg
ImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1m
dWxmaWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBjYWxsYmFjazsKK3ZhciB2YWx1ZSA9IHsKKyAg
dGhlbjogZnVuY3Rpb24oZnVsZmlsbENhbGxiYWNrLCByZWplY3RDYWxsYmFjaykgeworICAgIHRl
c3RQYXNzZWQoJ3ZhbHVlLnRoZW4gaXMgY2FsbGVkLicpOworICAgIHdpbmRvdy50aGlzVmFsdWUg
PSB0aGlzOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUnLCAndmFsdWUnKTsKKyAgICBjYWxsYmFj
ayA9IGZ1bGZpbGxDYWxsYmFjazsKKyAgfQorfTsKK2ZpbmlzaEpTVGVzdCgpOwordmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIucmVzb2x2ZSh2YWx1ZSk7IH0pOworCitw
cm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcp
OworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jl
c3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0
ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1Zygn
VGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuJyk7CisKK2NhbGxiYWNrKCdoZWxsbycp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNv
bHZlLXdpdGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIHZhbHVlLnRoZW4gaXMgY2FsbGVkLgorUEFTUyB0aGlzVmFsdWUgaXMgdmFsdWUKK1RoZSBw
cm9taXNlIGlzIG5vdCByZWplY3RlZCBub3cuCitQQVNTIHJlamVjdGVkCitQQVNTIHJlc3VsdCBp
cyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVu
LXJlamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIGNhbGxiYWNrOwordmFyIHZhbHVlID0geworICB0
aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKSB7CisgICAgdGVz
dFBhc3NlZCgndmFsdWUudGhlbiBpcyBjYWxsZWQuJyk7CisgICAgd2luZG93LnRoaXNWYWx1ZSA9
IHRoaXM7CisgICAgc2hvdWxkQmUoJ3RoaXNWYWx1ZScsICd2YWx1ZScpOworICAgIGNhbGxiYWNr
ID0gcmVqZWN0Q2FsbGJhY2s7CisgIH0KK307Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHIpIHsgci5yZXNvbHZlKHZhbHVlKTsgfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgp
OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ3JlamVjdGVkJyk7CisgIHdp
bmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0Jywg
J2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBp
cyBub3QgcmVqZWN0ZWQgbm93LicpOworCitjYWxsYmFjaygnaGVsbG8nKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4n
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZmlyc3RQcm9taXNlID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgnaGVs
bG8nKTsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0
aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAg
c2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsK
KyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1
bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgZmFp
bCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1z
aW1wbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3Qg
UHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRoaXNJbkluaXQg
PT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0g
c2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1m
dWxmaWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rlc3Qg
UHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyAi
aGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lk
ZS1jYWxsYmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwt
aW5zaWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkg
QEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJl
c3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxm
aWxsLWluc2lkZS1jYWxsYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUt
Y2FsbGJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZnV0
dXJlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2ZXIuZnVsZmls
bCgnaGVsbG8nKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQg
PSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4n
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZnV0dXJlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICByZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworICB9LCAwKTsKK30pLnRoZW4oZnVuY3Rpb24o
cmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBs
ZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitbV29ya2VyXSBUZXN0IFByb21p
c2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNv
dXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSB0aGlzSW5J
bml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxs
Q2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXN1bHQg
aXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUt
aW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXNpbXBsZS1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dv
cmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5q
cycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2Utc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXNpbXBsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXNpbXBsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbign
VGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBy
ZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jl
c29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdS
ZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsK
KyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2Un
KTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdy
ZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVUcnVl
KCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVs
bG8nKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgUHJvbWlzZS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyB1bmRlZmluZWQK
K1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3Rh
dGljLWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2Utc3RhdGljLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CityZXN1bHQgPSB1bmRlZmluZWQ7CisKK1Byb21pc2UuZnVsZmlsbCgnaGVsbG8nKS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsK
K30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworc2hvdWxkQmUoJ3Jlc3VsdCcsICd1bmRlZmluZWQnKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1yZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkCitQQVNTIHJlc3VsdCBpcyAi
aGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1y
ZWplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
UHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworcmVzdWx0ID0gdW5k
ZWZpbmVkOworCitQcm9taXNlLnJlamVjdCgnaGVsbG8nKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKK3No
b3VsZEJlKCdyZXN1bHQnLCAndW5kZWZpbmVkJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNv
bHZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1MgcmVzdWx0IGlzIHVuZGVmaW5lZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Jlc3VsdCA9IHVuZGVmaW5lZDsKKwordmFy
IHJlc29sdmVyOwordmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUobmV3IFByb21pc2UoZnVu
Y3Rpb24gKHIpIHsgcmVzb2x2ZXIgPSByO30gKSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKwor
cmVzb2x2ZXIucmVzb2x2ZSgnaGVsbG8nKTsKK3Nob3VsZEJlKCdyZXN1bHQnLCAndW5kZWZpbmVk
Jyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS10aGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtdGhlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtdGhlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNyBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1MgdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNl
IGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHNlY29uZFByb21pc2UgaW5zdGFuY2Vv
ZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlLnRoZW4obnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQu
CitQQVNTIGZpcnN0UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgc2Vjb25kIGFyZ3VtZW50LgorUEFT
UyBmaXJzdFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0
ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxs
YmFjayA9PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFj
ayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
dGhlbi1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
IEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanMK
K1BBU1MgW1dvcmtlcl0gdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHNlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dv
cmtlcl0gZmlyc3RQcm9taXNlLnRoZW4obnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
RXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIGZp
cnN0UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgc2Vjb25kIGFyZ3VtZW50LgorUEFTUyBbV29ya2Vy
XSBmaXJzdFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0
ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1
bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJdIHRo
aXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3Jr
ZXJdIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4t
aW4td29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vy
cy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRo
ZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13
aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3Jr
ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9t
aXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSBy
ZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhv
dXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNh
bGxiYWNrcy1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtl
ciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tz
LWluLXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0
aG91dC1jYWxsYmFja3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitu
ZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIuZnVsZmlsbCgnaGVsbG8nKTsgfSkKKyAgLnRoZW4o
KQorICAudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgICAgZmlu
aXNoSlNUZXN0KCk7CisgIH0pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS10aGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKwordmFyIHJlc29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVu
Y3Rpb24obmV3UmVzb2x2ZXIpIHsKKyAgd2luZG93LnRoaXNJbkluaXQgPSB0aGlzOworICByZXNv
bHZlciA9IG5ld1Jlc29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9t
aXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy50aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPSB0aGlzOworICBzaG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZp
cnN0UHJvbWlzZScpOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0g
c2Vjb25kUHJvbWlzZScpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwor
CitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworc2hvdWxkQmVU
cnVlKCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZVRydWUoJ3Nl
Y29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93KCdmaXJzdFBy
b21pc2UudGhlbihudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBm
aXJzdCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbih1bmRlZmlu
ZWQsIG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIHNlY29uZCBh
cmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbigzNyknLCAnIlR5cGVF
cnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Jlc29s
dmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACitQcm9taXNlcyAtIFRlc3QgYmFzaWMgdHlw
ZXMgLyBleGNlcHRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQcm9t
aXNlcworCithUHJvbWlzZSA9IG5ldyBQcm9taXNlKC4uLikKK1BBU1MgYVByb21pc2UgaXMgYW4g
aW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBTdHJpbmcoYVByb21pc2UpIGlzICdbb2JqZWN0IFBy
b21pc2VdJworUEFTUyBhUHJvbWlzZS50aGVuIGlzIGRlZmluZWQuCitQQVNTIGFQcm9taXNlLnRo
ZW4gaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgYVByb21pc2UudGhlbi5sZW5ndGgg
aXMgMgorUEFTUyBhUHJvbWlzZS5jYXRjaCBpcyBkZWZpbmVkLgorUEFTUyBhUHJvbWlzZS5jYXRj
aCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBhUHJvbWlzZS5jYXRjaC5sZW5ndGgg
aXMgMQorCitQcm9taXNlIGNvbnN0cnVjdG9yCisKK1BBU1MgbmV3IFByb21pc2UoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNT
IG5ldyBQcm9taXNlKDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQ
QVNTIG5ldyBQcm9taXNlKCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIG5ldyBQcm9taXNlKFtdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgorUEFTUyBuZXcgUHJvbWlzZSh7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IFByb21pc2UobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IFByb21pc2UodW5kZWZpbmVkKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlcikgeyByZXNvbHZlci5yZXNvbHZlKDEpOyB9KSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEZ1bmN0aW9u
IGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdQcm9taXNlKCknKS4KKworUHJvbWlzZSBz
dGF0aWNzCisKK1BBU1MgUHJvbWlzZS5mdWxmaWxsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBQcm9taXNlLmZ1bGZpbGwo
MSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFByb21pc2UucmVzb2x2ZSgpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BB
U1MgUHJvbWlzZS5yZXNvbHZlKDEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBQcm9t
aXNlLnJlamVjdCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0
IG9uZSBhcmd1bWVudC4KK1BBU1MgUHJvbWlzZS5yZWplY3QoMSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIFByb21pc2UuZnVsZmlsbCgxKSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNl
CitQQVNTIFByb21pc2UucmVzb2x2ZSgxKSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlCitQQVNT
IFByb21pc2UucmVqZWN0KDEpIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKKworUHJvbWlzZVJl
c29sdmVyCisKK2FSZXNvbHZlciBpcyBmcm9tIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGFSZXNvbHZl
cikgeyAuLi4gfSkKK1BBU1MgYVJlc29sdmVyIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2VSZXNv
bHZlcgorUEFTUyBTdHJpbmcoYVJlc29sdmVyKSBpcyAnW29iamVjdCBQcm9taXNlUmVzb2x2ZXJd
JworUEFTUyBhUmVzb2x2ZXIuZnVsZmlsbCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFT
UyBhUmVzb2x2ZXIuZnVsZmlsbC5sZW5ndGggaXMgMQorUEFTUyBhUmVzb2x2ZXIucmVzb2x2ZSBp
cyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBhUmVzb2x2ZXIucmVzb2x2ZS5sZW5ndGgg
aXMgMQorUEFTUyBhUmVzb2x2ZXIucmVqZWN0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQ
QVNTIGFSZXNvbHZlci5yZWplY3QubGVuZ3RoIGlzIDEKK1BBU1MgcmVzb2x2ZXJGdWxmaWxsKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2YgdGhlbiBtdXN0IGJlIGEgUHJv
bWlzZVJlc29sdmVyLgorUEFTUyByZXNvbHZlclJlc29sdmUoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBSZWNlaXZlciBvZiB0aGVuIG11c3QgYmUgYSBQcm9taXNlUmVzb2x2ZXIuCitQQVNT
IHJlc29sdmVyUmVqZWN0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2Yg
dGhlbiBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyLgorCitQcm9taXNlUmVzb2x2ZXIgY29uc3Ry
dWN0b3IKKworUEFTUyBuZXcgUHJvbWlzZVJlc29sdmVyKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogRnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBQcm9t
aXNlUmVzb2x2ZXIoKScpLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCJQcm9taXNlcyAtIFRlc3QgYmFzaWMgdHlwZXMgLyBleGNlcHRpb25zLiIpOwor
CisvLyB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKworLy8gUHJvbWlzZQorZGVidWco
IiIpOworZGVidWcoIlByb21pc2VzIik7CitkZWJ1ZygiIik7CisKKy8vIFByb21pc2VzIHNob3Vs
ZCBiZSBvZiB0eXBlIFByb21pc2UuCisKK3ZhciBhUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmVyKSB7IHJlc29sdmVyLnJlc29sdmUoMSk7IH0pOworCitkZWJ1ZygiYVByb21p
c2UgPSBuZXcgUHJvbWlzZSguLi4pIikKK3Nob3VsZEJlVHlwZSgiYVByb21pc2UiLCAiUHJvbWlz
ZSIpOworc2hvdWxkQmUoIlN0cmluZyhhUHJvbWlzZSkiLCAiJ1tvYmplY3QgUHJvbWlzZV0nIik7
CisKK3Nob3VsZEJlRGVmaW5lZCgiYVByb21pc2UudGhlbiIpOworc2hvdWxkQmVUeXBlKCJhUHJv
bWlzZS50aGVuIiwgIkZ1bmN0aW9uIik7CitzaG91bGRCZSgiYVByb21pc2UudGhlbi5sZW5ndGgi
LCAiMiIpOworc2hvdWxkQmVEZWZpbmVkKCJhUHJvbWlzZS5jYXRjaCIpOworc2hvdWxkQmVUeXBl
KCJhUHJvbWlzZS5jYXRjaCIsICJGdW5jdGlvbiIpOworc2hvdWxkQmUoImFQcm9taXNlLmNhdGNo
Lmxlbmd0aCIsICIxIik7CisKKworLy8gUHJvbWlzZSBjb25zdHJ1Y3RvcgorZGVidWcoIiIpOwor
ZGVidWcoIlByb21pc2UgY29uc3RydWN0b3IiKTsKK2RlYnVnKCIiKTsKKworLy8gTmVlZCBhdCBs
ZWFzdCBvbmUgcGFyYW1ldGVyLgorc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKCkiKTsKKworLy8g
UGFyYW1ldGVyIG11c3QgYmUgYSBmdW5jdGlvbi4KK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSgx
KSIpOworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKCdoZWxsbycpIik7CitzaG91bGRUaHJvdygi
bmV3IFByb21pc2UoW10pIik7CitzaG91bGRUaHJvdygibmV3IFByb21pc2Uoe30pIik7CitzaG91
bGRUaHJvdygibmV3IFByb21pc2UobnVsbCkiKTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSh1
bmRlZmluZWQpIik7CitzaG91bGROb3RUaHJvdygibmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZXIpIHsgcmVzb2x2ZXIucmVzb2x2ZSgxKTsgfSkiKTsKKworLy8gQ2FuJ3QgYmUgY2FsbGVkIGFz
IGEgZnVuY3Rpb24KK3Nob3VsZFRocm93KCJQcm9taXNlKCkiKTsKKworCisvLyBQcm9taXNlIHN0
YXRpY3MKK2RlYnVnKCIiKTsKK2RlYnVnKCJQcm9taXNlIHN0YXRpY3MiKTsKK2RlYnVnKCIiKTsK
KworCisvLyBOZWVkIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIuCitzaG91bGRUaHJvdygiUHJvbWlz
ZS5mdWxmaWxsKCkiKTsKK3Nob3VsZE5vdFRocm93KCJQcm9taXNlLmZ1bGZpbGwoMSkiKTsKK3No
b3VsZFRocm93KCJQcm9taXNlLnJlc29sdmUoKSIpOworc2hvdWxkTm90VGhyb3coIlByb21pc2Uu
cmVzb2x2ZSgxKSIpOworc2hvdWxkVGhyb3coIlByb21pc2UucmVqZWN0KCkiKTsKK3Nob3VsZE5v
dFRocm93KCJQcm9taXNlLnJlamVjdCgxKSIpOworCisvLyBTaG91bGQgcmV0dXJuIFByb21pc2Ug
b2JqZWN0cy4KK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5mdWxmaWxsKDEpIiwgIlByb21pc2UiKTsK
K3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5yZXNvbHZlKDEpIiwgIlByb21pc2UiKTsKK3Nob3VsZEJl
VHlwZSgiUHJvbWlzZS5yZWplY3QoMSkiLCAiUHJvbWlzZSIpOworCisKKworLy8gUHJvbWlzZVJl
c29sdmVyCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVyIik7CitkZWJ1ZygiIik7
CisKK3ZhciBhUmVzb2x2ZXI7Cit2YXIgcmVzb2x2ZXJGdWxmaWxsOwordmFyIHJlc29sdmVyUmVz
b2x2ZTsKK3ZhciByZXNvbHZlclJlamVjdDsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocikgewor
ICAgIGFSZXNvbHZlciA9IHI7CisKKyAgICAvLyBUaGUgcmVzb2x2ZXIgc2hvdWxkIGJlIG9mIHR5
cGUgUHJvbWlzZVJlc29sdmVyLgorICAgIGRlYnVnKCJhUmVzb2x2ZXIgaXMgZnJvbSBuZXcgUHJv
bWlzZShmdW5jdGlvbihhUmVzb2x2ZXIpIHsgLi4uIH0pIikKKyAgICBzaG91bGRCZVR5cGUoImFS
ZXNvbHZlciIsICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBzaG91bGRCZSgiU3RyaW5nKGFSZXNv
bHZlcikiLCAiJ1tvYmplY3QgUHJvbWlzZVJlc29sdmVyXSciKTsKKyAgICBzaG91bGRCZVR5cGUo
ImFSZXNvbHZlci5mdWxmaWxsIiwgIkZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmUoImFSZXNvbHZl
ci5mdWxmaWxsLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmVUeXBlKCJhUmVzb2x2ZXIucmVz
b2x2ZSIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVzb2x2ZS5sZW5n
dGgiLCAiMSIpOworICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVyLnJlamVjdCIsICJGdW5jdGlv
biIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVqZWN0Lmxlbmd0aCIsICIxIik7CisKKyAg
ICAvLyBSZXNvbHZlcnMgZnVuY3Rpb25zIG11c3QgYmUgY2FsbGVkIG9uIHRoZSByZXNvbHZlci4K
KyAgICByZXNvbHZlckZ1bGZpbGwgPSBhUmVzb2x2ZXIuZnVsZmlsbDsKKyAgICBzaG91bGRUaHJv
dygicmVzb2x2ZXJGdWxmaWxsKCkiKTsKKyAgICByZXNvbHZlclJlc29sdmUgPSBhUmVzb2x2ZXIu
cmVzb2x2ZTsKKyAgICBzaG91bGRUaHJvdygicmVzb2x2ZXJSZXNvbHZlKCkiKTsKKyAgICByZXNv
bHZlclJlamVjdCA9IGFSZXNvbHZlci5yZWplY3Q7CisgICAgc2hvdWxkVGhyb3coInJlc29sdmVy
UmVqZWN0KCkiKTsKK30pOworCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVyIGNv
bnN0cnVjdG9yIik7CitkZWJ1ZygiIik7CisKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZVJlc29s
dmVyKCkiKTsKKworZGVidWcoIiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KKworLy8gQWRhcHRlZCBmcm9tIGh0dHA6Ly9keHIubW96aWxsYS5vcmcvbW96aWxs
YS1jZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90ZXN0X3Byb21pc2UuaHRtbCB3aGlj
aCBzdGF0ZWQ6CisvLyAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKy8vICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8KKworZGVzY3JpcHRpb24oIlByb21pc2VzIC0gQWRhcHRlZCBmcm9tIGh0dHA6Ly9k
eHIubW96aWxsYS5vcmcvbW96aWxsYS1jZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90
ZXN0X3Byb21pc2UuaHRtbC4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitm
dW5jdGlvbiB0ZXN0KF9hLCBfYikKK3sKKyAgICBpZiAoaXNSZXN1bHRDb3JyZWN0KF9hLCBfYikp
CisgICAgICAgIHRlc3RQYXNzZWQoc3RyaW5naWZ5KF9hKSArICIgaXMgIiArIHN0cmluZ2lmeShf
YikpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChzdHJpbmdpZnkoX2EpICsgIiBzaG91
bGQgYmUgIiArIHN0cmluZ2lmeShfYikpOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVzb2x2ZSgp
IHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSByZXNvbHZlLiIpCisgIAorICB2YXIgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZSg0
Mik7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVz
b2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0
KCk7CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBi
ZWVuIGNhbGxlZCIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21p
c2VSZWplY3QoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgcmVqZWN0LiIpOworICAKKyAgdmFy
IHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVy
LnJlamVjdCg0Mik7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQo
IlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1
bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxs
ZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitm
dW5jdGlvbiBwcm9taXNlRXhjZXB0aW9uKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIHJlamVj
dC4iKTsKKworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7
CisgICAgdGhyb3cgNDI7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWls
ZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7CisgIH0s
IGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQor
CitmdW5jdGlvbiBwcm9taXNlR0MoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgZ2MuIik7Cisg
IAorICB2YXIgcmVzb2x2ZXI7CisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24o
cikgeworICAgIHJlc29sdmVyID0gcjsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdFBhc3NlZCgiVGhlbiAtIHByb21pc2UgaXMgc3RpbGwgYWxpdmUiKTsKKyAgICBydW5UZXN0
KCk7CisgIH0pOworCisgIHByb21pc2UgPSBudWxsOworCisgIGdjKCk7CisKKyAgcmVzb2x2ZXIu
cmVzb2x2ZSg0Mik7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VBc3luYygpIHsKKyAgZGVidWcoIlRl
c3QgUHJvbWlzZSBhc3luYy4iKTsKKworICB2YXIgZ2xvYmFsID0gImZvbyI7CisgIHZhciBmID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIGJlIGZv
byIpOworICAgIHRlc3QoZ2xvYmFsLCAnZm9vJyk7CisKKyAgICByLnJlc29sdmUoNDIpOworCisg
ICAgZGVidWcoIkdsb2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vIik7CisgICAgdGVzdChnbG9iYWws
ICdmb28nKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBkZWJ1ZygiR2xv
YmFsIHNob3VsZCBiZSBiYXIiKTsKKyAgICAgIHRlc3QoZ2xvYmFsLCAnYmFyJyk7CisgICAgICBy
dW5UZXN0KCk7CisgICAgfSwgMCk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZ2xvYmFs
ID0gImJhciI7CisgIH0pOworCisgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIHN0aWxsIGJlIGZvbyAo
MikiKTsKKyAgdGVzdChnbG9iYWwsICdmb28nKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZURvdWJs
ZVRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgZG91YmxlIHRoZW4uIik7CisKKyAgdmFy
IHN0ZXBzID0gMDsKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
cikgeworICAgIHJlc29sdmVyLnJlc29sdmUoNDIpOworICB9KTsKKworICBwcm9taXNlLnRoZW4o
ZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBzdGVwcysrOworICB9LCBmdW5jdGlv
bih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7
CisgIH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3Nl
ZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qoc3RlcHMsIDEpOwor
ICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkg
eworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsK
K30KKworZnVuY3Rpb24gcHJvbWlzZVRoZW5FeGNlcHRpb24oKSB7CisgIGRlYnVnKCJUZXN0IFBy
b21pc2UgLSB0aGVuIC8gZXhjZXB0aW9uLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKDQyKTsKKyAgfSk7
CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVu
LnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGhyb3cgImJvb2giOworICB9KS5jYXRj
aChmdW5jdGlvbihlKSB7CisgICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFuZGxlciAoZS5nLiB0aGUg
cmVqZWN0IGhhbmRsZXIpIGNhbGxlZC4iKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitm
dW5jdGlvbiBwcm9taXNlVGhlbkNhdGNoVGhlbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAt
IHRoZW4gLyBjYXRjaCAvIHRoZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUoNDIpOworICB9KTsKKwor
ICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQ
YXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQy
KTsKKyAgICByZXR1cm4gd2hhdCArIDE7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0
RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7CisKKyAgcHJvbWlz
ZTIudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhh
cyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAgIHJldHVybiB3aGF0ICsg
MTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhh
cyBiZWVuIGNhbGxlZCIpOworICB9KS5jYXRjaChmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVk
KCJDYXRjaCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7Cisg
ICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qo
d2hhdCwgNDQpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRl
c3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVu
Y3Rpb24gcHJvbWlzZVJlamVjdFRoZW5DYXRjaFRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21p
c2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuLiIpOworCisgIHZhciBwcm9taXNlID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZWplY3QoNDIp
OworICB9KTsKKworICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkg
eworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSwg
ZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNh
bGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJldHVybiB3aGF0ICsgMTsKKyAgfSk7
CisKKyAgcHJvbWlzZTIudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhl
bi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAgIHJl
dHVybiB3aGF0ICsgMTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWls
ZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsK
KyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVz
dCh3aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlz
ZVJlamVjdFRoZW5DYXRjaFRoZW4yKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcmVqZWN0
IC8gdGhlbiAvIGNhdGNoIC8gdGhlbiAoMikuIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7CisgIH0p
OworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhl
bi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJl
dHVybiB3aGF0ICsgMTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNz
ZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJl
dHVybiB3aGF0ICsgMTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3Nl
ZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOwor
ICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RUaGVuQ2F0
Y2hFeGNlcHRpb25UaGVuKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcmVqZWN0IC8gdGhl
biAvIGNhdGNoIGV4Y2VwdGlvbiAvIHRoZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7CisgIH0p
OworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhl
bi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0
LCA0Mik7CisgICAgdGhyb3cod2hhdCArIDEpOworICB9KS5jYXRjaChmdW5jdGlvbih3aGF0KSB7
CisgICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0
LCA0Myk7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsK
KyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVz
dCh3aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlz
ZVRoZW5DYXRjaE9yZGVyaW5nUmVzb2x2ZSgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHRo
ZW4gLyBjYXRjaCBvcmRlcmluZyAocmVzb2x2ZSkuIik7CisKKyAgdmFyIGdsb2JhbCA9IDA7Cisg
IHZhciBmID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHIucmVzb2x2ZSg0Mik7Cisg
IH0pOworCisgIGYudGhlbihmdW5jdGlvbigpIHsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLmNhdGNoKGZ1bmN0aW9uKCkgeworICAgICAg
Z2xvYmFsKys7CisgICAgfSk7CisgICAgZi50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgZ2xvYmFs
Kys7CisgICAgfSk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIGRlYnVnKCJN
YW55IHN0ZXBzLi4uIHNob3VsZCByZXR1cm4gMiIpOworICAgICAgdGVzdChnbG9iYWwsIDIpOwor
ICAgICAgcnVuVGVzdCgpOworICAgIH0sIDApOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlz
ZVRoZW5DYXRjaE9yZGVyaW5nUmVqZWN0KCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gdGhl
biAvIGNhdGNoIG9yZGVyaW5nIChyZWplY3QpLiIpOworCisgIHZhciBnbG9iYWwgPSAwOworICB2
YXIgZiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICByLnJlamVjdCg0Mik7CisgIH0p
CisKKyAgZi50aGVuKGZ1bmN0aW9uKCkge30sIGZ1bmN0aW9uKCkgeworICAgIGYudGhlbihmdW5j
dGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYuY2F0Y2goZnVuY3Rpb24o
KSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7fSwg
ZnVuY3Rpb24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgZGVidWcoIk1hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAyIik7
CisgICAgICB0ZXN0KGdsb2JhbCwgMik7CisgICAgICBydW5UZXN0KCk7CisgICAgfSwgMCk7Cisg
IH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVidWcoIlRl
c3QgUHJvbWlzZSAtIG5lc3RlZCBwcm9taXNlIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rpb24o
cmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIp
IHsKKyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAg
ICByLnJlc29sdmUoNDIpOworICAgIH0pKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgewor
ICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0
KHZhbHVlLCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlz
ZU5lc3RlZE5lc3RlZFByb21pc2UoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBuZXN0ZWQt
bmVzdGVkIHByb21pc2UuIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsK
KyAgICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRl
c3RQYXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUo
NDIpOworICAgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeyByZXR1cm4gd2hhdCArIDE7IH0pKTsK
KyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2
ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Myk7CisgICAgcnVuVGVzdCgp
OworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVdyb25nTmVzdGVkUHJvbWlzZSgpIHsKKyAg
ZGVidWcoIlRlc3QgUHJvbWlzZSAtIHdyb25nIG5lc3RlZCBwcm9taXNlLiIpOworCisgIG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZShuZXcgUHJv
bWlzZShmdW5jdGlvbihyKSB7CisgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQgcHJvbWlzZSBpcyBl
eGVjdXRlZCIpOworICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICB9KSk7CisgICAgcmVzb2x2ZXIu
cmVqZWN0KDQyKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNzZWQo
IlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Mik7Cisg
ICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RGYWlsZWQoIlRo
ZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlz
ZUxvb3AoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBwcm9taXNlIGxvb3AuIik7CisKKyAg
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9taXNl
IGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikg
eworICAgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQtbmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQi
KTsKKyAgICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICAgIH0pKTsKKyAgICB9KSk7CisgIH0pLnRo
ZW4oZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJl
ZW4gY2FsbGVkIik7CisgICAgdGVzdCh2YWx1ZSwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwg
ZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RDb25zdHJ1Y3Rvcigp
IHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIFByb21pc2UucmVqZWN0KCkuIik7CisKKyAgdmFy
IHByb21pc2UgPSBQcm9taXNlLnJlamVjdCg0MikudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5jdGlv
bih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7
CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rp
b24gcHJvbWlzZVJlc29sdmVDb25zdHJ1Y3RvcigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAt
IFByb21pc2UucmVzb2x2ZSgpLiIpOworCisgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KDQyKS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUg
aGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOwor
ICB9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3JO
ZXN0ZWRQcm9taXNlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNvbHZl
KCkgd2l0aCAgbmVzdGVkIHByb21pc2UuIik7CisKKyAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBw
cm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgci5yZXNvbHZlKDQyKTsKKyAgfSwgZnVuY3Rpb24o
KSB7CisgICAgdGVzdEZhaWxlZCgiU2Vjb25kIGFyZ3VtZW50IHRvIFByb21pc2UgY29uc3RydWN0
b3IgY2FsbGVkLiIpOworICB9KSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3Nl
ZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOwor
ICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5y
ZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOworfQorCit2YXIgdGVzdHMgPSBbCisgICAg
cHJvbWlzZVJlc29sdmUsCisgICAgcHJvbWlzZVJlamVjdCwKKyAgICBwcm9taXNlRXhjZXB0aW9u
LAorICAgIHByb21pc2VHQywKKyAgICBwcm9taXNlQXN5bmMsCisgICAgcHJvbWlzZURvdWJsZVRo
ZW4sCisgICAgcHJvbWlzZVRoZW5FeGNlcHRpb24sCisgICAgcHJvbWlzZVRoZW5DYXRjaFRoZW4s
CisgICAgcHJvbWlzZVJlamVjdFRoZW5DYXRjaFRoZW4sCisgICAgcHJvbWlzZVJlamVjdFRoZW5D
YXRjaFRoZW4yLAorICAgIHByb21pc2VSZWplY3RUaGVuQ2F0Y2hFeGNlcHRpb25UaGVuLAorICAg
IHByb21pc2VUaGVuQ2F0Y2hPcmRlcmluZ1Jlc29sdmUsCisgICAgcHJvbWlzZVRoZW5DYXRjaE9y
ZGVyaW5nUmVqZWN0LAorICAgIHByb21pc2VOZXN0ZWRQcm9taXNlLAorICAgIHByb21pc2VOZXN0
ZWROZXN0ZWRQcm9taXNlLAorICAgIHByb21pc2VXcm9uZ05lc3RlZFByb21pc2UsCisgICAgcHJv
bWlzZUxvb3AsCisgICAgcHJvbWlzZVJlamVjdENvbnN0cnVjdG9yLCAKKyAgICBwcm9taXNlUmVz
b2x2ZUNvbnN0cnVjdG9yLAorICAgIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3JOZXN0ZWRQcm9t
aXNlLAorXTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICBkZWJ1ZygiIik7Cisg
IHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgdGVzdCgpOworfQorCitydW5UZXN0KCk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29y
a2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACitpbXBvcnRTY3JpcHRzKCcu
L2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3Zh
ciBnbG9iYWwgPSB0aGlzOworCitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgcmVz
b2x2ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNv
bHZlcikgeworICBnbG9iYWwudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVz
b2x2ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UuY2F0Y2goZnVu
Y3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlzOwor
ICBzaG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZScp
OworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlz
ZScpOworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3Jlc3VsdCcsICdoZWxsbycpOworICByZXR1cm4gJ2J5ZSc7Cit9KTsKKworc2Vjb25kUHJvbWlz
ZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdieWUnKTsKKyAgdGVzdFBhc3NlZCgnZnVs
ZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWls
ZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7Cit9KTsK
Kworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3Nob3VsZEJl
VHJ1ZSgnZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdz
ZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygnZmlyc3RQ
cm9taXNlLmNhdGNoKG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFz
IGZpcnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS5jYXRjaCgzNykn
LCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7
CisKK3Jlc29sdmVyLnJlamVjdCgnaGVsbG8nKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNl
LWZ1bGZpbGwtaW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitp
bXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFBy
b21pc2UuJyk7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7Cit2YXIg
cHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9KTsKK3Zh
ciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVuZGVmaW5l
ZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ2Z1
bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5jdGlvbihyZXN1bHQp
IHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3Vs
dDsKK30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5n
Jyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkg
eworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdmdWxmaWxsZWQnKTsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3Byb21pc2UgaXMg
cmVqZWN0ZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2Ut
aW5pdC1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKK2ltcG9y
dFNjcmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CitnbG9i
YWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7
CisKK3ZhciB0aGlzSW5Jbml0OwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyKSB7CisgIHRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7
Cit9KTsKKworc2hvdWxkQmVUcnVlKCdwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hv
dWxkQmUoJ3Byb21pc2UuY29uc3RydWN0b3InLCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJ
bkluaXQnLCAncHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFBy
b21pc2VSZXNvbHZlcicpOworc2hvdWxkQmUoJ3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21p
c2VSZXNvbHZlcicpOworCitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9y
OiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFBy
b21pc2UoMzcpJywgJyJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiJyk7CisKK3Nob3VsZE5vdFRocm93
KCdwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsg
fSknKTsKK3Byb21pc2UudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9i
YWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdC5tZXNz
YWdlJywgJ2ZvbycpOworfSk7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7Cisg
IHJlc29sdmVyLmZ1bGZpbGwoImhlbGxvIik7CisgIHRocm93IEVycm9yKCJmb28iKTsKK30pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RQ
YXNzZWQoJ2Z1bGZpbGxlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdo
ZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9i
YWwucmVzdWx0ID0gcmVzdWx0OworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1By
b21pc2UtcmVqZWN0LWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtl
cnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0U2NyaXB0cygnLi9q
cy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0g
J3BlbmRpbmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9t
aXNlUmVzdWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0
ZSA9ICdyZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5y
ZWplY3QoJ2hlbGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywg
J3BlbmRpbmcnKTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdw
cm9taXNlIGlzIGZ1bGZpbGxlZC4nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncmVqZWN0ZWQnKTsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Q
cm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13
b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydFNjcmlwdHMo
Jy4vanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwor
dmFyIGdsb2JhbCA9IHRoaXM7CitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBm
aXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICByZXNvbHZl
ci5yZXNvbHZlKCdoZWxsbycpOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9t
aXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPSB0aGlzOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vj
b25kUHJvbWlzZScpOworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKCkgeworICBmYWlsKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vy
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNl
LXNpbXBsZS1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI2IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworCitnbG9i
YWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50aGlz
SW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vj
b25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9i
YWwudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5G
dWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJl
c3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFBy
b21pc2UnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJz
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAoraW1w
b3J0U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9t
aXNlLicpOworCit2YXIgZ2xvYmFsID0gdGhpczsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCit2YXIgcmVzb2x2ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihuZXdSZXNvbHZlcikgeworICBnbG9iYWwudGhpc0luSW5pdCA9IHRoaXM7CisgIHJl
c29sdmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFBy
b21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnRoaXNJbkZ1bGZpbGxDYWxs
YmFjayA9IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0g
Zmlyc3RQcm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09
PSBzZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7
CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91bGRC
ZVRydWUoJ2ZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgn
c2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2ZpcnN0
UHJvbWlzZS50aGVuKG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFz
IGZpcnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKHVuZGVm
aW5lZCwgbnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgc2Vjb25k
IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKDM3KScsICciVHlw
ZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKKworcmVz
b2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
c291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0
aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3Jr
ZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydFNjcmlwdHMoJy4v
anMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFy
IGdsb2JhbCA9IHRoaXM7CisKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbmV3IFBy
b21pc2UoZnVuY3Rpb24ocikgeyByLmZ1bGZpbGwoJ2hlbGxvJyk7IH0pCisgIC50aGVuKCkKKyAg
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICAgIGZpbmlzaEpT
VGVzdCgpOworICB9KTsKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209599</attachid>
            <date>2013-08-25 13:07:31 -0700</date>
            <delta_ts>2013-08-25 13:26:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120260-20130825130736.patch</filename>
            <type>text/plain</type>
            <size>237354</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcyAt
IGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNlcy4KKyAgICAgICAgLSBEZXNwaXRl
IFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwgdGhlIGltcGxlbWVudGF0aW9uIGlz
IGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIFByb21p
c2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBpbiBFQ01BU2NyaXB0LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgVXBkYXRlIGpzYydzIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHRvIHN0
dWIgb3V0IHRoZSBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suIFRoaXMgbWVhbidz
CisgICAgICAgIHlvdSBjYW4ndCBxdWl0ZSB1c2UgUHJvbWlzZXMgd2l0aCB3aXRoIHRoZSBjb21t
YW5kIGxpbmUgdG9vbCB5ZXQuCisgICAgCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
Lmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlND
OjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBzdXBwb3J0
aW5nIGNvZGUgZm9yIHRoZSBuZXcgc3RhdGljIGxvb2t1cCB0YWJsZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgIEFkZCAzIG5ldyBpZGVudGlmaWVy
cywgIlByb21pc2UiLCAiUHJvbWlzZVJlc29sdmVyIiwgYW5kICJ0aGVuIi4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVy
J3MgY29uc3RydWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpUYXNrQ29udGV4dDo6flRhc2tDb250ZXh0KToK
KyAgICAgICAgQWRkIGEgbmV3IGNhbGxiYWNrIHRvIHRoZSBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSB0byBwb3N0IGEgdGFzayBvbiB0aGUgZW1iZWRkZXIncyBydW5sb29wLgorCisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnByb21pc2VSZXNvbHZlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojpwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSk6CisgICAgICAgIEFkZCBz
dXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVyJ3MgY29uc3RydWN0b3Jz
IGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1By
b21pc2VDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFByb21p
c2UgaW1wbGVtZW50YXRpb24uCisKIDIwMTMtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b0pTVmFsdWUgc2hv
dWxkIGFsbW9zdCBjZXJ0YWlubHkgbm90IHVzZSBqc051bWJlcigpIHNpbmNlIHRoYXQgYXR0ZW1w
dHMgaW50IGNvbnZlcnNpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2UuY3BwCisgICAgcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKKyAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAg
IHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTUsNiAr
NDIyLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgYWxsIDogXAogICAgIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggXAorICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAg
ICAgTmFtZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDkgQEAgTFVU
X0ZJTEVTICs9IFwKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcCBc
CisgICAgcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTmFt
ZVByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5o
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTWF0aE9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTmFtZVByb3RvdHlw
ZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggXApAQCAtODExLDYgKzgxNCwyMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvbWlzZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcCBcCisg
ICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRp
bWUvSlNTY29wZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE1NDU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNyArMjU5LDcgQEAgcHJvdGVjdGVkOgogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9i
YWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNiArNDY4LDEzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Byb21pc2UuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNQcm9taXNlQ2FsbGJhY2suY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUHJvdG90eXBlLmNwcCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyLmNwcCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPg0KQEAgLTU0Myw2ICs1NTAsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQ
cm90b3R5cGUubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5sdXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExMSW50QXNzZW1ibHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0
LmgiIC8+DQpAQCAtODgwLDYgKzg5MCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09OT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09iamVjdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b21pc2VDYWxsYmFjay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTUHJvbWlzZVByb3RvdHlwZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUmVzb2x2ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b3h5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDU3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNiArNjQ5LDIwIEBACiAJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
ICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggKi87IH07CisJCTdDMTVGNjVEMTdDMTk5Q0Uw
MDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9t
aXNlQ2FsbGJhY2suY3BwICovOyB9OworCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQ
cm9taXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTVGNjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICov
OyB9OworCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMw
MDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwICovOyB9OworCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi87IH07CisJ
CTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFGMTdC
RUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8q
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI4
RTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuY3BwICovOyB9OworCQk3QzNC
QTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0JBMjhGMTdDMDM5NTYwMDcyRERD
OSAvKiBKU1Byb21pc2VSZXNvbHZlci5oICovOyB9OworCQk3QzNCQTI5NjE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MDE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDM0JBMjk3MTdDMDM5
NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MTE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk3QzNCQTI5ODE3
QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQkEyOTIxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJN0MzQkEy
OTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MzE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJN0VGRjAwNjQw
RUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAx
Miw4ICsxMDI2LDYgQEAKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyog
V2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4
QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07Ci0JCUJDMThDNTI2MEUxNkZDQTcwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmx1dC5oICovOyB9OwotCQlCQzE4QzUyQTBFMTZGQ0MyMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDNTI5MEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oICovOyB9OwogCQlC
QzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0
NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9Owog
CQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2Qzkg
LyogQXJndW1lbnRzLmggKi87IH07CkBAIC0xNzc5LDYgKzE3OTEsMjMgQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEUx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJl
c29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0JBMjkwMTdDMDM5NTYwMDcy
RERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5MTE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDM0JBMjkyMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5QTE3QzAzQkUxMDA3
MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVy
ZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VGRjAwNjMwRUMwNUE5
QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTIxLDggKzIxNTAs
NiBAQAogCQlCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYw
IC8qIE1hdGhPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTJCMEUx
NkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTYsNyArMjE4Myw2IEBACiAJCUJDNzk1MjM0MEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJvb2xlYW5Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzc5NTIzNTBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0Nl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDZWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM4MTQ5QUYxMkY4OUY1MzAwN0IyQzMyIC8q
IEhlYWRlckRldGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFk
ZXJEZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjUsMTggKzI4
OTEsMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MzQkEyOUEx
N0MwM0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywK
IAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywK
LQkJCQlCQzgxNDlBRjEyRjg5RjUzMDA3QjJDMzIgLyogSGVhZGVyRGV0ZWN0aW9uLmggKi8sCiAJ
CQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCisJCQkJ
N0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAq
LywKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8sCi0JCQkJ
QkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYwIC8qIE1hdGhPYmplY3QubHV0LmggKi8sCiAJCQkJQkMy
NjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8sCiAJ
CQkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLywKLQkJ
CQlCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCTVENTM3MjdEMEUxQzU1RUMwMDIxRTU0OSAvKiBUcmFjaW5nRHRyYWNlLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMzEwMiw2ICszMTI4LDIwIEBACiAJ
CQkJQkMyMkEzOTkwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmggKi8sCiAJCQkJQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovLAogCQkJCUE3Rjk5MzVEMEZE
NzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi8sCisJCQkJN0MxODRFMTgxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8sCisJCQkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovLAorCQkJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8sCisJCQkJN0MxNUY2NUMxN0MxOTlDRTAwNzk0RDQwIC8qIEpT
UHJvbWlzZUNhbGxiYWNrLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0Eg
LyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJN0MzQkEyOEUxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLywKKwkJCQk3QzNCQTI4RjE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCAqLywKKwkJCQk3QzNCQTI5MDE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJN0Mz
QkEyOTExN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3QzNCQTI5MjE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oICovLAogCQkJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKQEAgLTM3NjcsNiArMzgwNyw3IEBACiAJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zODM0LDYgKzM4NzUsNyBAQAogCQkJCUE3RDlBMjk4MTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZD
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTExLDYgKzM5NTMsNyBAQAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zOTc1LDYgKzQwMTgsNyBAQAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2
RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdD
MDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggaW4gSGVhZGVycyAqLywKQEAgLTQxMzUsNyArNDE3OSw2IEBACiAJCQkJQzIxMTIyRTMx
NUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDMThDNTJBMEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhF
MjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MjAwLDExICs0MjQzLDE0IEBACiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3Rv
dHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMTg0RTFC
MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2
NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFBy
b3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTcx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyRDYwRTE3MDcwODAwMkM3RTgyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCNDExMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjE1LDYgKzQyNjEsNyBA
QAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdCMiAvKiBSZWplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJl
cGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBE
QjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNDEsNyArNDI4
OCw2IEBACiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5n
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzUyNjBFMTZGQ0E3MDBC
MzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
M0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDcyOCw2ICs0Nzc0LDcgQEAKIAkJCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZH
RGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyOTgxRkRDMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk4MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVF
MDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NDc0OSw2ICs0Nzk2LDcgQEAKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQx
NTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZH
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyog
REZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENGMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDc2OCw2ICs0ODE2
LDcgQEAKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlERDIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
M0JBMjk2MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC00Nzk3LDYgKzQ4NDYsNyBAQAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJC
NzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE4NEUxRTE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9t
aXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBB
MjcxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTQ4NTgsNiArNDkwOCw3IEBACiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4
IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDky
Nyw2ICs0OTc4LDcgQEAKIAkJCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRF
MUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDk4MSw2ICs1MDMzLDcgQEAKIAkJ
CQkxNDc0QzMzQzE2QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTg0RTIyMTdCRUUyNDAwMDdDQjYzQSAv
KiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEw
N0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNC
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25z
dHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZt
KCkucmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
Y2FsbEZyYW1lLT52bSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5zdHJpbmdDb25zdHJ1Y3RvclRhYmxlOyB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VQcm90b3R5cGVUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnByb21pc2VQcm90b3R5
cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgp
LnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGU7IH0K
IAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJh
c2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAg
ICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKICAgICBtYWNybyhO
YU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNy
byhQcm9taXNlKSBcCisgICAgbWFjcm8oUHJvbWlzZVJlc29sdmVyKSBcCiAgICAgbWFjcm8oUmFu
Z2VFcnJvcikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVnRXhw
KSBcCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN1
YmFycmF5KSBcCiAgICAgbWFjcm8odGVzdCkgXAorICAgIG1hY3JvKHRoZW4pIFwKICAgICBtYWNy
byh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkgXAogICAgIG1hY3JvKHRvSVNP
U3RyaW5nKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDEzIEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk5LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0Vu
YWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogLyogU291cmNlIGZvciBK
U0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0yOTcsNiAr
MzA0LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBt
X2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9lcnJvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fcHJvbWlz
ZVByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9wcm9taXNlU3Ry
dWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fcHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CisgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhp
cywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb21pc2VDYWxs
YmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVjLT52bSgp
LCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAgICAgLy8gQ29u
c3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzIxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0g
Qm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBudW1iZXJDb25z
dHJ1Y3RvciA9IE51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgTnVtYmVyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogZGF0
ZUNvbnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgRGF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBwcm9t
aXNlQ29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMs
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVn
RXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCkpKTsKIApAQCAtMzI5LDYgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIG1f
ZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CisgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHBy
b21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzQ1LDYg
KzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuU3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5z
dHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24u
Z2V0KCksIERvbnRFbnVtKTsKQEAgLTU2NCw2ICs1ODUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGF0ZVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtNTk0LDcgKzYxNywxMSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlKTsKKwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIAog
I2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiAj
aW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwpAQCAtNTgsNiAr
NTksOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKK2NsYXNzIEpT
UHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xh
c3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I7CkBAIC03MCw3ICs3MywxNCBAQCBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNr
Tm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CiAKIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2
PiBFeGVjU3RhdGVTdGFjazsKLSAgICAKKworY2xhc3MgVGFza0NvbnRleHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxUYXNrQ29udGV4dD4geworcHVibGljOgorICAgIHZpcnR1YWwgflRhc2tDb250ZXh0
KCkKKyAgICB7CisgICAgfQorfTsKKwogc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIGJvb2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9u
UHRyIGFsbG93c0FjY2Vzc0Zyb207CkBAIC04Niw2ICs5NiwxMCBAQCBzdHJ1Y3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRlZiBib29sICgqSmF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZEZ1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIEphdmFT
Y3JpcHRFeHBlcmltZW50c0VuYWJsZWRGdW5jdGlvblB0ciBqYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkOworCisgICAgdHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFj
a0Z1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHR5cGVkZWYgdm9p
ZCAoKlF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiwgUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRh
c2tDb250ZXh0Pik7CisgICAgUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRh
c2tUb0V2ZW50TG9vcDsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMTM0LDYgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAg
ICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gbV9kYXRlUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFy
cmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNQcm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVy
PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsK
IAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7
CkBAIC0xNjcsNyArMTgzLDExIEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cmluZ09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9wcm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVJlc29sdmVyU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZUNhbGxiYWNrU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVm
ZmVyUHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zMTIsNiArMzMyLDgg
QEAgcHVibGljOgogICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGVQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAg
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3Ry
dWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CkBAIC0zNTksNyArMzgxLDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IHByb21pc2VSZXNvbHZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29s
dmVyU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlQ2FsbGJhY2tTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorCiAg
ICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBh
cnJheUJ1ZmZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2VSZXNvbHZlci5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUHJv
bWlzZVRhc2tDb250ZXh0IDogcHVibGljIFRhc2tDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU1Byb21pc2VUYXNrQ29udGV4dD4gY3JlYXRlKFZNJiB2bSwgSlNQcm9t
aXNlKiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU1Byb21p
c2VUYXNrQ29udGV4dCh2bSwgcHJvbWlzZSkpOworICAgIH0KKworICAgIEpTUHJvbWlzZSYgcHJv
bWlzZSgpIGNvbnN0IHsgcmV0dXJuICptX3Byb21pc2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBKU1Byb21pc2VUYXNrQ29udGV4dChWTSYgdm0sIEpTUHJvbWlzZSogcHJvbWlzZSkKKyAgICB7
CisgICAgICAgIG1fcHJvbWlzZS5zZXQodm0sIHByb21pc2UpOworICAgIH0KKworICAgIFN0cm9u
ZzxKU1Byb21pc2U+IG1fcHJvbWlzZTsKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2U6
OnNfaW5mbyA9IHsgIlByb21pc2UiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTUHJvbWlzZSkgfTsKKworSlNQcm9taXNlKiBKU1Byb21pc2U6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4odm0uaGVhcCkpIEpTUHJvbWlzZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBwcm9taXNlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIHByb21pc2U7Cit9CisKK0pTUHJvbWlzZSogSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2
ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTUHJvbWlz
ZSogcHJvbWlzZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4odm0uaGVh
cCkpIEpTUHJvbWlzZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOworICAg
IHByb21pc2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgIEpTUHJvbWlzZVJlc29sdmVyKiBy
ZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cHJv
bWlzZVJlc29sdmVyU3RydWN0dXJlKCksIHByb21pc2UpOworICAgIHByb21pc2UtPnNldFJlc29s
dmVyKHZtLCByZXNvbHZlcik7CisKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworU3RydWN0dXJl
KiBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlOjpKU1Byb21pc2UoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX3N0YXRlKFBlbmRpbmcpCit7Cit9CisKK3ZvaWQgSlNQcm9taXNl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBKU1Byb21pc2U6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTUHJvbWlzZSo+KGNlbGwp
LT5KU1Byb21pc2U6On5KU1Byb21pc2UoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21p
c2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fcmVzb2x2ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Jlc3VsdCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRoaXNPYmplY3Qt
Pm1fZnVsZmlsbENhbGxiYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZnVsZmlsbENhbGxiYWNrc1tpXSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0aGlzT2JqZWN0LT5tX3JlamVjdENhbGxiYWNrcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVqZWN0Q2FsbGJhY2tzW2ldKTsKK30K
Kwordm9pZCBKU1Byb21pc2U6OnNldFJlc29sdmVyKFZNJiB2bSwgSlNQcm9taXNlUmVzb2x2ZXIq
IHJlc29sdmVyKQoreworICAgIG1fcmVzb2x2ZXIuc2V0KHZtLCB0aGlzLCByZXNvbHZlcik7Cit9
CisKK0pTUHJvbWlzZVJlc29sdmVyKiBKU1Byb21pc2U6OnJlc29sdmVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNldFJlc3Vs
dChWTSYgdm0sIEpTVmFsdWUgcmVzdWx0KQoreworICAgIG1fcmVzdWx0LnNldCh2bSwgdGhpcywg
cmVzdWx0KTsKK30KKworSlNWYWx1ZSBKU1Byb21pc2U6OnJlc3VsdCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVzdWx0LmdldCgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0U3RhdGUoSlNQ
cm9taXNlOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBQZW5kaW5nKTsK
KyAgICBtX3N0YXRlID0gc3RhdGU7Cit9CisKK0pTUHJvbWlzZTo6U3RhdGUgSlNQcm9taXNlOjpz
dGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK3ZvaWQgSlNQcm9taXNl
OjphcHBlbmRDYWxsYmFja3MoRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdWxm
aWxsQ2FsbGJhY2ssIEludGVybmFsRnVuY3Rpb24qIHJlamVjdENhbGxiYWNrKQoreworICAgIC8v
IDEuIEFwcGVuZCBmdWxmaWxsQ2FsbGJhY2sgdG8gcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tz
LgorICAgIG1fZnVsZmlsbENhbGxiYWNrcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEludGVybmFsRnVu
Y3Rpb24+KGV4ZWMtPnZtKCksIHRoaXMsIGZ1bGZpbGxDYWxsYmFjaykpOworICAgIAorICAgIC8v
IDIuIEFwcGVuZCByZWplY3RDYWxsYmFjayB0byBwcm9taXNlJyByZWplY3QgY2FsbGJhY2tzLgor
ICAgIG1fcmVqZWN0Q2FsbGJhY2tzLmFwcGVuZChXcml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlv
bj4oZXhlYy0+dm0oKSwgdGhpcywgcmVqZWN0Q2FsbGJhY2spKTsKKworICAgIC8vIDMuIElmIHBy
b21pc2UncyBzdGF0ZSBpcyBmdWxmaWxsZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNzIHByb21p
c2UncyBmdWxmaWxsIGNhbGxiYWNrcyB3aXRoIHByb21pc2UncyByZXN1bHQuCisgICAgaWYgKG1f
c3RhdGUgPT0gRnVsZmlsbGVkKSB7CisgICAgICAgIHF1ZXVlVGFza1RvUHJvY2Vzc0Z1bGZpbGxD
YWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiBw
cm9taXNlJ3Mgc3RhdGUgaXMgcmVqZWN0ZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNzIHByb21p
c2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggcHJvbWlzZSdzIHJlc3VsdC4KKyAgICBpZiAobV9z
dGF0ZSA9PSBSZWplY3RlZCkgeworICAgICAgICBxdWV1ZVRhc2tUb1Byb2Nlc3NSZWplY3RDYWxs
YmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgSlNQcm9taXNl
OjpxdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVU
YXNrVG9FdmVudExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzRnVsZmls
bENhbGxiYWNrc0ZvclRhc2ssIEpTUHJvbWlzZVRhc2tDb250ZXh0OjpjcmVhdGUoZXhlYy0+dm0o
KSwgdGhpcykpOworICAgIGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUjogRXZlbnQg
bG9vcCBub3Qgc3VwcG9ydGVkLiIpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cXVldWVUYXNrVG9Q
cm9jZXNzUmVqZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3Ap
CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVU
YXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzUmVqZWN0Q2FsbGJhY2tzRm9yVGFz
aywgSlNQcm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZShleGVjLT52bSgpLCB0aGlzKSk7CisgICAg
ZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBzdXBwb3J0
ZWQuIik7Cit9CisKK3ZvaWQgSlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNrc0ZvclRh
c2soRXhlY1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7CisgICAgSlNQ
cm9taXNlVGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTUHJv
bWlzZVRhc2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSYgcHJvbWlzZSA9
IHByb21pc2VUYXNrQ29udGV4dC0+cHJvbWlzZSgpOworCisgICAgcHJvbWlzZS5wcm9jZXNzRnVs
ZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLnJlc3VsdCgpKTsKK30KKwordm9p
ZCBKU1Byb21pc2U6OnByb2Nlc3NSZWplY3RDYWxsYmFja3NGb3JUYXNrKEV4ZWNTdGF0ZSogZXhl
YywgVGFza0NvbnRleHQqIHRhc2tDb250ZXh0KQoreworICAgIEpTUHJvbWlzZVRhc2tDb250ZXh0
KiBwcm9taXNlVGFza0NvbnRleHQgPSBzdGF0aWNfY2FzdDxKU1Byb21pc2VUYXNrQ29udGV4dCo+
KHRhc2tDb250ZXh0KTsKKyAgICBKU1Byb21pc2UmIHByb21pc2UgPSBwcm9taXNlVGFza0NvbnRl
eHQtPnByb21pc2UoKTsKKworICAgIHByb21pc2UucHJvY2Vzc1JlamVjdENhbGxiYWNrc1dpdGhW
YWx1ZShleGVjLCBwcm9taXNlLnJlc3VsdCgpKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnByb2Nl
c3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBGdWxmaWxsZWQpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2Z1bGZpbGxDYWxsYmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
SlNWYWx1ZSBjYWxsYmFjayA9IG1fZnVsZmlsbENhbGxiYWNrc1tpXS5nZXQoKTsKKworICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZXhlYywg
Y2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICB9Cisg
ICAgCisgICAgbV9mdWxmaWxsQ2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSlNQcm9taXNl
Ojpwcm9jZXNzUmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBSZWplY3RlZCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcmVqZWN0Q2FsbGJhY2tzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBtX3JlamVjdENhbGxiYWNrc1tpXS5nZXQoKTsKKworICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6
OmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZXhl
YywgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICB9
CisgICAgCisgICAgbV9yZWplY3RDYWxsYmFja3MuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpT
UHJvbWlzZV9oCisjZGVmaW5lIEpTUHJvbWlzZV9oCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJs
ZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXI7
CitjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworY2xhc3MgVGFza0NvbnRleHQ7CisKK2NsYXNzIEpT
UHJvbWlzZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyBKU1By
b21pc2UqIGNyZWF0ZVdpdGhSZXNvbHZlcihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICB2b2lkIHNldFJlc29sdmVyKFZNJiwgSlNQcm9taXNlUmVzb2x2
ZXIqKTsKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIoKSBjb25zdDsKKworICAgIGVu
dW0gU3RhdGUgeworICAgICAgICBQZW5kaW5nLAorICAgICAgICBGdWxmaWxsZWQsCisgICAgICAg
IFJlamVjdGVkLAorICAgIH07CisKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsKKyAgICBTdGF0
ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRSZXN1bHQoVk0mLCBKU1ZhbHVlKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCgpIGNvbnN0OworCisgICAgdm9pZCBhcHBlbmRDYWxsYmFja3MoRXhl
Y1N0YXRlKiwgSW50ZXJuYWxGdW5jdGlvbiogZnVsZmlsbENhbGxiYWNrLCBJbnRlcm5hbEZ1bmN0
aW9uKiByZWplY3RDYWxsYmFjayk7CisKKyAgICB2b2lkIHF1ZXVlVGFza1RvUHJvY2Vzc0Z1bGZp
bGxDYWxsYmFja3MoRXhlY1N0YXRlKik7CisgICAgdm9pZCBxdWV1ZVRhc2tUb1Byb2Nlc3NSZWpl
Y3RDYWxsYmFja3MoRXhlY1N0YXRlKik7CisgICAgdm9pZCBwcm9jZXNzRnVsZmlsbENhbGxiYWNr
c1dpdGhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICB2b2lkIHByb2Nlc3NSZWplY3RD
YWxsYmFja3NXaXRoVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKKworcHJpdmF0ZToKKyAgICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzRm9yVGFzayhFeGVjU3RhdGUq
LCBUYXNrQ29udGV4dCopOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NSZWplY3RDYWxsYmFja3NG
b3JUYXNrKEV4ZWNTdGF0ZSosIFRhc2tDb250ZXh0Kik7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4gbV9yZXNv
bHZlcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZXN1bHQ7CisgICAgVmVjdG9yPFdy
aXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPiA+IG1fZnVsZmlsbENhbGxiYWNrczsKKyAgICBW
ZWN0b3I8V3JpdGVCYXJyaWVyPEludGVybmFsRnVuY3Rpb24+ID4gbV9yZWplY3RDYWxsYmFja3M7
CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNQcm9taXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZlci5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZUNhbGxiYWNrOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNQcm9taXNlQ2FsbGJhY2spIH07CisKK0pTUHJvbWlzZUNhbGxiYWNrKiBKU1Byb21pc2VD
YWxsYmFjazo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciwg
QWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBKU1Byb21pc2VDYWxsYmFjayogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VDYWxsYmFjaz4oKmV4ZWMt
PmhlYXAoKSkpIEpTUHJvbWlzZUNhbGxiYWNrKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhbGdv
cml0aG0pOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZXNvbHZlcik7
CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZUNhbGxi
YWNrOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZUNhbGxiYWNrOjpKU1Byb21pc2VDYWxsYmFj
ayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQWxn
b3JpdGhtIGFsZ29yaXRobSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2FsZ29yaXRobShhbGdvcml0aG0pCit7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlQ2FsbGJhY2s6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNl
UmVzb2x2ZXIqIHJlc29sdmVyKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZt
KCksICJQcm9taXNlQ2FsbGJhY2siKTsKKyAgICBtX3Jlc29sdmVyLnNldChleGVjLT52bSgpLCB0
aGlzLCByZXNvbHZlcik7Cit9CisKK3ZvaWQgSlNQcm9taXNlQ2FsbGJhY2s6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VD
YWxsYmFjayogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VDYWxsYmFjayo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jlc29sdmVyKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VDYWxsYmFjazo6Y2FsbFByb21pc2VDYWxsYmFj
ayhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHByb21pc2VDYWxs
YmFjayA9IGpzQ2FzdDxKU1Byb21pc2VDYWxsYmFjayo+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBK
U1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBwcm9taXNlQ2FsbGJhY2stPm1fcmVzb2x2ZXIu
Z2V0KCk7CisKKyAgICAvLyAxLiBMZXQgdmFsdWUgYmUgdGhlIGZpcnN0IGFyZ3VtZW50IHRoYXQg
aXMgcGFzc2VkLCBhbmQgdW5kZWZpbmVkIG90aGVyd2lzZS4KKyAgICBKU1ZhbHVlIHZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisKKyAgICAvLyAyLiBSdW4gcmVzb2x2ZXIncyBhbGdvcml0aG0g
d2l0aCB2YWx1ZSBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgc2V0LgorICAgIHN3aXRjaCAocHJv
bWlzZUNhbGxiYWNrLT5tX2FsZ29yaXRobSkgeworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6
OkZ1bGZpbGw6CisgICAgICAgIHJlc29sdmVyLT5mdWxmaWxsKGV4ZWMsIHZhbHVlLCBKU1Byb21p
c2VSZXNvbHZlcjo6UmVzb2x2ZVN5bmNocm9ub3VzbHkpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OlJlc29sdmU6CisgICAgICAgIHJlc29sdmVyLT5yZXNv
bHZlKGV4ZWMsIHZhbHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6UmVzb2x2ZVN5bmNocm9ub3VzbHkp
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdDoK
KyAgICAgICAgcmVzb2x2ZXItPnJlamVjdChleGVjLCB2YWx1ZSwgSlNQcm9taXNlUmVzb2x2ZXI6
OlJlc29sdmVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworQ2FsbFR5cGUgSlNQcm9t
aXNlQ2FsbGJhY2s6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sK
KyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUHJvbWlzZUNhbGxiYWNrOworICAg
IHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKKworCisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21p
c2VXcmFwcGVyQ2FsbGJhY2s6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2spIH07CisK
K0pTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyLCBKU1ZhbHVlIGNhbGxi
YWNrKQoreworICAgIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s+KCpleGVjLT5o
ZWFwKCkpKSBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZXNvbHZlciwgY2FsbGJh
Y2spOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VX
cmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlV3JhcHBlckNhbGxiYWNr
OjpKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIs
IEpTVmFsdWUgY2FsbGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0o
KSwgIlByb21pc2VXcmFwcGVyQ2FsbGJhY2siKTsKKyAgICBtX3Jlc29sdmVyLnNldChleGVjLT52
bSgpLCB0aGlzLCByZXNvbHZlcik7CisgICAgbV9jYWxsYmFjay5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgY2FsbGJhY2spOworfQorCit2b2lkIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJv
bWlzZVdyYXBwZXJDYWxsYmFjayogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VXcmFwcGVy
Q2FsbGJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZl
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2spOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Y2Fs
bFByb21pc2VXcmFwcGVyQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlz
ZVdyYXBwZXJDYWxsYmFjayogcHJvbWlzZVdyYXBwZXJDYWxsYmFjayA9IGpzQ2FzdDxKU1Byb21p
c2VXcmFwcGVyQ2FsbGJhY2sqPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBKU1Byb21pc2VSZXNv
bHZlciogcmVzb2x2ZXIgPSBwcm9taXNlV3JhcHBlckNhbGxiYWNrLT5tX3Jlc29sdmVyLmdldCgp
OworICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBwcm9taXNlV3JhcHBlckNhbGxiYWNrLT5tX2NhbGxi
YWNrLmdldCgpOworCisgICAgLy8gMS4gTGV0IGFyZ3VtZW50IGJlIHRoZSBmaXJzdCBhcmd1bWVu
dCB0aGF0IGlzIHBhc3NlZCwgYW5kIHVuZGVmaW5lZCBvdGhlcndpc2UuCisgICAgSlNWYWx1ZSBh
cmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworCisgICAgLy8gMi4gU2V0IGNhbGxiYWNrJ3Mg
Y2FsbGJhY2sgdGhpcyB2YWx1ZSB0byByZXNvbHZlcidzIGFzc29jaWF0ZWQgcHJvbWlzZS4KKyAg
ICAvLyAzLiBMZXQgdmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBpbnZva2luZyBjYWxsYmFjayB3aXRo
IGFyZ3VtZW50IGFzIGFyZ3VtZW50LgorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAg
IEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgY2FsbGJhY2tBcmd1bWVudHM7CisgICAgY2FsbGJhY2tBcmd1bWVudHMuYXBwZW5kKGFy
Z3VtZW50KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGNhbGxiYWNrLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHJlc29sdmVyLT5wcm9taXNlKCksIGNhbGxiYWNrQXJndW1lbnRz
KTsKKworICAgIC8vIDQuIElmIGludm9raW5nIGNhbGxiYWNrIHRocmV3IGFuIGV4Y2VwdGlvbiwg
Y2F0Y2ggaXQgYW5kIHJ1biByZXNvbHZlcidzIHJlamVjdAorICAgIC8vICAgIHdpdGggdGhlIHRo
cm93biBleGNlcHRpb24gYXMgYXJndW1lbnQgYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIHNldC4K
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KworICAgICAgICByZXNvbHZlci0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbiwgSlNQcm9taXNlUmVz
b2x2ZXI6OlJlc29sdmVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBPdGhlcndpc2UsIHJ1biBy
ZXNvbHZlcidzIHJlc29sdmUgd2l0aCB2YWx1ZSBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgc2V0
LgorICAgIHJlc29sdmVyLT5yZXNvbHZlKGV4ZWMsIHZhbHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6
UmVzb2x2ZVN5bmNocm9ub3VzbHkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY2FsbFByb21pc2VXcmFwcGVyQ2FsbGJhY2s7CisgICAgcmV0dXJuIENh
bGxUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJv
bWlzZUNhbGxiYWNrX2gKKyNkZWZpbmUgSlNQcm9taXNlQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNl
UmVzb2x2ZXI7CisKK2NsYXNzIEpTUHJvbWlzZUNhbGxiYWNrIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisg
ICAgZW51bSBBbGdvcml0aG0geworICAgICAgICBGdWxmaWxsLAorICAgICAgICBSZXNvbHZlLAor
ICAgICAgICBSZWplY3QsCisgICAgfTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VDYWxsYmFjayog
Y3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNl
UmVzb2x2ZXIqLCBBbGdvcml0aG0pOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBBbGdvcml0aG0pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
SlNQcm9taXNlUmVzb2x2ZXIqKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OworCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2VD
YWxsYmFjayhFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4g
bV9yZXNvbHZlcjsKKyAgICBBbGdvcml0aG0gbV9hbGdvcml0aG07Cit9OworCitjbGFzcyBKU1By
b21pc2VXcmFwcGVyQ2FsbGJhY2sgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9t
aXNlV3JhcHBlckNhbGxiYWNrKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBKU1Byb21pc2VSZXNvbHZlciosIEpTVmFsdWUgY2FsbGJhY2spOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlV3Jh
cHBlckNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU1Byb21pc2VSZXNvbHZlciosIEpTVmFsdWUgY2FsbGJh
Y2spOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJvbWlzZVdyYXBwZXJDYWxsYmFjayhF
eGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4gbV9yZXNvbHZl
cjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9jYWxsYmFjazsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNQcm9taXNlQ2FsbGJhY2tfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VSZXNv
bHZlci5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQVNTRVJU
X0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlQ29uc3RydWN0b3IpOworCisvLyBzdGF0
aWMgUHJvbWlzZSBmdWxmaWxsKGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSopOwor
Ly8gc3RhdGljIFByb21pc2UgcmVzb2x2ZShhbnkgdmFsdWUpOyAvLyBzYW1lIGFzIGFueSh2YWx1
ZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1Jlc29sdmUoRXhlY1N0YXRlKik7CisvLyBzdGF0aWMgUHJvbWlzZSByZWplY3QoYW55
IHZhbHVlKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNv
bnN0cnVjdG9yRnVuY1JlamVjdChFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSlNQcm9t
aXNlQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSlNQcm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNl
IGZvciBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHByb21pc2VDb25zdHJ1Y3Rv
clRhYmxlCisgIGZ1bGZpbGwgICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxs
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVzb2x2ZSAgICAgICAgIEpTUHJv
bWlzZUNvbnN0cnVjdG9yRnVuY1Jlc29sdmUgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICByZWplY3QgICAgICAgICAgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVqZWN0ICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitKU1Byb21pc2VDb25zdHJ1
Y3RvciogSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VQ
cm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCit7CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb21p
c2VQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBK
U1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDb25zdHJ1Y3Rv
cjo6SlNQcm9taXNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKSAKK3sKK30KKwordm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5
cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2UiKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0o
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFl
eGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7
CisKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CisKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVj
dGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmds
b2JhbE9iamVjdCgpOworICAgIAorICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21p
c2UuCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2
ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsKKworICAgIC8vIDIuIExldCByZXNvbHZlciBi
ZSBwcm9taXNlJ3MgYXNzb2NpYXRlZCByZXNvbHZlci4KKyAgICBKU1Byb21pc2VSZXNvbHZlciog
cmVzb2x2ZXIgPSBwcm9taXNlLT5yZXNvbHZlcigpOworCisgICAgLy8gMy4gU2V0IGluaXQncyBj
YWxsYmFjayB0aGlzIHZhbHVlIHRvIHByb21pc2UuCisgICAgLy8gNC4gSW52b2tlIGluaXQgd2l0
aCByZXNvbHZlciBwYXNzZWQgYXMgcGFyYW1ldGVyLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGluaXRBcmd1bWVudHM7CisgICAgaW5pdEFyZ3VtZW50cy5hcHBlbmQocmVzb2x2ZXIpOworICAg
IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgcHJvbWlzZSwgaW5pdEFy
Z3VtZW50cyk7CisKKyAgICAvLyA1LiBJZiBpbml0IHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2gg
aXQsIGFuZCB0aGVuLCBpZiByZXNvbHZlcidzIHJlc29sdmVkIGZsYWcKKyAgICAvLyAgICBpcyB1
bnNldCwgcnVuIHJlc29sdmVyJ3MgcmVqZWN0IHdpdGggdGhlIHRocm93biBleGNlcHRpb24gYXMg
YXJndW1lbnQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFs
dWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhj
ZXB0aW9uKCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2Up
OworfQorCitDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RQcm9taXNlOworICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikKK3sKKyAgICByZXR1cm4gQ2FsbFR5cGVOb25l
OworfQorCitib29sIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xv
dDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnByb21pc2VDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yRnVuY0Z1bGZpbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhl
Yy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwor
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRl
V2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlzZS0+cmVz
b2x2ZXIoKS0+ZnVsZmlsbChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jlc29sdmUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFy
Z3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJv
bWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAg
cHJvbWlzZS0+cmVzb2x2ZXIoKS0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVjdChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBs
ZWFzdCBvbmUgYXJndW1lbnQiKSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNQcm9taXNlKiBwcm9t
aXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBwcm9taXNlLT5yZXNvbHZlcigpLT5yZWplY3QoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNvbnN0cnVj
dG9yX2gKKyNkZWZpbmUgSlNQcm9taXNlQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUHJvdG90
eXBlOworCitjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAg
IHN0YXRpYyBKU1Byb21pc2VDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50
ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNl
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAg
ICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBKU1Byb21pc2VDb25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDYWxs
YmFjay5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Byb21pc2VQcm90b3R5cGUpOwor
CisvLyBQcm9taXNlIHRoZW4oW1RyZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55
Q2FsbGJhY2sgZnVsZmlsbENhbGxiYWNrLCBbVHJlYXRVbmRlZmluZWRBcz1NaXNzaW5nXSBvcHRp
b25hbCBBbnlDYWxsYmFjayByZWplY3RDYWxsYmFjayk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jVGhlbihFeGVjU3RhdGUqKTsKKy8v
IFByb21pc2UgY2F0Y2goW1RyZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55Q2Fs
bGJhY2sgcmVqZWN0Q2FsbGJhY2spOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNQcm9taXNlUHJvdG90eXBlRnVuY0NhdGNoKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNs
dWRlICJKU1Byb21pc2VQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSlNQcm9taXNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90
eXBlIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlUHJv
dG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHByb21pc2VQ
cm90b3R5cGVUYWJsZQorICB0aGVuICAgICAgICAgSlNQcm9taXNlUHJvdG90eXBlRnVuY1RoZW4g
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBjYXRjaCAgICAgICAgSlNQcm9taXNl
UHJvdG90eXBlRnVuY0NhdGNoICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAor
Ki8KKworSlNQcm9taXNlUHJvdG90eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2VQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90
b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9u
RmluYWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUHJvbWlz
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworfQorCitib29sIEpTUHJv
bWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlUHJv
dG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworc3RhdGljIEludGVy
bmFsRnVuY3Rpb24qIHdyYXBDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY2FsbGJhY2ssIEpTUHJvbWlzZVJlc29sdmVyKiByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgaWYg
KCFjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gSlNQcm9taXNlV3JhcHBl
ckNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21p
c2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIGNhbGxiYWNrKTsKKyAgICBy
ZXR1cm4gSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKCksIHJlc29sdmVyLCBhbGdvcml0aG0p
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1
bmNUaGVuKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Byb21pc2UqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRo
aXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJSZWNlaXZlciBvZiB0aGVuIG11c3QgYmUgYSBQcm9taXNlIikpOworCisgICAg
SlNWYWx1ZSBmdWxmaWxsQ2FsbGJhY2sgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWZ1
bGZpbGxDYWxsYmFjay5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bGZpbGxDYWxsYmFj
aywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCIpKTsK
KyAgICB9CisgICAgCisgICAgSlNWYWx1ZSByZWplY3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIGlmICghcmVqZWN0Q2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShyZWplY3RDYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBzZWNv
bmQgYXJndW1lbnQiKSk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyAxLiBMZXQgcHJvbWlz
ZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6
Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisKKyAgICAvLyAy
LiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0ZWQgcmVzb2x2ZXIuCisgICAgSlNQ
cm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZS0+cmVzb2x2ZXIoKTsKKworICAgIC8v
IDMuIExldCBmdWxmaWxsV3JhcHBlciBiZSBhIHByb21pc2Ugd3JhcHBlciBjYWxsYmFjayBmb3Ig
cmVzb2x2ZXIgYW5kIGZ1bGZpbGxDYWxsYmFjayBpZiBmdWxmaWxsQ2FsbGJhY2sgaXMKKyAgICAv
LyAgICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQg
aXRzIGZ1bGZpbGwgYWxnb3JpdGhtIG90aGVyd2lzZS4KKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBm
dWxmaWxsV3JhcHBlciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3QsIGZ1bGZpbGxD
YWxsYmFjaywgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpGdWxmaWxsKTsKKworICAgIC8v
IDQuIExldCByZWplY3RXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVyIGNhbGxiYWNrIGZvciBy
ZXNvbHZlciBhbmQgcmVqZWN0Q2FsbGJhY2sgaWYgcmVqZWN0Q2FsbGJhY2sgaXMKKyAgICAvLyAg
ICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQgaXRz
IHJlamVjdCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVybmFsRnVuY3Rpb24qIHJlamVj
dFdyYXBwZXIgPSB3cmFwQ2FsbGJhY2soZXhlYywgZ2xvYmFsT2JqZWN0LCByZWplY3RDYWxsYmFj
aywgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZWplY3QpOworCisgICAgLy8gNS4gQXBw
ZW5kIGZ1bGZpbGxXcmFwcGVyIGFuZCByZWplY3RXcmFwcGVyIHRvIHRoZSBjb250ZXh0IG9iamVj
dC4KKyAgICB0aGlzT2JqZWN0LT5hcHBlbmRDYWxsYmFja3MoZXhlYywgZnVsZmlsbFdyYXBwZXIs
IHJlamVjdFdyYXBwZXIpOworCisgICAgLy8gNi4gUmV0dXJuIHByb21pc2UuCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jQ2F0Y2goRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTUHJvbWlzZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlKj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIGNhdGNoIG11
c3QgYmUgYSBQcm9taXNlIikpOworICAgIAorICAgIEpTVmFsdWUgcmVqZWN0Q2FsbGJhY2sgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXJlamVjdENhbGxiYWNrLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEocmVqZWN0Q2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmlu
ZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiKSk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyAx
LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7
CisKKyAgICAvLyAyLiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0ZWQgcmVzb2x2
ZXIuCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZS0+cmVzb2x2ZXIo
KTsKKworICAgIC8vIDMuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBuZXcgcHJvbWlzZSBjYWxs
YmFjayBmb3IgcmVzb2x2ZXIgYW5kIGl0cyBmdWxmaWxsIGFsZ29yaXRobS4KKyAgICBJbnRlcm5h
bEZ1bmN0aW9uKiBmdWxmaWxsV3JhcHBlciA9IEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgp
LCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZpbGwpOworCisgICAgLy8gNC4gTGV0
IHJlamVjdFdyYXBwZXIgYmUgYSBwcm9taXNlIHdyYXBwZXIgY2FsbGJhY2sgZm9yIHJlc29sdmVy
IGFuZCByZWplY3RDYWxsYmFjayBpZiByZWplY3RDYWxsYmFjayBpcworICAgIC8vICAgIG5vdCBv
bWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgcmVqZWN0
IGFsZ29yaXRobSBvdGhlcndpc2UuCisgICAgSW50ZXJuYWxGdW5jdGlvbiogcmVqZWN0V3JhcHBl
ciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3QsIHJlamVjdENhbGxiYWNrLCByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdCk7CisKKyAgICAvLyA1LiBBcHBlbmQgZnVs
ZmlsbFdyYXBwZXIgYW5kIHJlamVjdFdyYXBwZXIgdG8gdGhlIGNvbnRleHQgb2JqZWN0LgorICAg
IHRoaXNPYmplY3QtPmFwcGVuZENhbGxiYWNrcyhleGVjLCBmdWxmaWxsV3JhcHBlciwgcmVqZWN0
V3JhcHBlcik7CisKKyAgICAvLyA2LiBSZXR1cm4gcHJvbWlzZS4KKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNQcm9taXNlUHJvdG90eXBlX2gKKyNkZWZpbmUgSlNQcm9taXNlUHJvdG90eXBlX2gK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1By
b21pc2VQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9taXNlUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlUHJv
dG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZVBy
b3RvdHlwZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
UHJvbWlzZVJlc29sdmVyLmgiCisKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVyOjpzX2lu
Zm8gPSB7ICJQcm9taXNlUmVzb2x2ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTUHJvbWlzZVJlc29sdmVyKSB9OworCitKU1Byb21pc2VSZXNvbHZlciogSlNQ
cm9taXNlUmVzb2x2ZXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1By
b21pc2UqIHByb21pc2UpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZVJlc29sdmVyPih2bS5oZWFwKSkgSlNQcm9t
aXNlUmVzb2x2ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgcHJvbWlzZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBKU1Byb21p
c2VSZXNvbHZlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VSZXNvbHZlcjo6SlNQcm9taXNl
UmVzb2x2ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxP
YmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1faXNSZXNvbHZlZChmYWxzZSkKK3sKK30KKwor
dm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb21pc2Uq
IHByb21pc2UpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKKyAgICBtX3Byb21pc2Uuc2V0KHZtLCB0aGlzLCBwcm9taXNlKTsK
K30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2UpOworfQorCitKU1Byb21pc2UqIEpTUHJvbWlzZVJlc29sdmVy
Ojpwcm9taXNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9taXNlLmdldCgpOworfQorCit2
b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpmdWxmaWxsSWZOb3RSZXNvbHZlZChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2ZWQpIHsKKyAgICAgICAg
bV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgZnVsZmlsbChleGVjLCB2YWx1ZSk7CisgICAg
fQorfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZXNvbHZlSWZOb3RSZXNvbHZlZChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2ZWQpIHsK
KyAgICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzb2x2ZShleGVjLCB2YWx1
ZSk7CisgICAgfQorfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZWplY3RJZk5vdFJlc29s
dmVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIW1faXNSZXNv
bHZlZCkgeworICAgICAgICBtX2lzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICByZWplY3QoZXhl
YywgdmFsdWUpOworICAgIH0KK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZnVsZmlsbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlc29sdmVyTW9kZSBtb2RlKQoreworICAg
IC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFzc29jaWF0ZWQgcHJv
bWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIGZ1bGZpbGxlZC4KKyAgICBt
X3Byb21pc2UtPnNldFN0YXRlKEpTUHJvbWlzZTo6RnVsZmlsbGVkKTsKKworICAgIC8vIDMuIFNl
dCBwcm9taXNlJ3MgcmVzdWx0IHRvIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+c2V0UmVzdWx0KGV4
ZWMtPnZtKCksIHZhbHVlKTsKKworICAgIC8vIDQuIElmIHRoZSBzeW5jaHJvbm91cyBmbGFnIGlz
IHNldCwgcHJvY2VzcyBwcm9taXNlJ3MgZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1ZS4KKyAg
ICBpZiAobW9kZSA9PSBSZXNvbHZlU3luY2hyb25vdXNseSkgeworICAgICAgICBtX3Byb21pc2Ut
PnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSBzeW5jaHJvbm91
cyBmbGFnIGlzIHVuc2V0LCBxdWV1ZSBhIHRhc2sgdG8gcHJvY2VzcyBwcm9taXNlJ3MgZnVsZmls
bCBjYWxsYmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBtX3Byb21pc2UtPnF1ZXVlVGFza1RvUHJvY2Vz
c0Z1bGZpbGxDYWxsYmFja3MoZXhlYyk7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OnJl
c29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBSZXNvbHZlck1vZGUgbW9kZSkK
K3sKKyAgICAvLyAxLiBMZXQgdGhlbiBiZSBudWxsLgorICAgIEpTVmFsdWUgdGhlbiA9IGpzTnVs
bCgpOworICAgIAorICAgIC8vIDIuIElmIHZhbHVlIGlzIGEgSmF2YVNjcmlwdCBPYmplY3QsIHNl
dCB0aGVuIHRvIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgSmF2YVNjcmlwdCBbW0dldF1dIGlu
dGVybmFsCisgICAgLy8gICAgbWV0aG9kIG9mIHZhbHVlIHdpdGggcHJvcGVydHkgbmFtZSB0aGVu
LgorICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRoZW4gPSB2YWx1ZS5nZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRoZW4pOworCisgICAgICAgIC8vIDMuIElmIGNh
bGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0
Y2ggaXQgYW5kIHJ1biByZWplY3Qgd2l0aCB0aGUgdGhyb3duCisgICAgICAgIC8vICAgIGV4Y2Vw
dGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LCBhbmQgdGhlbiB0ZXJtaW5hdGUg
dGhlc2Ugc3RlcHMuCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAg
ICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAg
IGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgICAgIHJlamVjdChleGVjLCBleGNl
cHRpb24sIG1vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gNC4gSWYgSmF2YVNjcmlwdCBJc0NhbGxhYmxlKHRoZW4pIGlzIHRydWUsIHJ1biB0aGVzZSBz
dWJzdGVwcyBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHM6CisgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEo
dGhlbiwgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7
CisgICAgICAgICAgICAvLyA0LjEuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBwcm9taXNlIGNh
bGxiYWNrIGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZXNvbHZlIGFsZ29yaXRobS4K
KyAgICAgICAgICAgIEpTUHJvbWlzZUNhbGxiYWNrKiBmdWxmaWxsQ2FsbGJhY2sgPSBKU1Byb21p
c2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBnbG9iYWxPYmplY3QoKS0+
cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKCksIHRoaXMsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZXNv
bHZlKTsKKworICAgICAgICAgICAgLy8gNC4yLiBMZXQgcmVqZWN0Q2FsbGJhY2sgYmUgYSBwcm9t
aXNlIGNhbGxiYWNrIGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZWplY3QgYWxnb3Jp
dGhtLgorICAgICAgICAgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHJlamVjdENhbGxiYWNrID0gSlNQ
cm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgZ2xvYmFsT2JqZWN0
KCktPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgpLCB0aGlzLCBKU1Byb21pc2VDYWxsYmFjazo6
UmVqZWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gNC4zLiBDYWxsIHRoZSBKYXZh
U2NyaXB0IFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiB0aGVuIHdpdGggdGhpcyB2YWx1ZSB2
YWx1ZSBhbmQgZnVsZmlsbENhbGxiYWNrCisgICAgICAgICAgICAvLyAgICAgIGFuZCByZWplY3RD
YWxsYmFjayBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciB0
aGVuQXJndW1lbnRzOworICAgICAgICAgICAgdGhlbkFyZ3VtZW50cy5hcHBlbmQoZnVsZmlsbENh
bGxiYWNrKTsKKyAgICAgICAgICAgIHRoZW5Bcmd1bWVudHMuYXBwZW5kKHJlamVjdENhbGxiYWNr
KTsKKyAgICAgICAgICAgIGNhbGwoZXhlYywgdGhlbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1
ZSwgdGhlbkFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgIC8vIDQuNCBJZiBjYWxsaW5nIHRoZSBb
W0NhbGxdXSBpbnRlcm5hbCBtZXRob2QgdGhyZXcgYW4gZXhjZXB0aW9uLCBjYXRjaCBpdCBhbmQg
cnVuIGNvbnRleHQgb2JqZWN0J3MKKyAgICAgICAgICAgIC8vICAgICByZWplY3Qgd2l0aCB0aGUg
dGhyb3duIGV4Y2VwdGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LgorICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1
ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBleGVjLT5j
bGVhckV4Y2VwdGlvbigpOworCisgICAgICAgICAgICAgICAgcmVqZWN0KGV4ZWMsIGV4Y2VwdGlv
biwgbW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gNS4gUnVuIGNvbnRleHQg
b2JqZWN0J3MgZnVsZmlsbCB3aXRoIHZhbHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxhZyBpZiBz
ZXQuCisgICAgZnVsZmlsbChleGVjLCB2YWx1ZSwgbW9kZSk7Cit9CisKK3ZvaWQgSlNQcm9taXNl
UmVzb2x2ZXI6OnJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlc29sdmVy
TW9kZSBtb2RlKQoreworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVj
dCdzIGFzc29jaWF0ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRv
IHJlamVjdGVkLgorICAgIG1fcHJvbWlzZS0+c2V0U3RhdGUoSlNQcm9taXNlOjpSZWplY3RlZCk7
CisKKyAgICAvLyAzLiBTZXQgcHJvbWlzZSdzIHJlc3VsdCB0byB2YWx1ZS4KKyAgICBtX3Byb21p
c2UtPnNldFJlc3VsdChleGVjLT52bSgpLCB2YWx1ZSk7CisKKyAgICAvLyA0LiBJZiB0aGUgc3lu
Y2hyb25vdXMgZmxhZyBpcyBzZXQsIHByb2Nlc3MgcHJvbWlzZSdzIHJlamVjdCBjYWxsYmFja3Mg
d2l0aCB2YWx1ZS4KKyAgICBpZiAobW9kZSA9PSBSZXNvbHZlU3luY2hyb25vdXNseSkgeworICAg
ICAgICBtX3Byb21pc2UtPnByb2Nlc3NSZWplY3RDYWxsYmFja3NXaXRoVmFsdWUoZXhlYywgdmFs
dWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIDUuIE90aGVyd2lzZSwg
dGhlIHN5bmNocm9ub3VzIGZsYWcgaXMgdW5zZXQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNzIHBy
b21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggdmFsdWUuCisgICAgbV9wcm9taXNlLT5xdWV1
ZVRhc2tUb1Byb2Nlc3NSZWplY3RDYWxsYmFja3MoZXhlYyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlcl9oCisjZGVmaW5lIEpTUHJvbWlz
ZVJlc29sdmVyX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU1Byb21pc2U7CisKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVJlc29sdmVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBKU1Byb21pc2UqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgSlNQcm9taXNlKiBwcm9taXNlKCkgY29uc3Q7CisKKyAgICB2b2lkIGZ1bGZpbGxJZk5vdFJl
c29sdmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHZvaWQgcmVzb2x2ZUlmTm90UmVzb2x2
ZWQoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgdm9pZCByZWplY3RJZk5vdFJlc29sdmVkKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOworCisgICAgZW51bSBSZXNvbHZlck1vZGUgeworICAgICAgICBS
ZXNvbHZlU3luY2hyb25vdXNseSwKKyAgICAgICAgUmVzb2x2ZUFzeW5jaHJvbm91c2x5LAorICAg
IH07CisKKyAgICB2b2lkIGZ1bGZpbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUmVzb2x2ZXJNb2Rl
ID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsKKyAgICB2b2lkIHJlc29sdmUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUmVzb2x2ZXJNb2RlID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsKKyAgICB2b2lk
IHJlamVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBSZXNvbHZlck1vZGUgPSBSZXNvbHZlQXN5bmNo
cm9ub3VzbHkpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
UHJvbWlzZSopOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZh
dGU6CisgICAgSlNQcm9taXNlUmVzb2x2ZXIoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRl
QmFycmllcjxKU1Byb21pc2U+IG1fcHJvbWlzZTsKKyAgICBib29sIG1faXNSZXNvbHZlZDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNQcm9taXNlUmVzb2x2ZXJfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIKKworI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQVNTRVJU
X0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcik7CisK
K2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcikgfTsKKworSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1
Y3RvciogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQoreworICAgIEpTUHJv
bWlzZVJlc29sdmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpT
UHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9taXNlUHJvdG90eXBlKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9taXNlUmVzb2x2ZXJD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
OjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkgCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZSogcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KTsKK30KKworQ29uc3RydWN0VHlwZSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQoreworICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlTm9uZTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKQoreworICAgIHJldHVybiBDYWxs
VHlwZU5vbmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gK
KyNkZWZpbmUgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTsKKworY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVu
Y3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6Cisg
ICAgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1By
b21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2
ZXJQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZSk7CisKKy8vIHZvaWQgZnVsZmlsbChvcHRpb25hbCBhbnkgdmFsdWUpOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5j
RnVsZmlsbChFeGVjU3RhdGUqKTsKKy8vIHZvaWQgcmVzb2x2ZShvcHRpb25hbCBhbnkgdmFsdWUp
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGVGdW5jUmVzb2x2ZShFeGVjU3RhdGUqKTsKKy8vIHZvaWQgcmVqZWN0KG9wdGlvbmFs
IGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21p
c2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZWplY3QoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1
ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBFeGVjU3RhdGU6
OnByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEpTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUK
KyAgZnVsZmlsbCAgICAgICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY0Z1bGZpbGwg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNvbHZlICAgICAgICAgSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZSAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHJlamVjdCAgICAgICAgICBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNS
ZWplY3QgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkp
KSBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0Owor
fQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpKU1Byb21pc2VSZXNvbHZlclByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5h
bE9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKK30KKworYm9vbCBK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmpl
Y3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUoZXhlYyks
IGpzQ2FzdDxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGVGdW5jRnVsZmlsbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9t
aXNlUmVzb2x2ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZVJlc29sdmVy
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9m
IGZ1bGZpbGwgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsKKworICAgIHRoaXNPYmplY3Qt
PmZ1bGZpbGxJZk5vdFJlc29sdmVkKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY1Jlc29sdmUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Byb21pc2VSZXNvbHZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJSZWNlaXZlciBvZiByZXNvbHZlIG11c3QgYmUgYSBQcm9taXNlUmVzb2x2
ZXIiKSk7CisKKyAgICB0aGlzT2JqZWN0LT5yZXNvbHZlSWZOb3RSZXNvbHZlZChleGVjLCBleGVj
LT5hcmd1bWVudCgwKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZUZ1bmNSZWplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZVJlc29s
dmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2VSZXNvbHZlcio+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBvZiByZWplY3Qg
bXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsKKworICAgIHRoaXNPYmplY3QtPnJlamVjdElm
Tm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZV9oCisjZGVmaW5lIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKKworI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAgIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBAIGV4dGVybiBj
b25zdCBIYXNoVGFibGUgcmVnRXhwVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4
cENvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4cFByb3RvdHlw
ZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOwor
ZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUHJvdG90eXBlVGFibGU7CitleHRlcm4gY29u
c3QgSGFzaFRhYmxlIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIGNvbnN0IEhhc2hU
YWJsZSBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsKIAogLy8gTm90ZTogUGxhdGZvcm0u
aCB3aWxsIGVuZm9yY2UgdGhhdCBFTkFCTEUoQVNTRU1CTEVSKSBpcyB0cnVlIGlmIGVpdGhlcgog
Ly8gRU5BQkxFKEpJVCkgb3IgRU5BQkxFKFlBUlJfSklUKSBvciBib3RoIGFyZSBlbmFibGVkLiBU
aGUgY29kZSBiZWxvdwpAQCAtMTYxLDYgKzE2NCw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxI
YXNoVGFibGU+KEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkpCiAgICAgLCByZWdFeHBQcm90
b3R5cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBQcm90b3R5cGVUYWJsZSkp
CiAgICAgLCBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnN0
cmluZ0NvbnN0cnVjdG9yVGFibGUpKQorICAgICwgcHJvbWlzZVByb3RvdHlwZVRhYmxlKGZhc3RO
ZXc8SGFzaFRhYmxlPihKU0M6OnByb21pc2VQcm90b3R5cGVUYWJsZSkpCisgICAgLCBwcm9taXNl
Q29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlQ29uc3RydWN0
b3JUYWJsZSkpCisgICAgLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZShmYXN0TmV3PEhh
c2hUYWJsZT4oSlNDOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZSkpCiAgICAgLCBpZGVu
dGlmaWVyVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuY3VycmVudElk
ZW50aWZpZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmllclRhYmxlKCkpCiAgICAgLCBwcm9wZXJ0
eU5hbWVzKG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKSkKICAgICAsIGVtcHR5TGlzdChuZXcg
TWFya2VkQXJndW1lbnRCdWZmZXIpCkBAIC0zMTAsNiArMzE2LDkgQEAgVk06On5WTSgpCiAgICAg
cmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICByZWdFeHBQcm90b3R5
cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlLT5kZWxl
dGVUYWJsZSgpOworICAgIHByb21pc2VQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAg
ICBwcm9taXNlQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKKyAgICBwcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKIAogICAgIGZhc3REZWxldGUoY29u
c3RfY2FzdDxIYXNoVGFibGUqPihhcnJheUNvbnN0cnVjdG9yVGFibGUpKTsKICAgICBmYXN0RGVs
ZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oYXJyYXlQcm90b3R5cGVUYWJsZSkpOwpAQCAtMzI4
LDYgKzMzNyw5IEBAIFZNOjp+Vk0oKQogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFi
bGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0
PEhhc2hUYWJsZSo+KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25z
dF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKTsKKyAgICBmYXN0RGVs
ZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZVByb3RvdHlwZVRhYmxlKSk7CisgICAg
ZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VDb25zdHJ1Y3RvclRhYmxl
KSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VSZXNvbHZl
clByb3RvdHlwZVRhYmxlKSk7CiAKICAgICBkZWxldGUgZW1wdHlMaXN0OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1
Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFByb3RvdHlwZVRhYmxl
OwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGU7CisgICAg
ICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvbWlzZVByb3RvdHlwZVRhYmxlOworICAgICAgICBjb25z
dCBIYXNoVGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBjb25zdCBIYXNo
VGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOwogICAgICAgICAKICAgICAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDg4IEBACisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiBQcm9taXNlcyAtIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNlcy4KKyAg
ICAgICAgLSBEZXNwaXRlIFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwgdGhlIGlt
cGxlbWVudGF0aW9uIGlzIGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVwYXJhdGlv
biBmb3IgdGhlIFByb21pc2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBpbiBFQ01BU2NyaXB0
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
anMvUHJvbWlzZS1jaGFpbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtZXhj
ZXB0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdv
cmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtaW5pdC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9q
cy9Qcm9taXNlLXJlamVjdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVz
b2x2ZS1jaGFpbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1p
bi13b3JrZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdp
dGgtdGhlbi1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9t
aXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc2lt
cGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1zaW1wbGUtZnVsZmlsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21p
c2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZp
bGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vy
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxi
YWNrcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtdGhlbi5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9qcy9Qcm9taXNlLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHA6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdFRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFs
T2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0dsb2JhbE9iamVj
dENhbGxiYWNrOjp+SlNHbG9iYWxPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpK
U0dsb2JhbE9iamVjdENhbGxiYWNrOjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFs
T2JqZWN0Q2FsbGJhY2s6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpKU0dsb2JhbE9iamVjdFRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjp+SlNHbG9iYWxPYmplY3RUYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKToKKyAgICAgICAgQWRkIGEgbmV3IHRhc2sg
dHlwZSB0byBiZSB1c2VkIHdpdGggdGhlIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlJ3MgbmV3IFF1
ZXVlVGFza1RvRXZlbnRMb29wIGNhbGxiYWNrLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cXVl
dWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oOgorICAgICAgICBJbXBsZW1lbnQgdGhlIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIGNhbGxi
YWNrLCBRdWV1ZVRhc2tUb0V2ZW50TG9vcC4gCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaDoKKyAgICAgICAgQWxsIHVzaW5nIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZSBhcyBhIHNpbXBsZSBSQUlJIG9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNQcm9maWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNob3Vs
ZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAgIEFkZCBhIEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIGFuZCBpbXBsZW1lbnQgUXVldWVUYXNrVG9FdmVudExvb3Au
IEZvcndhcmQgdGhlIG90aGVyIGNhbGxiYWNrcworICAgICAgICB0byBKU0dsb2JhbE9iamVjdCBz
byB0aGV5IHJldGFpbiB0aGVpciBleGlzdGluZyBiZWhhdmlvci4KKwogMjAxMy0wOC0yNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBKYXZhU2NyaXB0IGJp
bmRpbmcgZm9yIENsaXBib2FyZDo6dHlwZXMgbW9yZSBub3JtYWwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjMzMiw2ICsyMzMyLDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1E
YXRhQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2su
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2su
aCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlD
dXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIFNP
VVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIFwKICAgICAgYmlu
ZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIFwKICAgICAg
YmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgXApAQCAtMTM1Myw2ICsxMzU0
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmggXAogICAg
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaCBcCiAg
ICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCisgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE2MTM4LDYgKzE2MTM4LDIwIEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCI+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTUltcGxlbWVu
dGF0aW9uQ3VzdG9tLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CkBAIC0yMDY3Nyw2ICsyMDY5MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xKU0RpY3Rpb25hcnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXEpTRE9NQmluZGluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dCYXNlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdpbmRvd0N1c3Rv
bS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01XaW5k
b3dTaGVsbC5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTU0NTc4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDgyLDYgKzQ0ODIsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ymlu
ZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiPgorICAgICAgPEZp
bHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAi
PgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpA
QCAtMTE1NzgsNiArMTE1ODEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcSlNET01HbG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suaCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdz
XGpzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xKU0Vycm9ySGFuZGxlci5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDU3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTkzNSw2ICsxOTM1LDggQEAKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgz
IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FG
RDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1
Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZH
R3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQu
aCAqLzsgfTsKKwkJN0MyQkREM0QxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0
VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLzsg
fTsKKwkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyQkREM0Mx
N0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovOyB9OwogCQk3QzUy
MkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdD
OTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQy
MzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpT
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQy
MzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCAqLzsgfTsKQEAgLTgzMzAsNiArODMzMiw4IEBACiAJCTdB
RjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3Jp
cHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJy
ZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdC
NjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMkJERDNDMTdDN0Y5
OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvck92ZXJs
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0QTE1QjQ3OEIyMDA5
QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NTk4LDEyICsxODYwMiwx
MiBAQAogCQkJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBDb25zdHJ1Y3RvcnMgKi8sCiAJ
CQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLywKIAkJCQkxNERGQjMzRjBB
N0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTkzRjhCMzA2MEEzMDBG
RUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJNDlCMzc2MEExNUM2QzY4
NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuY3BwICovLAogCQkJCTQ5QjM3NjBCMTVDNkM2ODQwMDU5
MTMxRCAvKiBBcnJheVZhbHVlLmggKi8sCiAJCQkJOTczQUEzRjIxNUQwODhGMDAwRTM4QTg1IC8q
IEJpbmRpbmdTdGF0ZS5jcHAgKi8sCiAJCQkJOTczQUEzRjMxNUQwODhGMDAwRTM4QTg1IC8qIEJp
bmRpbmdTdGF0ZS5oICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oICovLAotCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAv
KiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJMzEyRDY3QjAxNTM1NjkxRjAwNTYzRDBEIC8q
IERpY3Rpb25hcnkuY3BwICovLAogCQkJCTMxNjAyM0VGMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggKi8sCiAJCQkJQkM1M0RBNjExMTQzMTRCRDAwMEQ4MTdFIC8qIERPTU9iamVjdEhh
c2hUYWJsZU1hcC5jcHAgKi8sCkBAIC0xODYyMiw2ICsxODYyNiw4IEBACiAJCQkJOTNCNzBENDgw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAogCQkJCUUxQzM2Q0JDMEVCMDgw
NjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIw
NzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8sCisJCQkJN0MyQkREM0IxN0M3
Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi8sCisJCQkJN0MyQkRE
M0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovLAogCQkJCUJD
NjkzMjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovLAogCQkJCUJD
NjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCAqLywKIAkJCQlCQ0JG
QjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8sCkBAIC0yMzcx
Nyw2ICsyMzcyMyw3IEBACiAJCQkJNDlFOTExRDAwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9y
bU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0
OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgw
OTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MyQkRE
M0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTE3QjQ5MTYxNkE5QjA5NDAwMUM4ODM5IC8qIFRyYW5zaXRpb25FdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExRDIwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzcwQTIyOTdCRTAw
NThEN0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI4MCw2ICsyNjI4Nyw3
IEBACiAJCQkJQkMwQjM1ODcxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjlBMzA5QUMxNTYxQzk5QjAwQkJEOEU1IC8qIFJ1bkxvb3BDRi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzBCMzU4MzE0QzRGOTU0MDA1NUUyMkEgLyogUnVuTG9vcE1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUds
b2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdFMkI4MjAw
N0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjAw
RDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgs
NyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5jcHAiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0
YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuY3BwIgorI2luY2x1ZGUg
IkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCiAjaW5jbHVkZSAiSlNET01JbXBsZW1lbnRhdGlv
bkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKKworI2lu
Y2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFs
T2JqZWN0Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IGNyZWF0ZShKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVU
YXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRy
PFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSlNHbG9iYWxPYmplY3RDYWxsYmFjayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0
YXNrQ29udGV4dCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2soKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNhbGwoKQorICAgIHsKKyAgICAgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJl
ZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7CisKKyAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKworICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbV9nbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAgICAgLy8gV2Ugd2lsbCBmYWlsIHRvIGdldCB0aGUgY29udGV4dCBp
ZiB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCisgICAgICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBXaGVuIG9uIHRoZSBtYWluIHRocmVhZCAo
ZS5nLiB0aGUgZG9jdW1lbnQncyB0aHJlYWQpLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0bworICAg
ICAgICAvLyBwdXNoIHRoZSBjdXJyZW50J3QgRXhlY1N0YXRlIG9uIHRvIHRoZSBKU01haW5UaHJl
YWRFeGVjU3RhdGUgc3RhY2suCisgICAgICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsK
KyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7Cisg
ICAgICAgICAgICBtX2Z1bmN0aW9uUHRyKGV4ZWMsIG1fdGFza0NvbnRleHQuZ2V0KCkpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZnVuY3Rpb25QdHIoZXhlYywgbV90YXNrQ29udGV4
dC5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2so
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6
OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFz
c1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCisgICAgICAgIDogQWN0aXZlRE9NQ2Fs
bGJhY2soZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgICwg
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QpCisgICAgICAg
ICwgbV9mdW5jdGlvblB0cihmdW5jdGlvblB0cikKKyAgICAgICAgLCBtX3Rhc2tDb250ZXh0KHRh
c2tDb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICBTdHJvbmc8SlNET01HbG9iYWxPYmplY3Q+
IG1fZ2xvYmFsT2JqZWN0OworICAgIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tU
b0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgbV9mdW5jdGlvblB0cjsKKyAgICBSZWZQdHI8
VGFza0NvbnRleHQ+IG1fdGFza0NvbnRleHQ7Cit9OworCitKU0dsb2JhbE9iamVjdFRhc2s6OkpT
R2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHbG9iYWxP
YmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRy
IGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICA6
IG1fY2FsbGJhY2soSlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSkKK3sKK30KKworSlNHbG9iYWxPYmplY3RUYXNrOjp+
SlNHbG9iYWxPYmplY3RUYXNrKCkKK3sKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdFRhc2s6OnBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQoreworICAgIG1fY2FsbGJhY2stPmNh
bGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0RP
TUdsb2JhbE9iamVjdFRhc2tfaAorI2RlZmluZSBKU0RPTUdsb2JhbE9iamVjdFRhc2tfaAorCisj
aW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3RD
YWxsYmFjazsKKworY2xhc3MgSlNHbG9iYWxPYmplY3RUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEpTR2xv
YmFsT2JqZWN0VGFzaz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tG
dW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0PiB0YXNr
Q29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSlNHbG9iYWxPYmpl
Y3RUYXNrKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7CisgICAgfQor
CisgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3RUYXNrKCk7CisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworcHJpdmF0ZToKKyAgICBKU0ds
b2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIsIFBhc3NSZWZQ
dHI8SlNDOjpUYXNrQ29udGV4dD4pOworCisgICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2s+IG1fY2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBKU0RPTUdsb2JhbE9iamVjdFRhc2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC01MCw3ICs1MSw3IEBAIHN0YXRp
YyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCAKIAogY29uc3QgQ2xhc3NJbmZvIEpT
RE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0Ojpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9OwogCi1j
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2Zp
bGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZq
YXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkIH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91
bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFi
bGVkLCAmcXVldWVUYXNrVG9FdmVudExvb3AgfTsKIAogSlNET01XaW5kb3dCYXNlOjpKU0RPTVdp
bmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5k
b3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9i
amVjdCh2bSwgc3RydWN0dXJlLCBzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUpCkBAIC0xNjMsNiArMTY0LDEyIEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpqYXZhU2Ny
aXB0RXhwZXJpbWUKICAgICByZXR1cm4gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdEV4cGVy
aW1lbnRzRW5hYmxlZCgpOwogfQogCit2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9F
dmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0
ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCit7CisgICAgY29uc3QgSlNE
T01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3dC
YXNlKj4ob2JqZWN0KTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnBvc3RUYXNrKEpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKChKU0RPTVdpbmRvd0Jhc2UqKXRo
aXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworfQorCiB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dTaGVsbCgpCiB7CiAgICAgc2V0Q3VycmVudEV2
ZW50KDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZElu
dGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHN0YXRp
YyBib29sIGphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworCisgICAgICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza1RvRXZlbnRMb29wKGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1
ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNr
Q29udGV4dD4pOworICAgICAgICAKICAgICAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZShjb25z
dCBTdHJpbmcmKSBjb25zdDsKIAogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNl
LCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7CiAgICAgfTsKIAotcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IEpTTWFpblRocmVhZEV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
OiBtX3ByZXZpb3VzU3RhdGUoc19tYWluVGhyZWFkU3RhdGUpCiAgICAgewpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCIKIAogI2luY2x1ZGUgIkRPTVdy
YXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1
ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTQ2LDggKzQ3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxTY29wZSIsICZKU0RPTUdsb2Jh
bE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlKSB9OwogCitjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckds
b2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vz
c0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91
bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkLCAmcXVldWVU
YXNrVG9FdmVudExvb3AgfTsKKwogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNz
UmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBpbXBsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pKQorICAgIDogSlNET01HbG9iYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSkKICAgICAsIG1faW1wbChpbXBsKQogewogfQpAQCAtNjgsNiArNzEsMzggQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogSlNXb3JrZXJHbG9iYWxTYwogICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7
CiB9CiAKKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNzRnJvbShj
b25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0
dXJuIEpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tKG9iamVjdCwgZXhlYyk7Cit9CisK
K2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzdXBw
b3J0c1Byb2ZpbGluZyhvYmplY3QpOworfQorCitib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7
CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKG9iamVj
dCk7Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNj
cmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2Jh
bE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OmphdmFT
Y3JpcHRFeHBlcmltZW50c0VuYWJsZWQob2JqZWN0KTsKK30KKwordm9pZCBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9i
amVjdCwgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJh
Y2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0Nv
bnRleHQpCit7CisgICAgY29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7Cisg
ICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhKU0dsb2Jh
bE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01HbG9iYWxPYmplY3QqKXRoaXNPYmplY3QsIGZ1bmN0
aW9uUHRyLCB0YXNrQ29udGV4dCkpOworfQorCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29w
ZSkKIHsKICAgICByZXR1cm4gdG9KUyhleGVjLCB3b3JrZXJHbG9iYWxTY29wZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Okds
b2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCisg
ICAgICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHNfZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICAgICAgc3RhdGljIGJvb2wgYWxsb3dzQWNjZXNzRnJv
bShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqKTsKKyAgICAgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2Ny
aXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgamF2
YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza1RvRXZlbnRMb29wKGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50
TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4pOwor
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZN
JiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPik7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0
NTc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
ODUgQEAKKzIwMTMtMDgtMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgUHJvbWlzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMDI2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBhZGFwdGVkIGZyb20gdGhlIE1vemlsbGEgYW5k
IEJsaW5rIHByb2plY3RzLgorCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVs
ZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWFs
cmVhZHktZnVsZmlsbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1h
bHJlYWR5LXJlamVjdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWFscmVhZHktcmVqZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWFscmVhZHktcmVzb2x2ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtY2F0Y2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2UtY2hhaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtY2hhaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWV4Y2Vw
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1leGNl
cHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4t
d29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtaW5pdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlamVjdC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVu
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4t
cmVqZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtcmVzb2x2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2lt
cGxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBs
ZS1mdWxmaWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29y
a2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVz
b2x2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13
b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhv
dXQtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9t
aXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdv
cmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91
dC1jYWxsYmFja3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qczog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29y
a2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZXNv
bHZlLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1By
b21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVz
b3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5q
czogQWRkZWQuCisKIDIwMTMtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b0pTVmFsdWUgc2hvdWxkIGFsbW9z
dCBjZXJ0YWlubHkgbm90IHVzZSBqc051bWJlcigpIHNpbmNlIHRoYXQgYXR0ZW1wdHMgaW50IGNv
bnZlcnNpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxm
aWxsZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJmb28iCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCituZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlcikgeworICByZXNvbHZlci5mdWxmaWxsKCdmb28nKTsKKyAgcmVzb2x2ZXIuZnVsZmls
bCgnZnVsZmlsbCcpOworICByZXNvbHZlci5yZXNvbHZlKCdyZXNvbHZlJyk7CisgIHJlc29sdmVy
LnJlamVjdCgncmVqZWN0Jyk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cu
cmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdmb28n
KTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVq
ZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVh
ZHktcmVqZWN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1BBU1MgcmVzdWx0IGlzICJmb28iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWFscmVhZHktcmVqZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCituZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICBy
ZXNvbHZlci5yZWplY3QoJ2ZvbycpOworICByZXNvbHZlci5mdWxmaWxsKCdmdWxmaWxsJyk7Cisg
IHJlc29sdmVyLnJlc29sdmUoJ3Jlc29sdmUnKTsKKyAgcmVzb2x2ZXIucmVqZWN0KCdyZWplY3Qn
KTsKK30pLnRoZW4oZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworICBm
aW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0g
cmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdmb28nKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFs
cmVhZHktcmVzb2x2ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBA
QAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVz
dWx0IGlzICJmb28iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFk
eS1yZXNvbHZlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWFscmVhZHktcmVzb2x2ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCituZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICB2YXIgYW5vdGhlclJlc29s
dmVyOworICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgYW5vdGhl
clJlc29sdmVyID0gcjsgfSkpOworICByZXNvbHZlci5mdWxmaWxsKCdmdWxmaWxsJyk7CisgIHJl
c29sdmVyLnJlc29sdmUoJ3Jlc29sdmUnKTsKKyAgcmVzb2x2ZXIucmVqZWN0KCdyZWplY3QnKTsK
KworICBhbm90aGVyUmVzb2x2ZXIuZnVsZmlsbCgnZm9vJyk7Cit9KS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Jlc3VsdCcsICdmb28nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsK
KyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0
Y2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1jYXRjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtY2F0Y2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgg
QEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRo
aXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIGZpcnN0UHJvbWlzZSBpbnN0
YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJv
bWlzZSBpcyB0cnVlCitQQVNTIGZpcnN0UHJvbWlzZS5jYXRjaChudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3Qg
YXJndW1lbnQuCitQQVNTIGZpcnN0UHJvbWlzZS5jYXRjaCgzNykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3Vt
ZW50LgorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxz
ZQorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQor
UEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyByZXN1bHQgaXMgImJ5ZSIKK1BBU1MgZnVsZmls
bGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1p
bi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE5IEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1jYXRjaC1p
bi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBp
cyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMg
dHJ1ZQorUEFTUyBbV29ya2VyXSBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0
cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS5jYXRjaChudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3Qg
YXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS5jYXRjaCgzNykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZp
cnN0IGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZp
cnN0UHJvbWlzZSBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sg
PT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImhlbGxv
IgorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImJ5ZSIKK1BBU1MgW1dvcmtlcl0gZnVsZmlsbGVk
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWlu
LXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRX
b3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHJlc29sdmVyOworCit2YXIgZmly
c3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24obmV3UmVzb2x2ZXIpIHsKKyAgd2luZG93
LnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IG5ld1Jlc29sdmVyOworfSk7CisKK3Zh
ciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNlLmNhdGNoKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVGYWxzZSgn
dGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2UnKTsKKyAgc2hvdWxkQmVUcnVl
KCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgd2luZG93LnJl
c3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8n
KTsKKyAgcmV0dXJuICdieWUnOworfSk7CisKK3NlY29uZFByb21pc2UudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdyZXN1bHQnLCAnYnllJyk7CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOwor
ICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworfSk7CisKK3Nob3VsZEJlVHJ1ZSgn
dGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91bGRCZVRydWUoJ2ZpcnN0UHJvbWlz
ZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgnc2Vjb25kUHJvbWlzZSBpbnN0
YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS5jYXRjaChudWxs
KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmly
c3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLmNhdGNoKDM3KScsICci
VHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJn
dW1lbnQiJyk7CisKK3Jlc29sdmVyLnJlamVjdCgnaGVsbG8nKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNoYWluLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNoYWlu
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitUZXN0IFByb21p
c2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBmdWxmaWxsZWQKK1BBU1Mg
cmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgZnVsZmlsbGVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8y
IgorUEFTUyByZWplY3RlZAorUEFTUyByZXN1bHQgaXMgImVycm9yIgorUEFTUyByZWplY3RlZAor
UEFTUyByZXN1bHQgaXMgImVycm9yMiIKK1BBU1MgZnVsZmlsbGVkCitQQVNTIHJlc3VsdCBpcyAi
cmVjb3ZlcmVkIgorUEFTUyBvcGVyYXRpb24gaXMgImFzeW5jaHJvbm91cyIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtY2hhaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIp
IHtyZXNvbHZlciA9IHI7fSk7Cit2YXIgb3BlcmF0aW9uOworCitwcm9taXNlLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7ICAvLyBmdWxmaWxsZWQgLSBjb250aW51ZQorICB0ZXN0UGFzc2VkKCdmdWxm
aWxsZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgcmV0dXJuICdoZWxsbzInOworfSwgZnVuY3Rpb24o
KSB7CisgIHRlc3RGYWlsZWQoJ3JyZWplY3RlZCcpOworfSkudGhlbigpICAvLyBwYXNzIHRocm91
Z2gKKy50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyAgLy8gZnVsZmlsbGVkIC0gdGhyb3cgYW4gZXhj
ZXB0aW9uCisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVz
dWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbzInKTsKKyAgdGhy
b3cgJ2Vycm9yJzsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOwor
fSkudGhlbihmdW5jdGlvbigpIHsgIC8vIHJlamVjdGVkIC0gdGhyb3cgYW4gZXhjZXB0aW9uCisg
IHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQ
YXNzZWQoJ3JlamVjdGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2Vycm9yJyk7CisgIHRocm93ICdlcnJvcjInOworfSku
dGhlbigpIC8vIHBhc3MgdGhyb3VnaAorLnRoZW4oZnVuY3Rpb24oKSB7ICAvLyByZWplY3RlZCAt
IHJlY292ZXIKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQp
IHsKKyAgdGVzdFBhc3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZXJyb3IyJyk7CisgIHJldHVybiAn
cmVjb3ZlcmVkJzsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7ICAvLyBmdWxmaWxsZWQgLSB0
aGUgbGFzdAorICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJl
c3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAncmVjb3ZlcmVkJyk7Cisg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnb3BlcmF0aW9uJywgJ2FzeW5jaHJvbm91cycpOworICBm
aW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcp
OworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitvcGVyYXRpb24gPSAnc3luY2hyb25vdXMnOwor
cmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworLy8gVGhlIGNoYWluIHNob3VsZCBiZSBleGVj
dXRlZCBhc3luY2hyb25vdXNseS4KK29wZXJhdGlvbiA9ICdhc3luY2hyb25vdXMnOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNl
cHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1MgdGhpc0luVGhlbkNhbGxiYWNrID09PSB0aGlyZFByb21pc2UgaXMgdHJ1ZQorUEFT
UyByZXN1bHQgaXMgImZvb2JhciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhjZXB0
aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4Y2Vw
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4
Y2VwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVz
dCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBmaXJz
dFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICB3aW5kb3cudGhp
c0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7Cit9KTsKKwordmFy
IHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAg
dGhyb3cgJ2Zvb2Jhcic7Cit9KTsKKwordmFyIHRoaXJkUHJvbWlzZSA9IHNlY29uZFByb21pc2Uu
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZmFpbCgnVW5leHBlY3RlZCBpbnZvY2F0aW9uIG9m
IGZ1bGZpbGxDYWxsYmFjaycpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy50aGlz
SW5UaGVuQ2FsbGJhY2sgPSB0aGlzOworICBzaG91bGRCZVRydWUoJ3RoaXNJblRoZW5DYWxsYmFj
ayA9PT0gdGhpcmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2Zvb2JhcicpOworICBmaW5pc2hKU1Rlc3QoKTsK
K30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAKK1By
b21pc2VzIC0gQWRhcHRlZCBmcm9tIGh0dHA6Ly9keHIubW96aWxsYS5vcmcvbW96aWxsYS1jZW50
cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90ZXN0X3Byb21pc2UuaHRtbC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworVGVzdCBQcm9taXNlIHJlc29sdmUuCitQQVNTIFRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNl
IHJlamVjdC4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQy
CisKK1Rlc3QgUHJvbWlzZSByZWplY3QuCitQQVNTIFRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxl
ZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgZ2MuCitQQVNTIFRoZW4gLSBwcm9taXNl
IGlzIHN0aWxsIGFsaXZlCisKK1Rlc3QgUHJvbWlzZSBhc3luYy4KK0dsb2JhbCBzaG91bGQgYmUg
Zm9vCitQQVNTIGZvbyBpcyBmb28KK0dsb2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vCitQQVNTIGZv
byBpcyBmb28KK0dsb2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vICgyKQorUEFTUyBmb28gaXMgZm9v
CitHbG9iYWwgc2hvdWxkIGJlIGJhcgorUEFTUyBiYXIgaXMgYmFyCisKK1Rlc3QgUHJvbWlzZSBk
b3VibGUgdGhlbi4KK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBp
cyA0MgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDEgaXMgMQorUEFT
UyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gZXhjZXB0aW9uLgorUEFTUyBUaGVu
LnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIENhdGNoIGhhbmRsZXIgKGUuZy4gdGhlIHJl
amVjdCBoYW5kbGVyKSBjYWxsZWQuCisKK1Rlc3QgUHJvbWlzZSAtIHRoZW4gLyBjYXRjaCAvIHRo
ZW4uCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKK1BB
U1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MyBpcyA0MworUEFTUyBUaGVu
LnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQ0IGlzIDQ0CisKK1Rlc3QgUHJvbWlzZSAt
IHJlamVjdCAvIHRoZW4gLyBjYXRjaCAvIHRoZW4uCitQQVNTIFRoZW4ucmVqZWN0IGhhcyBiZWVu
IGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVk
CitQQVNTIDQzIGlzIDQzCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1Mg
NDQgaXMgNDQKKworVGVzdCBQcm9taXNlIC0gcmVqZWN0IC8gdGhlbiAvIGNhdGNoIC8gdGhlbiAo
MikuCitQQVNTIENhdGNoIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBUaGVu
LnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCisKK1Rlc3QgUHJvbWlzZSAt
IHJlamVjdCAvIHRoZW4gLyBjYXRjaCBleGNlcHRpb24gLyB0aGVuLgorUEFTUyBUaGVuLnJlamVj
dCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKK1BBU1MgQ2F0Y2ggaGFzIGJlZW4gY2Fs
bGVkCitQQVNTIDQzIGlzIDQzCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BB
U1MgNDQgaXMgNDQKKworVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNhdGNoIG9yZGVyaW5nIChyZXNv
bHZlKS4KK01hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAyCitQQVNTIDIgaXMgMgorCitUZXN0
IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlamVjdCkuCitNYW55IHN0ZXBzLi4u
IHNob3VsZCByZXR1cm4gMgorUEFTUyAyIGlzIDIKKworVGVzdCBQcm9taXNlIC0gbmVzdGVkIHBy
b21pc2UKK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BBU1MgVGhlbi5yZXNvbHZl
IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSBuZXN0ZWQt
bmVzdGVkIHByb21pc2UuCitQQVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkCitQQVNTIFRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDMgaXMgNDMKKworVGVzdCBQcm9taXNl
IC0gd3JvbmcgbmVzdGVkIHByb21pc2UuCitQQVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVk
CitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKworVGVz
dCBQcm9taXNlIC0gcHJvbWlzZSBsb29wLgorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRl
ZAorUEFTUyBOZXN0ZWQtbmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BBU1MgVGhlbi5yZXNv
bHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSBQcm9t
aXNlLnJlamVjdCgpLgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIg
aXMgNDIKKworVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNvbHZlKCkuCitQQVNTIFRoZW4ucmVz
b2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNlIC0gUHJv
bWlzZS5yZXNvbHZlKCkgd2l0aCAgbmVzdGVkIHByb21pc2UuCitQQVNTIE5lc3RlZCBwcm9taXNl
IGlzIGV4ZWN1dGVkCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIg
aXMgNDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZp
bGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3QgUHJv
bWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHByb21pc2VTdGF0ZSBp
cyAicGVuZGluZyIKK1BBU1MgcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBwcm9taXNl
U3RhdGUgaXMgImZ1bGZpbGxlZCIKK1BBU1MgcHJvbWlzZVJlc3VsdCBpcyAiaGVsbG8iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29y
a2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzIEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWlu
LXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFT
UyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIFtXb3JrZXJdIHByb21p
c2VTdGF0ZSBpcyAiZnVsZmlsbGVkIgorUEFTUyBbV29ya2VyXSBwcm9taXNlUmVzdWx0IGlzICJo
ZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4t
d29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWZ1bGZpbGwtaW4td29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3Jr
ZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmpz
Jyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1mdWxmaWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1mdWxmaWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFy
IHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29s
dmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0gJ3BlbmRpbmcnOwordmFyIHByb21pc2VS
ZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHBy
b21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9taXNlUmVzdWx0ID0gcmVzdWx0OworfSwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdyZWplY3RlZCc7CisgIHByb21p
c2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNl
U3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Byb21pc2Uu
dGhlbihmdW5jdGlvbigpIHsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUn
LCAnZnVsZmlsbGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVJlc3VsdCcs
ICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFp
bGVkKCdwcm9taXNlIGlzIHJlamVjdGVkLicpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1p
bml0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtaW5pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtaW5pdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBA
QAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcHJv
bWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBwcm9taXNlLmNvbnN0cnVjdG9y
IGlzIFByb21pc2UKK1BBU1MgdGhpc0luSW5pdCBpcyBwcm9taXNlCitQQVNTIHJlc29sdmVyIGlu
c3RhbmNlb2YgUHJvbWlzZVJlc29sdmVyIGlzIHRydWUKK1BBU1MgcmVzb2x2ZXIuY29uc3RydWN0
b3IgaXMgUHJvbWlzZVJlc29sdmVyCitQQVNTIG5ldyBQcm9taXNlKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBuZXcgUHJv
bWlzZSgzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMg
YXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigp
IHsgdGhyb3cgRXJyb3IoImZvbyIpOyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
cmVzdWx0Lm1lc3NhZ2UgaXMgImZvbyIKK1BBU1MgZnVsZmlsbGVkCitQQVNTIHJlc3VsdCBpcyAi
aGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQt
aW4td29ya2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIwIEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1pbml0LWlu
LXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMg
dHJ1ZQorUEFTUyBbV29ya2VyXSBwcm9taXNlLmNvbnN0cnVjdG9yIGlzIFByb21pc2UKK1BBU1Mg
W1dvcmtlcl0gdGhpc0luSW5pdCBpcyBwcm9taXNlCitQQVNTIFtXb3JrZXJdIHJlc29sdmVyIGlu
c3RhbmNlb2YgUHJvbWlzZVJlc29sdmVyIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmVzb2x2ZXIu
Y29uc3RydWN0b3IgaXMgUHJvbWlzZVJlc29sdmVyCitQQVNTIFtXb3JrZXJdIG5ldyBQcm9taXNl
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3Vt
ZW50LgorUEFTUyBbV29ya2VyXSBuZXcgUHJvbWlzZSgzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3Jr
ZXJdIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigpIHsgdGhyb3cgRXJyb3IoImZvbyIp
OyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgW1dvcmtlcl0gcmVzdWx0Lm1lc3Nh
Z2UgaXMgImZvbyIKK1BBU1MgW1dvcmtlcl0gZnVsZmlsbGVkCitQQVNTIFtXb3JrZXJdIHJlc3Vs
dCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWlu
LXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1pbml0LWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2Vy
ID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
aW5pdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciB0aGlzSW5Jbml0Owor
dmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7Cisg
IHRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7Cit9KTsKKworc2hvdWxkQmVUcnVl
KCdwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmUoJ3Byb21pc2UuY29uc3Ry
dWN0b3InLCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJbkluaXQnLCAncHJvbWlzZScpOwor
c2hvdWxkQmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFByb21pc2VSZXNvbHZlcicpOworc2hv
dWxkQmUoJ3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21pc2VSZXNvbHZlcicpOworCitzaG91
bGRUaHJvdygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBv
bmUgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoMzcpJywgJyJUeXBlRXJy
b3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworCitzaG91bGRO
b3RUaHJvdygncHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKCkgeyB0aHJvdyBFcnJvcigi
Zm9vIik7IH0pJyk7Citwcm9taXNlLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1
bHQubWVzc2FnZScsICdmb28nKTsKK30pOworCituZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
cikgeworICByZXNvbHZlci5mdWxmaWxsKCJoZWxsbyIpOworICB0aHJvdyBFcnJvcigiZm9vIik7
Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0Owor
ICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1
bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAg
ZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BB
U1MgcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgInJlamVj
dGVkIgorUEFTUyBwcm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdv
cmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK1tXb3Jr
ZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTdGFydGlu
ZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmpzCitQQVNTIFtX
b3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0
YXRlIGlzICJwZW5kaW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInJlamVjdGVk
IgorUEFTUyBbV29ya2VyXSBwcm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3Vy
Y2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9KTsKK3ZhciBwcm9taXNlU3Rh
dGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVuZGVmaW5lZDsKK3Byb21pc2Uu
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ2Z1bGZpbGxlZCc7Cisg
IHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlz
ZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsKK30pOworCitz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Jlc29s
dmVyLnJlamVjdCgnaGVsbG8nKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3Rh
dGUnLCAncGVuZGluZycpOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7CisgIHRlc3RGYWls
ZWQoJ3Byb21pc2UgaXMgZnVsZmlsbGVkLicpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdyZWplY3Rl
ZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VSZXN1bHQnLCAnaGVsbG8nKTsK
KyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtY2hhaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAK
K1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3Vs
dCBpcyAiaGVsbG8iCitQQVNTIHJlc3VsdCBpcyAiYnllIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyMSwgcmVzb2x2ZXIyLCByZXNvbHZlcjM7Cit2
YXIgcmVzb2x2ZXI0LCByZXNvbHZlcjUsIHJlc29sdmVyNjsKK3ZhciBwcm9taXNlMSA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIxID0gcjsgfSk7Cit2YXIgcHJvbWlzZTIgPSBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyMiA9IHI7IH0pOwordmFyIHByb21pc2Uz
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjMgPSByOyB9KTsKK3ZhciBwcm9t
aXNlNCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXI0ID0gcjsgfSk7Cit2YXIg
cHJvbWlzZTUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyNSA9IHI7IH0pOwor
dmFyIHByb21pc2U2ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjYgPSByOyB9
KTsKKworcmVzb2x2ZXIzLnJlc29sdmUocHJvbWlzZTIpOworcmVzb2x2ZXIyLnJlc29sdmUocHJv
bWlzZTEpOworcmVzb2x2ZXI2LnJlc29sdmUocHJvbWlzZTUpOworcmVzb2x2ZXI1LnJlc29sdmUo
cHJvbWlzZTQpOworCitwcm9taXNlMy50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cu
cmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxs
bycpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7Cit9KTsKKwor
cHJvbWlzZTYudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQg
PSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2J5ZScpOworICBm
aW5pc2hKU1Rlc3QoKTsKK30pOworCityZXNvbHZlcjEucmVzb2x2ZSgnaGVsbG8nKTsKK3Jlc29s
dmVyNC5yZWplY3QoJ2J5ZScpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBz
ZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTEgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vy
cy5qcworUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21p
c2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdy
ZXNvdXJjZXMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10
aGVuLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRo
ZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBA
CitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGhlIHByb21p
c2UgaXMgYWxyZWFkeSByZWplY3RlZCBub3cuCitQQVNTIHJlamVjdGVkCitQQVNTIHJlc3VsdCBp
cyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVu
LWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIGNhbGxiYWNrOwordmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICByZXNvbHZlci5yZXNvbHZl
KHt0aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKSB7CisgICAg
dGhyb3cgJ2hlbGxvJzsKKyAgfX0sIHRydWUpOworfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlv
bigpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ3JlamVjdGVkJyk7CisgIHdpbmRvdy5y
ZXN1bHQgPSByZXN1bHQKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8n
KTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworZGVidWcoJ1RoZSBwcm9taXNlIGlzIGFscmVh
ZHkgcmVqZWN0ZWQgbm93LicpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0
aC10aGVuLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHZhbHVlLnRoZW4gaXMgY2FsbGVkLgorUEFTUyB0aGlz
VmFsdWUgaXMgdmFsdWUKK1RoZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgbm93LgorUEFTUyBm
dWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRo
ZW4tZnVsZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbign
VGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgY2Fs
bGJhY2s7Cit2YXIgdmFsdWUgPSB7CisgIHRoZW46IGZ1bmN0aW9uKGZ1bGZpbGxDYWxsYmFjaywg
cmVqZWN0Q2FsbGJhY2spIHsKKyAgICB0ZXN0UGFzc2VkKCd2YWx1ZS50aGVuIGlzIGNhbGxlZC4n
KTsKKyAgICB3aW5kb3cudGhpc1ZhbHVlID0gdGhpczsKKyAgICBzaG91bGRCZSgndGhpc1ZhbHVl
JywgJ3ZhbHVlJyk7CisgICAgY2FsbGJhY2sgPSBmdWxmaWxsQ2FsbGJhY2s7CisgIH0KK307Citm
aW5pc2hKU1Rlc3QoKTsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyBy
LnJlc29sdmUodmFsdWUpOyB9KTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0
KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNo
SlNUZXN0KCk7Cit9KTsKKworZGVidWcoJ1RoZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgbm93
LicpOworCitjYWxsYmFjaygnaGVsbG8nKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29s
dmUtd2l0aC10aGVuLXJlamVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyB2YWx1ZS50aGVuIGlzIGNhbGxlZC4KK1BBU1Mg
dGhpc1ZhbHVlIGlzIHZhbHVlCitUaGUgcHJvbWlzZSBpcyBub3QgcmVqZWN0ZWQgbm93LgorUEFT
UyByZWplY3RlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRo
ZW4tcmVqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBjYWxs
YmFjazsKK3ZhciB2YWx1ZSA9IHsKKyAgdGhlbjogZnVuY3Rpb24oZnVsZmlsbENhbGxiYWNrLCBy
ZWplY3RDYWxsYmFjaykgeworICAgIHRlc3RQYXNzZWQoJ3ZhbHVlLnRoZW4gaXMgY2FsbGVkLicp
OworICAgIHdpbmRvdy50aGlzVmFsdWUgPSB0aGlzOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUn
LCAndmFsdWUnKTsKKyAgICBjYWxsYmFjayA9IHJlamVjdENhbGxiYWNrOworICB9Cit9OwordmFy
IHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIucmVzb2x2ZSh2YWx1ZSk7IH0p
OworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RGYWlsZWQoJ2Z1bGZp
bGxlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0
UGFzc2VkKCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IHJlamVjdGVkIG5vdy4nKTsKKworY2FsbGJh
Y2soJ2hlbGxvJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7
CisgIHJlc29sdmVyLnJlc29sdmUoJ2hlbGxvJyk7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2Ug
PSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJbkZ1
bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxi
YWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgp
OworfSwgZnVuY3Rpb24oKSB7CisgIGZhaWwoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgp
OworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXNpbXBsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworUEFTUyB0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1ZQorUEFTUyB0
aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyByZXN1
bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmls
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUt
Y2FsbGJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRl
LWNhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKwordmFyIGZ1dHVyZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7Cit9KS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUt
ZnVsZmlsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1z
aW1wbGUtZnVsZmlsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKwordmFyIGZ1dHVyZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKyAg
fSwgMCk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVz
dWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1z
aW1wbGUtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MiBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMu
anMKK1BBU1MgW1dvcmtlcl0gdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BB
U1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRy
dWUKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL1By
b21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBu
ZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNvbHZlcikgeworICB3aW5kb3cudGhpc0luSW5pdCA9
IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21p
c2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJ
bkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENh
bGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7Cisg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVz
dCgpOworfSk7CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7
CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1
bGZpbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXN0YXRpYy1mdWxmaWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
UEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworcmVzdWx0ID0gdW5kZWZpbmVkOworCitQ
cm9taXNlLmZ1bGZpbGwoJ2hlbGxvJykudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93
LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVs
bG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdEZh
aWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKK3Nob3VsZEJlKCdyZXN1
bHQnLCAndW5kZWZpbmVkJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJl
amVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBQ
cm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzIHVu
ZGVmaW5lZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zdGF0aWMtcmVqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKK3Jlc3VsdCA9IHVuZGVmaW5lZDsKKworUHJvbWlzZS5yZWplY3QoJ2hlbGxv
JykudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQg
PSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSk7CitzaG91bGRCZSgncmVzdWx0JywgJ3VuZGVmaW5lZCcpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
c3RhdGljLXJlc29sdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyB1bmRlZmluZWQKK1BBU1MgcmVz
dWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29s
dmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGlj
LXJlc29sdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1zdGF0aWMtcmVzb2x2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7City
ZXN1bHQgPSB1bmRlZmluZWQ7CisKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gUHJvbWlz
ZS5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyKSB7IHJlc29sdmVyID0gcjt9ICkpOwor
Citwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1
bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3Jlc29sdmVyLnJlc29sdmUoJ2hlbGxvJyk7CitzaG91
bGRCZSgncmVzdWx0JywgJ3VuZGVmaW5lZCcpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBp
cyB0cnVlCitQQVNTIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFT
UyBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIGZpcnN0UHJv
bWlzZS50aGVuKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0
aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgZmlyc3RQcm9taXNl
LnRoZW4odW5kZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3Rl
ZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgc2Vjb25kIGFyZ3VtZW50LgorUEFTUyBmaXJz
dFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyB0aGlzSW5GdWxm
aWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQorUEFTUyB0aGlzSW5GdWxmaWxs
Q2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyByZXN1bHQgaXMgImhlbGxv
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWluLXdv
cmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXRoZW4taW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxOCBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3Jr
ZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0cnVl
CitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQ
QVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS50aGVuKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVu
dC4KK1BBU1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlLnRoZW4odW5kZWZpbmVkLCBudWxsKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMg
YXMgc2Vjb25kIGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSBmaXJzdFByb21pc2UudGhlbigzNykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVk
IGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxs
Q2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXN1bHQg
aXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13
b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
dGhlbi1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9
IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanMnKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRo
ZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQt
Y2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rl
c3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBp
cyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxs
YmFja3MtaW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13
aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdp
dGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJo
ZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNr
cy1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4t
d29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdv
cmtlcigncmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJz
LmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJh
Y2tzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFBy
b21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocikgeyByLmZ1bGZpbGwoJ2hlbGxvJyk7IH0pCisgIC50aGVuKCkKKyAgLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICAgIGZpbmlzaEpTVGVzdCgp
OworICB9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtdGhlbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10aGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtdGhlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbign
VGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBy
ZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jl
c29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdS
ZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsK
KyAgc2hvdWxkQmVGYWxzZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2Un
KTsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21p
c2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVU
cnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgnZmlyc3RQ
cm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdzZWNvbmRQcm9taXNl
IGluc3RhbmNlb2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLnRoZW4o
bnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFz
IGZpcnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKHVuZGVm
aW5lZCwgbnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVk
IGFzIGFzIHNlY29uZCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhl
bigzNyknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFz
IGZpcnN0IGFyZ3VtZW50IicpOworCityZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10eXBl
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBA
QAorUHJvbWlzZXMgLSBUZXN0IGJhc2ljIHR5cGVzIC8gZXhjZXB0aW9ucy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKworUHJvbWlzZXMKKworYVByb21pc2UgPSBuZXcgUHJvbWlz
ZSguLi4pCitQQVNTIGFQcm9taXNlIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKK1BBU1MgU3Ry
aW5nKGFQcm9taXNlKSBpcyAnW29iamVjdCBQcm9taXNlXScKK1BBU1MgYVByb21pc2UudGhlbiBp
cyBkZWZpbmVkLgorUEFTUyBhUHJvbWlzZS50aGVuIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9u
CitQQVNTIGFQcm9taXNlLnRoZW4ubGVuZ3RoIGlzIDAKK1BBU1MgYVByb21pc2UuY2F0Y2ggaXMg
ZGVmaW5lZC4KK1BBU1MgYVByb21pc2UuY2F0Y2ggaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24K
K1BBU1MgYVByb21pc2UuY2F0Y2gubGVuZ3RoIGlzIDAKKworUHJvbWlzZSBjb25zdHJ1Y3Rvcgor
CitQQVNTIFByb21pc2UubGVuZ3RoIGlzIDEKK1BBU1MgbmV3IFByb21pc2UoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIG5l
dyBQcm9taXNlKDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9u
IGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBuZXcgUHJvbWlzZSgnaGVsbG8nKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVu
dC4KK1BBU1MgbmV3IFByb21pc2UoW10pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVj
dGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBuZXcgUHJvbWlzZSh7fSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3Qg
YXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNlKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBuZXcgUHJv
bWlzZSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0
aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlcikgeyByZXNvbHZlci5yZXNvbHZlKDEpOyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEZ1bmN0aW9uIGlzIG5v
dCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdQcm9taXNlKCknKS4KKworUHJvbWlzZSBzdGF0aWNz
CisKK1BBU1MgUHJvbWlzZS5mdWxmaWxsIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNT
IFByb21pc2UuZnVsZmlsbC5sZW5ndGggaXMgMQorUEFTUyBQcm9taXNlLmZ1bGZpbGwoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQ
QVNTIFByb21pc2UuZnVsZmlsbCgxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgUHJv
bWlzZS5yZXNvbHZlIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIFByb21pc2UucmVz
b2x2ZS5sZW5ndGggaXMgMQorUEFTUyBQcm9taXNlLnJlc29sdmUoKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIFByb21pc2Uu
cmVzb2x2ZSgxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgUHJvbWlzZS5yZWplY3Qg
aXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgUHJvbWlzZS5yZWplY3QubGVuZ3RoIGlz
IDEKK1BBU1MgUHJvbWlzZS5yZWplY3QoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBl
Y3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIFByb21pc2UucmVqZWN0KDEpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBQcm9taXNlLmZ1bGZpbGwoMSkgaXMgYW4gaW5zdGFu
Y2Ugb2YgUHJvbWlzZQorUEFTUyBQcm9taXNlLnJlc29sdmUoMSkgaXMgYW4gaW5zdGFuY2Ugb2Yg
UHJvbWlzZQorUEFTUyBQcm9taXNlLnJlamVjdCgxKSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNl
CisKK1Byb21pc2VSZXNvbHZlcgorCithUmVzb2x2ZXIgaXMgZnJvbSBuZXcgUHJvbWlzZShmdW5j
dGlvbihhUmVzb2x2ZXIpIHsgLi4uIH0pCitQQVNTIGFSZXNvbHZlciBpcyBhbiBpbnN0YW5jZSBv
ZiBQcm9taXNlUmVzb2x2ZXIKK1BBU1MgU3RyaW5nKGFSZXNvbHZlcikgaXMgJ1tvYmplY3QgUHJv
bWlzZVJlc29sdmVyXScKK1BBU1MgYVJlc29sdmVyLmZ1bGZpbGwgaXMgYW4gaW5zdGFuY2Ugb2Yg
RnVuY3Rpb24KK1BBU1MgYVJlc29sdmVyLmZ1bGZpbGwubGVuZ3RoIGlzIDEKK1BBU1MgYVJlc29s
dmVyLnJlc29sdmUgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgYVJlc29sdmVyLnJl
c29sdmUubGVuZ3RoIGlzIDEKK1BBU1MgYVJlc29sdmVyLnJlamVjdCBpcyBhbiBpbnN0YW5jZSBv
ZiBGdW5jdGlvbgorUEFTUyBhUmVzb2x2ZXIucmVqZWN0Lmxlbmd0aCBpcyAxCitQQVNTIHJlc29s
dmVyRnVsZmlsbCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFJlY2VpdmVyIG9mIGZ1bGZp
bGwgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlci4KK1BBU1MgcmVzb2x2ZXJSZXNvbHZlKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2YgcmVzb2x2ZSBtdXN0IGJlIGEgUHJv
bWlzZVJlc29sdmVyLgorUEFTUyByZXNvbHZlclJlamVjdCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFJlY2VpdmVyIG9mIHJlamVjdCBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyLgorCitQ
cm9taXNlUmVzb2x2ZXIgY29uc3RydWN0b3IKKworUEFTUyBuZXcgUHJvbWlzZVJlc29sdmVyKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3Ig
KGV2YWx1YXRpbmcgJ25ldyBQcm9taXNlUmVzb2x2ZXIoKScpLgorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXR5cGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtdHlwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJQcm9taXNlcyAtIFRlc3QgYmFzaWMgdHlw
ZXMgLyBleGNlcHRpb25zLiIpOworCisvLyB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KworLy8gUHJvbWlzZQorZGVidWcoIiIpOworZGVidWcoIlByb21pc2VzIik7CitkZWJ1ZygiIik7
CisKKy8vIFByb21pc2VzIHNob3VsZCBiZSBvZiB0eXBlIFByb21pc2UuCisKK3ZhciBhUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7IHJlc29sdmVyLnJlc29sdmUoMSk7
IH0pOworCitkZWJ1ZygiYVByb21pc2UgPSBuZXcgUHJvbWlzZSguLi4pIikKK3Nob3VsZEJlVHlw
ZSgiYVByb21pc2UiLCAiUHJvbWlzZSIpOworc2hvdWxkQmUoIlN0cmluZyhhUHJvbWlzZSkiLCAi
J1tvYmplY3QgUHJvbWlzZV0nIik7CisKK3Nob3VsZEJlRGVmaW5lZCgiYVByb21pc2UudGhlbiIp
Oworc2hvdWxkQmVUeXBlKCJhUHJvbWlzZS50aGVuIiwgIkZ1bmN0aW9uIik7CitzaG91bGRCZSgi
YVByb21pc2UudGhlbi5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmVEZWZpbmVkKCJhUHJvbWlzZS5j
YXRjaCIpOworc2hvdWxkQmVUeXBlKCJhUHJvbWlzZS5jYXRjaCIsICJGdW5jdGlvbiIpOworc2hv
dWxkQmUoImFQcm9taXNlLmNhdGNoLmxlbmd0aCIsICIwIik7CisKKworLy8gUHJvbWlzZSBjb25z
dHJ1Y3RvcgorZGVidWcoIiIpOworZGVidWcoIlByb21pc2UgY29uc3RydWN0b3IiKTsKK2RlYnVn
KCIiKTsKKworLy8gTmVlZCBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyLgorc2hvdWxkQmUoIlByb21p
c2UubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSgpIik7CisKKy8vIFBh
cmFtZXRlciBtdXN0IGJlIGEgZnVuY3Rpb24uCitzaG91bGRUaHJvdygibmV3IFByb21pc2UoMSki
LCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQnIik7
CitzaG91bGRUaHJvdygibmV3IFByb21pc2UoJ2hlbGxvJykiLCAiJ1R5cGVFcnJvcjogRXhwZWN0
ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQnIik7CitzaG91bGRUaHJvdygibmV3IFBy
b21pc2UoW10pIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFy
Z3VtZW50JyIpOworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKHt9KSIsICInVHlwZUVycm9yOiBF
eHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCciKTsKK3Nob3VsZFRocm93KCJu
ZXcgUHJvbWlzZShudWxsKSIsICInVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBm
aXJzdCBhcmd1bWVudCciKTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSh1bmRlZmluZWQpIiwg
IidUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50JyIpOwor
c2hvdWxkTm90VGhyb3coIm5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7IHJlc29sdmVy
LnJlc29sdmUoMSk7IH0pIik7CisKKy8vIENhbid0IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uCitz
aG91bGRUaHJvdygiUHJvbWlzZSgpIik7CisKKworLy8gUHJvbWlzZSBzdGF0aWNzCitkZWJ1Zygi
Iik7CitkZWJ1ZygiUHJvbWlzZSBzdGF0aWNzIik7CitkZWJ1ZygiIik7CisKKworLy8gTmVlZCBh
dCBsZWFzdCBvbmUgcGFyYW1ldGVyLgorc2hvdWxkQmVUeXBlKCJQcm9taXNlLmZ1bGZpbGwiLCAi
RnVuY3Rpb24iKTsKK3Nob3VsZEJlKCJQcm9taXNlLmZ1bGZpbGwubGVuZ3RoIiwgIjEiKTsKK3No
b3VsZFRocm93KCJQcm9taXNlLmZ1bGZpbGwoKSIsICInVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBs
ZWFzdCBvbmUgYXJndW1lbnQnIik7CitzaG91bGROb3RUaHJvdygiUHJvbWlzZS5mdWxmaWxsKDEp
Iik7CisKK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5yZXNvbHZlIiwgIkZ1bmN0aW9uIik7CitzaG91
bGRCZSgiUHJvbWlzZS5yZXNvbHZlLmxlbmd0aCIsICIxIik7CitzaG91bGRUaHJvdygiUHJvbWlz
ZS5yZXNvbHZlKCkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50
JyIpOworc2hvdWxkTm90VGhyb3coIlByb21pc2UucmVzb2x2ZSgxKSIpOworCitzaG91bGRCZVR5
cGUoIlByb21pc2UucmVqZWN0IiwgIkZ1bmN0aW9uIik7CitzaG91bGRCZSgiUHJvbWlzZS5yZWpl
Y3QubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZFRocm93KCJQcm9taXNlLnJlamVjdCgpIiwgIidUeXBl
RXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCciKTsKK3Nob3VsZE5vdFRocm93
KCJQcm9taXNlLnJlamVjdCgxKSIpOworCisvLyBTaG91bGQgcmV0dXJuIFByb21pc2Ugb2JqZWN0
cy4KK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5mdWxmaWxsKDEpIiwgIlByb21pc2UiKTsKK3Nob3Vs
ZEJlVHlwZSgiUHJvbWlzZS5yZXNvbHZlKDEpIiwgIlByb21pc2UiKTsKK3Nob3VsZEJlVHlwZSgi
UHJvbWlzZS5yZWplY3QoMSkiLCAiUHJvbWlzZSIpOworCisKKworLy8gUHJvbWlzZVJlc29sdmVy
CitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVyIik7CitkZWJ1ZygiIik7CisKK3Zh
ciBhUmVzb2x2ZXI7Cit2YXIgcmVzb2x2ZXJGdWxmaWxsOwordmFyIHJlc29sdmVyUmVzb2x2ZTsK
K3ZhciByZXNvbHZlclJlamVjdDsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIGFS
ZXNvbHZlciA9IHI7CisKKyAgICAvLyBUaGUgcmVzb2x2ZXIgc2hvdWxkIGJlIG9mIHR5cGUgUHJv
bWlzZVJlc29sdmVyLgorICAgIGRlYnVnKCJhUmVzb2x2ZXIgaXMgZnJvbSBuZXcgUHJvbWlzZShm
dW5jdGlvbihhUmVzb2x2ZXIpIHsgLi4uIH0pIikKKyAgICBzaG91bGRCZVR5cGUoImFSZXNvbHZl
ciIsICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBzaG91bGRCZSgiU3RyaW5nKGFSZXNvbHZlciki
LCAiJ1tvYmplY3QgUHJvbWlzZVJlc29sdmVyXSciKTsKKyAgICBzaG91bGRCZVR5cGUoImFSZXNv
bHZlci5mdWxmaWxsIiwgIkZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmUoImFSZXNvbHZlci5mdWxm
aWxsLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmVUeXBlKCJhUmVzb2x2ZXIucmVzb2x2ZSIs
ICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVzb2x2ZS5sZW5ndGgiLCAi
MSIpOworICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVyLnJlamVjdCIsICJGdW5jdGlvbiIpOwor
ICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVqZWN0Lmxlbmd0aCIsICIxIik7CisKKyAgICAvLyBS
ZXNvbHZlcnMgZnVuY3Rpb25zIG11c3QgYmUgY2FsbGVkIG9uIHRoZSByZXNvbHZlci4KKyAgICBy
ZXNvbHZlckZ1bGZpbGwgPSBhUmVzb2x2ZXIuZnVsZmlsbDsKKyAgICBzaG91bGRUaHJvdygicmVz
b2x2ZXJGdWxmaWxsKCkiLCAiJ1R5cGVFcnJvcjogUmVjZWl2ZXIgb2YgZnVsZmlsbCBtdXN0IGJl
IGEgUHJvbWlzZVJlc29sdmVyJyIpOworICAgIHJlc29sdmVyUmVzb2x2ZSA9IGFSZXNvbHZlci5y
ZXNvbHZlOworICAgIHNob3VsZFRocm93KCJyZXNvbHZlclJlc29sdmUoKSIsICInVHlwZUVycm9y
OiBSZWNlaXZlciBvZiByZXNvbHZlIG11c3QgYmUgYSBQcm9taXNlUmVzb2x2ZXInIik7CisgICAg
cmVzb2x2ZXJSZWplY3QgPSBhUmVzb2x2ZXIucmVqZWN0OworICAgIHNob3VsZFRocm93KCJyZXNv
bHZlclJlamVjdCgpIiwgIidUeXBlRXJyb3I6IFJlY2VpdmVyIG9mIHJlamVjdCBtdXN0IGJlIGEg
UHJvbWlzZVJlc29sdmVyJyIpOworfSk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJQcm9taXNlUmVz
b2x2ZXIgY29uc3RydWN0b3IiKTsKK2RlYnVnKCIiKTsKKworc2hvdWxkVGhyb3coIm5ldyBQcm9t
aXNlUmVzb2x2ZXIoKSIpOworCitkZWJ1ZygiIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorCisvLyBBZGFwdGVkIGZyb20gaHR0cDovL2R4ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhLWNlbnRyYWwvc291cmNlL2RvbS9wcm9taXNlL3Rlc3RzL3Rlc3RfcHJvbWlzZS5o
dG1sIHdoaWNoIHN0YXRlZDoKKy8vICAgIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorLy8gICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLworCitkZXNjcmlwdGlvbigiUHJvbWlzZXMgLSBBZGFwdGVkIGZyb20g
aHR0cDovL2R4ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwvc291cmNlL2RvbS9wcm9taXNl
L3Rlc3RzL3Rlc3RfcHJvbWlzZS5odG1sLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Z1bmN0aW9uIHRlc3QoX2EsIF9iKQoreworICAgIGlmIChpc1Jlc3VsdENvcnJlY3Qo
X2EsIF9iKSkKKyAgICAgICAgdGVzdFBhc3NlZChzdHJpbmdpZnkoX2EpICsgIiBpcyAiICsgc3Ry
aW5naWZ5KF9iKSk7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKHN0cmluZ2lmeShfYSkg
KyAiIHNob3VsZCBiZSAiICsgc3RyaW5naWZ5KF9iKSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VS
ZXNvbHZlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIHJlc29sdmUuIikKKyAgCisgIHZhciBw
cm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5y
ZXNvbHZlKDQyKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAg
IHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWpl
Y3QgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rp
b24gcHJvbWlzZVJlamVjdCgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSByZWplY3QuIik7Cisg
IAorICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAg
cmVzb2x2ZXIucmVqZWN0KDQyKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVz
dEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHJ1blRlc3QoKTsK
KyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhhcyBi
ZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7
Cit9CisKK2Z1bmN0aW9uIHByb21pc2VFeGNlcHRpb24oKSB7CisgIGRlYnVnKCJUZXN0IFByb21p
c2UgcmVqZWN0LiIpOworCisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVz
b2x2ZXIpIHsKKyAgICB0aHJvdyA0MjsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHJ1blRlc3Qo
KTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhh
cyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAg
fSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VHQygpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSBn
Yy4iKTsKKyAgCisgIHZhciByZXNvbHZlcjsKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyKSB7CisgICAgcmVzb2x2ZXIgPSByOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQp
IHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuIC0gcHJvbWlzZSBpcyBzdGlsbCBhbGl2ZSIpOworICAg
IHJ1blRlc3QoKTsKKyAgfSk7CisKKyAgcHJvbWlzZSA9IG51bGw7CisKKyAgZ2MoKTsKKworICBy
ZXNvbHZlci5yZXNvbHZlKDQyKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZUFzeW5jKCkgeworICBk
ZWJ1ZygiVGVzdCBQcm9taXNlIGFzeW5jLiIpOworCisgIHZhciBnbG9iYWwgPSAiZm9vIjsKKyAg
dmFyIGYgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgZGVidWcoIkdsb2JhbCBzaG91
bGQgYmUgZm9vIik7CisgICAgdGVzdChnbG9iYWwsICdmb28nKTsKKworICAgIHIucmVzb2x2ZSg0
Mik7CisKKyAgICBkZWJ1ZygiR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28iKTsKKyAgICB0ZXN0
KGdsb2JhbCwgJ2ZvbycpOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIGRl
YnVnKCJHbG9iYWwgc2hvdWxkIGJlIGJhciIpOworICAgICAgdGVzdChnbG9iYWwsICdiYXInKTsK
KyAgICAgIHJ1blRlc3QoKTsKKyAgICB9LCAwKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAg
ICBnbG9iYWwgPSAiYmFyIjsKKyAgfSk7CisKKyAgZGVidWcoIkdsb2JhbCBzaG91bGQgc3RpbGwg
YmUgZm9vICgyKSIpOworICB0ZXN0KGdsb2JhbCwgJ2ZvbycpOworfQorCitmdW5jdGlvbiBwcm9t
aXNlRG91YmxlVGhlbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSBkb3VibGUgdGhlbi4iKTsK
KworICB2YXIgc3RlcHMgPSAwOworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZSg0Mik7CisgIH0pOworCisgIHByb21p
c2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhh
cyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHN0ZXBzKys7CisgIH0s
IGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgfSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0
ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdChzdGVw
cywgMSk7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlv
bih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7
CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlVGhlbkV4Y2VwdGlvbigpIHsKKyAgZGVidWco
IlRlc3QgUHJvbWlzZSAtIHRoZW4gLyBleGNlcHRpb24uIik7CisKKyAgdmFyIHByb21pc2UgPSBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUoNDIp
OworICB9KTsKKworICBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNz
ZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0aHJvdyAiYm9vaCI7Cisg
IH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKKyAgICB0ZXN0UGFzc2VkKCJDYXRjaCBoYW5kbGVyIChl
LmcuIHRoZSByZWplY3QgaGFuZGxlcikgY2FsbGVkLiIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7
Cit9CisKK2Z1bmN0aW9uIHByb21pc2VUaGVuQ2F0Y2hUaGVuKCkgeworICBkZWJ1ZygiVGVzdCBQ
cm9taXNlIC0gdGhlbiAvIGNhdGNoIC8gdGhlbi4iKTsKKworICB2YXIgcHJvbWlzZSA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZSg0Mik7Cisg
IH0pOworCisgIHZhciBwcm9taXNlMiA9IHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7Cisg
ICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qo
d2hhdCwgNDIpOworICAgIHJldHVybiB3aGF0ICsgMTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgewor
ICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKKwor
ICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJl
c29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Myk7CisgICAgcmV0dXJu
IHdoYXQgKyAxOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5y
ZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pLmNhdGNoKGZ1bmN0aW9uKCkgeworICAgIHRl
c3RGYWlsZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICB9KS50aGVuKGZ1bmN0aW9uKHdo
YXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7Cisg
ICAgdGVzdCh3aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlvbih3aGF0KSB7
CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOwor
fQorCitmdW5jdGlvbiBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhlbigpIHsKKyAgZGVidWcoIlRl
c3QgUHJvbWlzZSAtIHJlamVjdCAvIHRoZW4gLyBjYXRjaCAvIHRoZW4uIik7CisKKyAgdmFyIHBy
b21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJl
amVjdCg0Mik7CisgIH0pOworCisgIHZhciBwcm9taXNlMiA9IHByb21pc2UudGhlbihmdW5jdGlv
bih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIp
OworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFz
IGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcmV0dXJuIHdoYXQgKyAx
OworICB9KTsKKworICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFz
c2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Myk7
CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS5jYXRjaChmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdEZhaWxlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pLnRoZW4oZnVuY3Rpb24o
d2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsK
KyAgICB0ZXN0KHdoYXQsIDQ0KTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlv
biBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhlbjIoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2Ug
LSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuICgyKS4iKTsKKworICB2YXIgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVqZWN0KDQy
KTsKKyAgfSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFz
c2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7
CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS5jYXRjaChmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdFBhc3NlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7
CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0
ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0
LCA0Myk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVJlamVj
dFRoZW5DYXRjaEV4Y2VwdGlvblRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSByZWpl
Y3QgLyB0aGVuIC8gY2F0Y2ggZXhjZXB0aW9uIC8gdGhlbi4iKTsKKworICB2YXIgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVqZWN0KDQy
KTsKKyAgfSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFp
bGVkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0sIGZ1bmN0aW9uKHdoYXQp
IHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0
ZXN0KHdoYXQsIDQyKTsKKyAgICB0aHJvdyh3aGF0ICsgMSk7CisgIH0pLmNhdGNoKGZ1bmN0aW9u
KHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJDYXRjaCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0
ZXN0KHdoYXQsIDQzKTsKKyAgICByZXR1cm4gd2hhdCArIDE7CisgIH0pLnRoZW4oZnVuY3Rpb24o
d2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsK
KyAgICB0ZXN0KHdoYXQsIDQ0KTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlv
biBwcm9taXNlVGhlbkNhdGNoT3JkZXJpbmdSZXNvbHZlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9t
aXNlIC0gdGhlbiAvIGNhdGNoIG9yZGVyaW5nIChyZXNvbHZlKS4iKTsKKworICB2YXIgZ2xvYmFs
ID0gMDsKKyAgdmFyIGYgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgci5yZXNvbHZl
KDQyKTsKKyAgfSk7CisKKyAgZi50aGVuKGZ1bmN0aW9uKCkgeworICAgIGYudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYuY2F0Y2goZnVuY3Rpb24oKSB7
CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
ICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ZGVidWcoIk1hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAyIik7CisgICAgICB0ZXN0KGdsb2Jh
bCwgMik7CisgICAgICBydW5UZXN0KCk7CisgICAgfSwgMCk7CisgIH0pOworfQorCitmdW5jdGlv
biBwcm9taXNlVGhlbkNhdGNoT3JkZXJpbmdSZWplY3QoKSB7CisgIGRlYnVnKCJUZXN0IFByb21p
c2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlamVjdCkuIik7CisKKyAgdmFyIGdsb2JhbCA9
IDA7CisgIHZhciBmID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHIucmVqZWN0KDQy
KTsKKyAgfSkKKworICBmLnRoZW4oZnVuY3Rpb24oKSB7fSwgZnVuY3Rpb24oKSB7CisgICAgZi50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgZ2xvYmFsKys7CisgICAgfSk7CisgICAgZi5jYXRjaChm
dW5jdGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYudGhlbihmdW5jdGlv
bigpIHt9LCBmdW5jdGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBkZWJ1ZygiTWFueSBzdGVwcy4uLiBzaG91bGQgcmV0
dXJuIDIiKTsKKyAgICAgIHRlc3QoZ2xvYmFsLCAyKTsKKyAgICAgIHJ1blRlc3QoKTsKKyAgICB9
LCAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VOZXN0ZWRQcm9taXNlKCkgeworICBk
ZWJ1ZygiVGVzdCBQcm9taXNlIC0gbmVzdGVkIHByb21pc2UiKTsKKworICBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21pc2UoZnVu
Y3Rpb24ocikgeworICAgICAgdGVzdFBhc3NlZCgiTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQi
KTsKKyAgICAgIHIucmVzb2x2ZSg0Mik7CisgICAgfSkpOworICB9KS50aGVuKGZ1bmN0aW9uKHZh
bHVlKSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOwor
ICAgIHRlc3QodmFsdWUsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlv
biBwcm9taXNlTmVzdGVkTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAt
IG5lc3RlZC1uZXN0ZWQgcHJvbWlzZS4iKTsKKworICBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgewor
ICAgICAgdGVzdFBhc3NlZCgiTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQiKTsKKyAgICAgIHIu
cmVzb2x2ZSg0Mik7CisgICAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7IHJldHVybiB3aGF0ICsg
MTsgfSkpOworICB9KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGVzdFBhc3NlZCgiVGhl
bi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3QodmFsdWUsIDQzKTsKKyAgICBy
dW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlV3JvbmdOZXN0ZWRQcm9taXNl
KCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gd3JvbmcgbmVzdGVkIHByb21pc2UuIik7CisK
KyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZl
KG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9t
aXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUoNDIpOworICAgIH0pKTsKKyAgICBy
ZXNvbHZlci5yZWplY3QoNDIpOworICB9KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGVz
dFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3QodmFsdWUs
IDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGVzdEZh
aWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOworfQorCitmdW5jdGlv
biBwcm9taXNlTG9vcCgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHByb21pc2UgbG9vcC4i
KTsKKworICBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJl
c29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgICAgdGVzdFBhc3NlZCgiTmVzdGVk
IHByb21pc2UgaXMgZXhlY3V0ZWQiKTsKKyAgICAgIHIucmVzb2x2ZShuZXcgUHJvbWlzZShmdW5j
dGlvbihyKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZC1uZXN0ZWQgcHJvbWlzZSBpcyBl
eGVjdXRlZCIpOworICAgICAgICByLnJlc29sdmUoNDIpOworICAgICAgfSkpOworICAgIH0pKTsK
KyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2
ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Mik7CisgICAgcnVuVGVzdCgp
OworICB9LCBmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhh
cyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVJlamVjdENvbnN0
cnVjdG9yKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZWplY3QoKS4iKTsK
KworICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVqZWN0KDQyKS50aGVuKGZ1bmN0aW9uKHdoYXQp
IHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0s
IGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQor
CitmdW5jdGlvbiBwcm9taXNlUmVzb2x2ZUNvbnN0cnVjdG9yKCkgeworICBkZWJ1ZygiVGVzdCBQ
cm9taXNlIC0gUHJvbWlzZS5yZXNvbHZlKCkuIik7CisKKyAgdmFyIHByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoNDIpLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4u
cmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5U
ZXN0KCk7CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhh
cyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVJlc29sdmVDb25z
dHJ1Y3Rvck5lc3RlZFByb21pc2UoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBQcm9taXNl
LnJlc29sdmUoKSB3aXRoICBuZXN0ZWQgcHJvbWlzZS4iKTsKKworICB2YXIgcHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZShuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgdGVzdFBhc3NlZCgi
TmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQiKTsKKyAgICByLnJlc29sdmUoNDIpOworICB9LCBm
dW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJTZWNvbmQgYXJndW1lbnQgdG8gUHJvbWlzZSBj
b25zdHJ1Y3RvciBjYWxsZWQuIik7CisgIH0pKS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0
ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0
LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVk
KCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7Cit9CisKK3ZhciB0ZXN0cyA9
IFsKKyAgICBwcm9taXNlUmVzb2x2ZSwKKyAgICBwcm9taXNlUmVqZWN0LAorICAgIHByb21pc2VF
eGNlcHRpb24sCisgICAgcHJvbWlzZUdDLAorICAgIHByb21pc2VBc3luYywKKyAgICBwcm9taXNl
RG91YmxlVGhlbiwKKyAgICBwcm9taXNlVGhlbkV4Y2VwdGlvbiwKKyAgICBwcm9taXNlVGhlbkNh
dGNoVGhlbiwKKyAgICBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhlbiwKKyAgICBwcm9taXNlUmVq
ZWN0VGhlbkNhdGNoVGhlbjIsCisgICAgcHJvbWlzZVJlamVjdFRoZW5DYXRjaEV4Y2VwdGlvblRo
ZW4sCisgICAgcHJvbWlzZVRoZW5DYXRjaE9yZGVyaW5nUmVzb2x2ZSwKKyAgICBwcm9taXNlVGhl
bkNhdGNoT3JkZXJpbmdSZWplY3QsCisgICAgcHJvbWlzZU5lc3RlZFByb21pc2UsCisgICAgcHJv
bWlzZU5lc3RlZE5lc3RlZFByb21pc2UsCisgICAgcHJvbWlzZVdyb25nTmVzdGVkUHJvbWlzZSwK
KyAgICBwcm9taXNlTG9vcCwKKyAgICBwcm9taXNlUmVqZWN0Q29uc3RydWN0b3IsIAorICAgIHBy
b21pc2VSZXNvbHZlQ29uc3RydWN0b3IsCisgICAgcHJvbWlzZVJlc29sdmVDb25zdHJ1Y3Rvck5l
c3RlZFByb21pc2UsCitdOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICBpZiAoIXRlc3RzLmxl
bmd0aCkgeworICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHJldHVybjsKKyAgfQorCisgIGRlYnVn
KCIiKTsKKyAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICB0ZXN0KCk7Cit9CisKK3J1blRl
c3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1jYXRj
aC1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKK2ltcG9ydFNj
cmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4n
KTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CisKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIg
PSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS5j
YXRjaChmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9
IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQ
cm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNv
bmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIHJldHVybiAnYnllJzsKK30pOworCitzZWNv
bmRQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1
bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2J5ZScpOworICB0ZXN0UGFz
c2VkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAg
dGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKK30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOwor
c2hvdWxkQmVUcnVlKCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRC
ZVRydWUoJ3NlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93
KCdmaXJzdFByb21pc2UuY2F0Y2gobnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rp
b24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2Zp
cnN0UHJvbWlzZS5jYXRjaCgzNyknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3Ig
dW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworCityZXNvbHZlci5yZWplY3QoJ2hl
bGxvJyk7CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtZnVs
ZmlsbC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVz
b3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0U2NyaXB0cygnLi9qcy10ZXN0
LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCitqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0gJ3BlbmRp
bmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9taXNlUmVz
dWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdy
ZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5mdWxmaWxs
KCdoZWxsbycpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5k
aW5nJyk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdwcm9taXNlU3RhdGUnLCAnZnVsZmlsbGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKCkgeworICB0ZXN0RmFpbGVkKCdwcm9taXNlIGlzIHJlamVjdGVkLicpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlz
ZS1pbml0LWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJl
LmpzJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit2YXIgdGhpc0luSW5pdDsKK3Zh
ciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICB0
aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSByOworfSk7CisKK3Nob3VsZEJlVHJ1ZSgn
cHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlKCdwcm9taXNlLmNvbnN0cnVj
dG9yJywgJ1Byb21pc2UnKTsKK3Nob3VsZEJlKCd0aGlzSW5Jbml0JywgJ3Byb21pc2UnKTsKK3No
b3VsZEJlVHJ1ZSgncmVzb2x2ZXIgaW5zdGFuY2VvZiBQcm9taXNlUmVzb2x2ZXInKTsKK3Nob3Vs
ZEJlKCdyZXNvbHZlci5jb25zdHJ1Y3RvcicsICdQcm9taXNlUmVzb2x2ZXInKTsKKworc2hvdWxk
VGhyb3coJ25ldyBQcm9taXNlKCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ25ldyBQcm9taXNlKDM3KScsICciVHlwZUVycm9y
OiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKKworc2hvdWxkTm90
VGhyb3coJ3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigpIHsgdGhyb3cgRXJyb3IoImZv
byIpOyB9KScpOworcHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24ocmVzdWx0KSB7Cisg
IGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0
Lm1lc3NhZ2UnLCAnZm9vJyk7Cit9KTsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIp
IHsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgiaGVsbG8iKTsKKyAgdGhyb3cgRXJyb3IoImZvbyIpOwor
fSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAg
dGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0
JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7Cisg
IGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4t
d29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitpbXBvcnRTY3JpcHRz
KCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9KTsKK3ZhciBwcm9taXNlU3Rh
dGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVuZGVmaW5lZDsKK3Byb21pc2Uu
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ2Z1bGZpbGxlZCc7Cisg
IHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlz
ZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsKK30pOworCitz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Jlc29s
dmVyLnJlamVjdCgnaGVsbG8nKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3Rh
dGUnLCAncGVuZGluZycpOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7CisgIHRlc3RGYWls
ZWQoJ3Byb21pc2UgaXMgZnVsZmlsbGVkLicpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdyZWplY3Rl
ZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VSZXN1bHQnLCAnaGVsbG8nKTsK
KyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZXNvbHZl
LWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0U2Ny
aXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicp
OworCit2YXIgZ2xvYmFsID0gdGhpczsKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
dmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJl
c29sdmVyLnJlc29sdmUoJ2hlbGxvJyk7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJz
dFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnRoaXNJbkZ1bGZpbGxD
YWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09
PSBzZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwg
ZnVuY3Rpb24oKSB7CisgIGZhaWwoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXNpbXBsZS1pbi13
b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1By
b21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjYgQEAKK2ltcG9ydFNjcmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsK
KworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CisK
K2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOworCit2YXIgZmly
c3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24obmV3UmVzb2x2ZXIpIHsKKyAgZ2xvYmFs
LnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IG5ld1Jlc29sdmVyOworfSk7CisKK3Zh
ciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Cisg
IGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlzOworICBzaG91bGRCZVRydWUoJ3Ro
aXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZScpOworICBnbG9iYWwucmVzdWx0
ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOwor
ICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZp
cnN0UHJvbWlzZScpOworCityZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdv
cmtlcnMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Q
cm9taXNlLXRoZW4taW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBA
CitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0
IFByb21pc2UuJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworCitnbG9iYWwuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50aGlzSW5Jbml0ID0gdGhpczsK
KyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZp
cnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwudGhpc0luRnVsZmls
bENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVGYWxzZSgndGhpc0luRnVsZmlsbENhbGxiYWNr
ID09PSBmaXJzdFByb21pc2UnKTsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7
Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3No
b3VsZEJlVHJ1ZSgnZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVU
cnVlKCdzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygn
Zmlyc3RQcm9taXNlLnRoZW4obnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24g
b3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0
UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIHNlY29uZCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93
KCdmaXJzdFByb21pc2UudGhlbigzNyknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24g
b3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworCityZXNvbHZlci5mdWxmaWxs
KCdoZWxsbycpOworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21p
c2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNr
cy1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0U2NyaXB0cygnLi9qcy10ZXN0LXByZS5q
cycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit2YXIgZ2xvYmFsID0gdGhp
czsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVlOworCituZXcgUHJvbWlzZShmdW5jdGlv
bihyKSB7IHIuZnVsZmlsbCgnaGVsbG8nKTsgfSkKKyAgLnRoZW4oKQorICAudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgICAgZmluaXNoSlNUZXN0KCk7CisgIH0p
OworCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209600</attachid>
            <date>2013-08-25 13:26:40 -0700</date>
            <delta_ts>2013-08-25 13:54:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120260-20130825132645.patch</filename>
            <type>text/plain</type>
            <size>237578</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcyAt
IGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNlcy4KKyAgICAgICAgLSBEZXNwaXRl
IFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwgdGhlIGltcGxlbWVudGF0aW9uIGlz
IGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIFByb21p
c2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBpbiBFQ01BU2NyaXB0LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgVXBkYXRlIGpzYydzIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHRvIHN0
dWIgb3V0IHRoZSBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suIFRoaXMgbWVhbidz
CisgICAgICAgIHlvdSBjYW4ndCBxdWl0ZSB1c2UgUHJvbWlzZXMgd2l0aCB3aXRoIHRoZSBjb21t
YW5kIGxpbmUgdG9vbCB5ZXQuCisgICAgCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
Lmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlND
OjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBzdXBwb3J0
aW5nIGNvZGUgZm9yIHRoZSBuZXcgc3RhdGljIGxvb2t1cCB0YWJsZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgIEFkZCAzIG5ldyBpZGVudGlmaWVy
cywgIlByb21pc2UiLCAiUHJvbWlzZVJlc29sdmVyIiwgYW5kICJ0aGVuIi4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVy
J3MgY29uc3RydWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpUYXNrQ29udGV4dDo6flRhc2tDb250ZXh0KToK
KyAgICAgICAgQWRkIGEgbmV3IGNhbGxiYWNrIHRvIHRoZSBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSB0byBwb3N0IGEgdGFzayBvbiB0aGUgZW1iZWRkZXIncyBydW5sb29wLgorCisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnByb21pc2VSZXNvbHZlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojpwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSk6CisgICAgICAgIEFkZCBz
dXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVyJ3MgY29uc3RydWN0b3Jz
IGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1By
b21pc2VDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFByb21p
c2UgaW1wbGVtZW50YXRpb24uCisKIDIwMTMtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b0pTVmFsdWUgc2hv
dWxkIGFsbW9zdCBjZXJ0YWlubHkgbm90IHVzZSBqc051bWJlcigpIHNpbmNlIHRoYXQgYXR0ZW1w
dHMgaW50IGNvbnZlcnNpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2UuY3BwCisgICAgcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKKyAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAg
IHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTUsNiAr
NDIyLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgYWxsIDogXAogICAgIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggXAorICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAg
ICAgTmFtZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDkgQEAgTFVU
X0ZJTEVTICs9IFwKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcCBc
CisgICAgcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTmFt
ZVByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5o
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTWF0aE9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTmFtZVByb3RvdHlw
ZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggXApAQCAtODExLDYgKzgxNCwyMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvbWlzZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcCBcCisg
ICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRp
bWUvSlNTY29wZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE1NDU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNyArMjU5LDcgQEAgcHJvdGVjdGVkOgogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9i
YWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNiArNDY4LDEzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Byb21pc2UuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNQcm9taXNlQ2FsbGJhY2suY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUHJvdG90eXBlLmNwcCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyLmNwcCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPg0KQEAgLTU0Myw2ICs1NTAsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQ
cm90b3R5cGUubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5sdXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExMSW50QXNzZW1ibHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0
LmgiIC8+DQpAQCAtODgwLDYgKzg5MCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09OT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09iamVjdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b21pc2VDYWxsYmFjay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTUHJvbWlzZVByb3RvdHlwZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUmVzb2x2ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b3h5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDU3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNiArNjQ5LDIwIEBACiAJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
ICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggKi87IH07CisJCTdDMTVGNjVEMTdDMTk5Q0Uw
MDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9t
aXNlQ2FsbGJhY2suY3BwICovOyB9OworCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQ
cm9taXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTVGNjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICov
OyB9OworCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMw
MDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwICovOyB9OworCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi87IH07CisJ
CTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFGMTdC
RUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8q
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI4
RTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuY3BwICovOyB9OworCQk3QzNC
QTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0JBMjhGMTdDMDM5NTYwMDcyRERD
OSAvKiBKU1Byb21pc2VSZXNvbHZlci5oICovOyB9OworCQk3QzNCQTI5NjE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MDE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDM0JBMjk3MTdDMDM5
NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MTE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk3QzNCQTI5ODE3
QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQkEyOTIxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJN0MzQkEy
OTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MzE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJN0VGRjAwNjQw
RUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAx
Miw4ICsxMDI2LDYgQEAKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyog
V2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4
QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07Ci0JCUJDMThDNTI2MEUxNkZDQTcwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmx1dC5oICovOyB9OwotCQlCQzE4QzUyQTBFMTZGQ0MyMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDNTI5MEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oICovOyB9OwogCQlC
QzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0
NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9Owog
CQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2Qzkg
LyogQXJndW1lbnRzLmggKi87IH07CkBAIC0xNzc5LDYgKzE3OTEsMjMgQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEUx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJl
c29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0JBMjkwMTdDMDM5NTYwMDcy
RERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5MTE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDM0JBMjkyMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5QTE3QzAzQkUxMDA3
MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVy
ZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VGRjAwNjMwRUMwNUE5
QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTIxLDggKzIxNTAs
NiBAQAogCQlCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYw
IC8qIE1hdGhPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTJCMEUx
NkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTYsNyArMjE4Myw2IEBACiAJCUJDNzk1MjM0MEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJvb2xlYW5Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzc5NTIzNTBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0Nl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDZWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM4MTQ5QUYxMkY4OUY1MzAwN0IyQzMyIC8q
IEhlYWRlckRldGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFk
ZXJEZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjUsMTggKzI4
OTEsMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MzQkEyOUEx
N0MwM0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywK
IAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywK
LQkJCQlCQzgxNDlBRjEyRjg5RjUzMDA3QjJDMzIgLyogSGVhZGVyRGV0ZWN0aW9uLmggKi8sCiAJ
CQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCisJCQkJ
N0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAq
LywKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8sCi0JCQkJ
QkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYwIC8qIE1hdGhPYmplY3QubHV0LmggKi8sCiAJCQkJQkMy
NjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8sCiAJ
CQkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLywKLQkJ
CQlCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCTVENTM3MjdEMEUxQzU1RUMwMDIxRTU0OSAvKiBUcmFjaW5nRHRyYWNlLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMzEwMiw2ICszMTI4LDIwIEBACiAJ
CQkJQkMyMkEzOTkwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmggKi8sCiAJCQkJQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovLAogCQkJCUE3Rjk5MzVEMEZE
NzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi8sCisJCQkJN0MxODRFMTgxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8sCisJCQkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovLAorCQkJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8sCisJCQkJN0MxNUY2NUMxN0MxOTlDRTAwNzk0RDQwIC8qIEpT
UHJvbWlzZUNhbGxiYWNrLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0Eg
LyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJN0MzQkEyOEUxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLywKKwkJCQk3QzNCQTI4RjE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCAqLywKKwkJCQk3QzNCQTI5MDE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJN0Mz
QkEyOTExN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3QzNCQTI5MjE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oICovLAogCQkJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKQEAgLTM3NjcsNiArMzgwNyw3IEBACiAJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zODM0LDYgKzM4NzUsNyBAQAogCQkJCUE3RDlBMjk4MTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZD
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTExLDYgKzM5NTMsNyBAQAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zOTc1LDYgKzQwMTgsNyBAQAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2
RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdD
MDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggaW4gSGVhZGVycyAqLywKQEAgLTQxMzUsNyArNDE3OSw2IEBACiAJCQkJQzIxMTIyRTMx
NUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDMThDNTJBMEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhF
MjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MjAwLDExICs0MjQzLDE0IEBACiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3Rv
dHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMTg0RTFC
MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2
NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFBy
b3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTcx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyRDYwRTE3MDcwODAwMkM3RTgyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCNDExMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjE1LDYgKzQyNjEsNyBA
QAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdCMiAvKiBSZWplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJl
cGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBE
QjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNDEsNyArNDI4
OCw2IEBACiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5n
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzUyNjBFMTZGQ0E3MDBC
MzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
M0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDcyOCw2ICs0Nzc0LDcgQEAKIAkJCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZH
RGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyOTgxRkRDMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk4MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVF
MDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NDc0OSw2ICs0Nzk2LDcgQEAKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQx
NTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZH
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyog
REZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENGMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDc2OCw2ICs0ODE2
LDcgQEAKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlERDIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
M0JBMjk2MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC00Nzk3LDYgKzQ4NDYsNyBAQAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJC
NzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE4NEUxRTE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9t
aXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBB
MjcxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTQ4NTgsNiArNDkwOCw3IEBACiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4
IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDky
Nyw2ICs0OTc4LDcgQEAKIAkJCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRF
MUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDk4MSw2ICs1MDMzLDcgQEAKIAkJ
CQkxNDc0QzMzQzE2QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTg0RTIyMTdCRUUyNDAwMDdDQjYzQSAv
KiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEw
N0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNC
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25z
dHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZt
KCkucmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
Y2FsbEZyYW1lLT52bSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5zdHJpbmdDb25zdHJ1Y3RvclRhYmxlOyB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VQcm90b3R5cGVUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnByb21pc2VQcm90b3R5
cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgp
LnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGU7IH0K
IAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJh
c2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAg
ICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKICAgICBtYWNybyhO
YU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNy
byhQcm9taXNlKSBcCisgICAgbWFjcm8oUHJvbWlzZVJlc29sdmVyKSBcCiAgICAgbWFjcm8oUmFu
Z2VFcnJvcikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVnRXhw
KSBcCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN1
YmFycmF5KSBcCiAgICAgbWFjcm8odGVzdCkgXAorICAgIG1hY3JvKHRoZW4pIFwKICAgICBtYWNy
byh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkgXAogICAgIG1hY3JvKHRvSVNP
U3RyaW5nKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDEzIEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk5LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0Vu
YWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogLyogU291cmNlIGZvciBK
U0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0yOTcsNiAr
MzA0LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBt
X2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9lcnJvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fcHJvbWlz
ZVByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9wcm9taXNlU3Ry
dWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fcHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CisgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhp
cywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb21pc2VDYWxs
YmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVjLT52bSgp
LCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAgICAgLy8gQ29u
c3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzIxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0g
Qm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBudW1iZXJDb25z
dHJ1Y3RvciA9IE51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgTnVtYmVyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogZGF0
ZUNvbnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgRGF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBwcm9t
aXNlQ29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMs
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVn
RXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCkpKTsKIApAQCAtMzI5LDYgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIG1f
ZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CisgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHBy
b21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzQ1LDYg
KzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuU3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5z
dHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24u
Z2V0KCksIERvbnRFbnVtKTsKQEAgLTU2NCw2ICs1ODUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGF0ZVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtNTk0LDcgKzYxNywxMSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlKTsKKwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIAog
I2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiAj
aW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwpAQCAtNTgsNiAr
NTksOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKK2NsYXNzIEpT
UHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xh
c3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I7CkBAIC03MCw3ICs3MywxNCBAQCBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNr
Tm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CiAKIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2
PiBFeGVjU3RhdGVTdGFjazsKLSAgICAKKworY2xhc3MgVGFza0NvbnRleHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxUYXNrQ29udGV4dD4geworcHVibGljOgorICAgIHZpcnR1YWwgflRhc2tDb250ZXh0
KCkKKyAgICB7CisgICAgfQorfTsKKwogc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIGJvb2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9u
UHRyIGFsbG93c0FjY2Vzc0Zyb207CkBAIC04Niw2ICs5NiwxMCBAQCBzdHJ1Y3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRlZiBib29sICgqSmF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZEZ1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIEphdmFT
Y3JpcHRFeHBlcmltZW50c0VuYWJsZWRGdW5jdGlvblB0ciBqYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkOworCisgICAgdHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFj
a0Z1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHR5cGVkZWYgdm9p
ZCAoKlF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiwgUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRh
c2tDb250ZXh0Pik7CisgICAgUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRh
c2tUb0V2ZW50TG9vcDsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMTM0LDYgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAg
ICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gbV9kYXRlUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFy
cmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNQcm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVy
PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsK
IAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7
CkBAIC0xNjcsNyArMTgzLDExIEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cmluZ09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9wcm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVJlc29sdmVyU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZUNhbGxiYWNrU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVm
ZmVyUHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zMTIsNiArMzMyLDgg
QEAgcHVibGljOgogICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGVQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAg
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3Ry
dWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CkBAIC0zNTksNyArMzgxLDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IHByb21pc2VSZXNvbHZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29s
dmVyU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlQ2FsbGJhY2tTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorCiAg
ICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBh
cnJheUJ1ZmZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlVGFza0NvbnRleHQgOiBwdWJsaWMg
VGFza0NvbnRleHQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTUHJvbWlzZVRh
c2tDb250ZXh0PiBjcmVhdGUoVk0mIHZtLCBKU1Byb21pc2UqIHByb21pc2UpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTUHJvbWlzZVRhc2tDb250ZXh0KHZtLCBwcm9taXNl
KSk7CisgICAgfQorCisgICAgSlNQcm9taXNlJiBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4gKm1f
cHJvbWlzZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEpTUHJvbWlzZVRhc2tDb250ZXh0KFZN
JiB2bSwgSlNQcm9taXNlKiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgbV9wcm9taXNlLnNldCh2
bSwgcHJvbWlzZSk7CisgICAgfQorCisgICAgU3Ryb25nPEpTUHJvbWlzZT4gbV9wcm9taXNlOwor
fTsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZTo6c19pbmZvID0geyAiUHJvbWlzZSIsICZC
YXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlKSB9OworCitK
U1Byb21pc2UqIEpTUHJvbWlzZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNQcm9taXNlPih2bS5oZWFwKSkgSlNQcm9taXNlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHByb21p
c2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworSlNQcm9t
aXNlKiBKU1Byb21pc2U6OmNyZWF0ZVdpdGhSZXNvbHZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlPih2bS5oZWFwKSkgSlNQcm9taXNlKHZtLCBnbG9iYWxP
YmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CisgICAgcHJvbWlzZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOworCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gSlNQcm9taXNlUmVzb2x2
ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUoKSwg
cHJvbWlzZSk7CisgICAgcHJvbWlzZS0+c2V0UmVzb2x2ZXIodm0sIHJlc29sdmVyKTsKKworICAg
IHJldHVybiBwcm9taXNlOworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitKU1Byb21pc2U6OkpTUHJvbWlzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fc3RhdGUo
UGVuZGluZykKK3sKK30KKwordm9pZCBKU1Byb21pc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOworfQorCit2b2lkIEpTUHJvbWlzZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SlNQcm9taXNlKj4oY2VsbCktPkpTUHJvbWlzZTo6fkpTUHJvbWlzZSgp
OworfQorCit2b2lkIEpTUHJvbWlzZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Byb21pc2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZl
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVzdWx0KTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9mdWxmaWxsQ2FsbGJhY2tzLnNpemUo
KTsgKytpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdWxmaWxsQ2Fs
bGJhY2tzW2ldKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fcmVq
ZWN0Q2FsbGJhY2tzLnNpemUoKTsgKytpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9yZWplY3RDYWxsYmFja3NbaV0pOworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0UmVz
b2x2ZXIoVk0mIHZtLCBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIpCit7CisgICAgbV9yZXNv
bHZlci5zZXQodm0sIHRoaXMsIHJlc29sdmVyKTsKK30KKworSlNQcm9taXNlUmVzb2x2ZXIqIEpT
UHJvbWlzZTo6cmVzb2x2ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc29sdmVyLmdldCgp
OworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0UmVzdWx0KFZNJiB2bSwgSlNWYWx1ZSByZXN1bHQp
Cit7CisgICAgbV9yZXN1bHQuc2V0KHZtLCB0aGlzLCByZXN1bHQpOworfQorCitKU1ZhbHVlIEpT
UHJvbWlzZTo6cmVzdWx0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXN1bHQuZ2V0KCk7Cit9
CisKK3ZvaWQgSlNQcm9taXNlOjpzZXRTdGF0ZShKU1Byb21pc2U6OlN0YXRlIHN0YXRlKQorewor
ICAgIEFTU0VSVChtX3N0YXRlID09IFBlbmRpbmcpOworICAgIG1fc3RhdGUgPSBzdGF0ZTsKK30K
KworSlNQcm9taXNlOjpTdGF0ZSBKU1Byb21pc2U6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdGF0ZTsKK30KKwordm9pZCBKU1Byb21pc2U6OmFwcGVuZENhbGxiYWNrcyhFeGVjU3Rh
dGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bGZpbGxDYWxsYmFjaywgSW50ZXJuYWxGdW5j
dGlvbiogcmVqZWN0Q2FsbGJhY2spCit7CisgICAgLy8gMS4gQXBwZW5kIGZ1bGZpbGxDYWxsYmFj
ayB0byBwcm9taXNlJ3MgZnVsZmlsbCBjYWxsYmFja3MuCisgICAgbV9mdWxmaWxsQ2FsbGJhY2tz
LmFwcGVuZChXcml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYy0+dm0oKSwgdGhpcywg
ZnVsZmlsbENhbGxiYWNrKSk7CisgICAgCisgICAgLy8gMi4gQXBwZW5kIHJlamVjdENhbGxiYWNr
IHRvIHByb21pc2UnIHJlamVjdCBjYWxsYmFja3MuCisgICAgbV9yZWplY3RDYWxsYmFja3MuYXBw
ZW5kKFdyaXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLT52bSgpLCB0aGlzLCByZWpl
Y3RDYWxsYmFjaykpOworCisgICAgLy8gMy4gSWYgcHJvbWlzZSdzIHN0YXRlIGlzIGZ1bGZpbGxl
ZCwgcXVldWUgYSB0YXNrIHRvIHByb2Nlc3MgcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tzIHdp
dGggcHJvbWlzZSdzIHJlc3VsdC4KKyAgICBpZiAobV9zdGF0ZSA9PSBGdWxmaWxsZWQpIHsKKyAg
ICAgICAgcXVldWVUYXNrVG9Qcm9jZXNzRnVsZmlsbENhbGxiYWNrcyhleGVjKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIDQuIElmIHByb21pc2UncyBzdGF0ZSBpcyByZWplY3Rl
ZCwgcXVldWUgYSB0YXNrIHRvIHByb2Nlc3MgcHJvbWlzZSdzIHJlamVjdCBjYWxsYmFja3Mgd2l0
aCBwcm9taXNlJ3MgcmVzdWx0LgorICAgIGlmIChtX3N0YXRlID09IFJlamVjdGVkKSB7CisgICAg
ICAgIHF1ZXVlVGFza1RvUHJvY2Vzc1JlamVjdENhbGxiYWNrcyhleGVjKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKwordm9pZCBKU1Byb21pc2U6OnF1ZXVlVGFza1RvUHJvY2Vzc0Z1bGZp
bGxDYWxsYmFja3MoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50TG9vcCkKKyAgICAgICAg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50
TG9vcChnbG9iYWxPYmplY3QsIHByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzRm9yVGFzaywgSlNQcm9t
aXNlVGFza0NvbnRleHQ6OmNyZWF0ZShleGVjLT52bSgpLCB0aGlzKSk7CisgICAgZWxzZQorICAg
ICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBzdXBwb3J0ZWQuIik7Cit9
CisKK3ZvaWQgSlNQcm9taXNlOjpxdWV1ZVRhc2tUb1Byb2Nlc3NSZWplY3RDYWxsYmFja3MoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlz
LT5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50TG9vcCkKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50TG9vcChnbG9iYWxPYmpl
Y3QsIHByb2Nlc3NSZWplY3RDYWxsYmFja3NGb3JUYXNrLCBKU1Byb21pc2VUYXNrQ29udGV4dDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIHRoaXMpKTsKKyAgICBlbHNlCisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRVJST1I6IEV2ZW50IGxvb3Agbm90IHN1cHBvcnRlZC4iKTsKK30KKwordm9pZCBKU1Byb21p
c2U6OnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzRm9yVGFzayhFeGVjU3RhdGUqIGV4ZWMsIFRhc2tD
b250ZXh0KiB0YXNrQ29udGV4dCkKK3sKKyAgICBKU1Byb21pc2VUYXNrQ29udGV4dCogcHJvbWlz
ZVRhc2tDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNQcm9taXNlVGFza0NvbnRleHQqPih0YXNrQ29u
dGV4dCk7CisgICAgSlNQcm9taXNlJiBwcm9taXNlID0gcHJvbWlzZVRhc2tDb250ZXh0LT5wcm9t
aXNlKCk7CisKKyAgICBwcm9taXNlLnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKGV4
ZWMsIHByb21pc2UucmVzdWx0KCkpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cHJvY2Vzc1JlamVj
dENhbGxiYWNrc0ZvclRhc2soRXhlY1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRl
eHQpCit7CisgICAgSlNQcm9taXNlVGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0
YXRpY19jYXN0PEpTUHJvbWlzZVRhc2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJv
bWlzZSYgcHJvbWlzZSA9IHByb21pc2VUYXNrQ29udGV4dC0+cHJvbWlzZSgpOworCisgICAgcHJv
bWlzZS5wcm9jZXNzUmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKGV4ZWMsIHByb21pc2UucmVzdWx0
KCkpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cHJvY2Vzc0Z1bGZpbGxDYWxsYmFja3NXaXRoVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVChtX3N0YXRl
ID09IEZ1bGZpbGxlZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVsZmlsbENh
bGxiYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gbV9mdWxm
aWxsQ2FsbGJhY2tzW2ldLmdldCgpOworCisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxE
YXRhKTsKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKHZhbHVlKTsKKyAgICAgICAgY2FsbChleGVjLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzLCBhcmd1bWVudHMpOworICAgIH0KKyAgICAKKyAgICBtX2Z1bGZpbGxDYWxsYmFj
a3MuY2xlYXIoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnByb2Nlc3NSZWplY3RDYWxsYmFja3NX
aXRoVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCht
X3N0YXRlID09IFJlamVjdGVkKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yZWpl
Y3RDYWxsYmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IG1f
cmVqZWN0Q2FsbGJhY2tzW2ldLmdldCgpOworCisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNh
bGxEYXRhKTsKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAg
ICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKHZhbHVlKTsKKyAgICAgICAgY2FsbChleGVjLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOworICAgIH0KKyAgICAKKyAgICBtX3JlamVjdENhbGxi
YWNrcy5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNQcm9taXNlX2gKKyNkZWZpbmUgSlNQcm9t
aXNlX2gKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU1Byb21pc2VSZXNvbHZlcjsKK2NsYXNzIEludGVybmFsRnVuY3Rpb247
CitjbGFzcyBUYXNrQ29udGV4dDsKKworY2xhc3MgSlNQcm9taXNlIDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlV2l0aFJlc29sdmVy
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQg
c2V0UmVzb2x2ZXIoVk0mLCBKU1Byb21pc2VSZXNvbHZlciopOworICAgIEpTUHJvbWlzZVJlc29s
dmVyKiByZXNvbHZlcigpIGNvbnN0OworCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFBlbmRp
bmcsCisgICAgICAgIEZ1bGZpbGxlZCwKKyAgICAgICAgUmVqZWN0ZWQsCisgICAgfTsKKworICAg
IHZvaWQgc2V0U3RhdGUoU3RhdGUpOworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CisKKyAgICB2
b2lkIHNldFJlc3VsdChWTSYsIEpTVmFsdWUpOworICAgIEpTVmFsdWUgcmVzdWx0KCkgY29uc3Q7
CisKKyAgICB2b2lkIGFwcGVuZENhbGxiYWNrcyhFeGVjU3RhdGUqLCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdWxmaWxsQ2FsbGJhY2ssIEludGVybmFsRnVuY3Rpb24qIHJlamVjdENhbGxiYWNrKTsKKwor
ICAgIHZvaWQgcXVldWVUYXNrVG9Qcm9jZXNzRnVsZmlsbENhbGxiYWNrcyhFeGVjU3RhdGUqKTsK
KyAgICB2b2lkIHF1ZXVlVGFza1RvUHJvY2Vzc1JlamVjdENhbGxiYWNrcyhFeGVjU3RhdGUqKTsK
KyAgICB2b2lkIHByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOworICAgIHZvaWQgcHJvY2Vzc1JlamVjdENhbGxiYWNrc1dpdGhWYWx1ZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNW
aXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAg
IEpTUHJvbWlzZShWTSYsIFN0cnVjdHVyZSopOworCisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0Z1
bGZpbGxDYWxsYmFja3NGb3JUYXNrKEV4ZWNTdGF0ZSosIFRhc2tDb250ZXh0Kik7CisgICAgc3Rh
dGljIHZvaWQgcHJvY2Vzc1JlamVjdENhbGxiYWNrc0ZvclRhc2soRXhlY1N0YXRlKiwgVGFza0Nv
bnRleHQqKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVC
YXJyaWVyPEpTUHJvbWlzZVJlc29sdmVyPiBtX3Jlc29sdmVyOworICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiBtX3Jlc3VsdDsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEludGVybmFsRnVuY3Rp
b24+ID4gbV9mdWxmaWxsQ2FsbGJhY2tzOworICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SW50ZXJu
YWxGdW5jdGlvbj4gPiBtX3JlamVjdENhbGxiYWNrczsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDYWxsYmFjay5oIgor
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VDYWxsYmFj
azo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTUHJvbWlzZUNhbGxiYWNrKSB9OworCitKU1Byb21pc2VDYWxsYmFjayogSlNQ
cm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VSZXNvbHZlciogcmVz
b2x2ZXIsIEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgSlNQcm9taXNlQ2FsbGJhY2sqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ2FsbGJhY2s+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VDYWxsYmFjayhnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgYWxnb3JpdGhtKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcmVz
b2x2ZXIpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21p
c2VDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDYWxsYmFjazo6SlNQcm9taXNl
Q2FsbGJhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEFsZ29yaXRobSBhbGdvcml0aG0pCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKQorICAgICwgbV9hbGdvcml0aG0oYWxnb3JpdGhtKQoreworfQorCit2
b2lkIEpTUHJvbWlzZUNhbGxiYWNrOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZVJlc29sdmVyKiByZXNvbHZlcikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihl
eGVjLT52bSgpLCAiUHJvbWlzZUNhbGxiYWNrIik7CisgICAgbV9yZXNvbHZlci5zZXQoZXhlYy0+
dm0oKSwgdGhpcywgcmVzb2x2ZXIpOworfQorCit2b2lkIEpTUHJvbWlzZUNhbGxiYWNrOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNQ
cm9taXNlQ2FsbGJhY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlQ2FsbGJhY2sqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlcik7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ2FsbGJhY2s6OmNhbGxQcm9taXNl
Q2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZUNhbGxiYWNrKiBwcm9t
aXNlQ2FsbGJhY2sgPSBqc0Nhc3Q8SlNQcm9taXNlQ2FsbGJhY2sqPihleGVjLT5jYWxsZWUoKSk7
CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZUNhbGxiYWNrLT5tX3Jl
c29sdmVyLmdldCgpOworCisgICAgLy8gMS4gTGV0IHZhbHVlIGJlIHRoZSBmaXJzdCBhcmd1bWVu
dCB0aGF0IGlzIHBhc3NlZCwgYW5kIHVuZGVmaW5lZCBvdGhlcndpc2UuCisgICAgSlNWYWx1ZSB2
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworCisgICAgLy8gMi4gUnVuIHJlc29sdmVyJ3MgYWxn
b3JpdGhtIHdpdGggdmFsdWUgYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIHNldC4KKyAgICBzd2l0
Y2ggKHByb21pc2VDYWxsYmFjay0+bV9hbGdvcml0aG0pIHsKKyAgICBjYXNlIEpTUHJvbWlzZUNh
bGxiYWNrOjpGdWxmaWxsOgorICAgICAgICByZXNvbHZlci0+ZnVsZmlsbChleGVjLCB2YWx1ZSwg
SlNQcm9taXNlUmVzb2x2ZXI6OlJlc29sdmVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIEpTUHJvbWlzZUNhbGxiYWNrOjpSZXNvbHZlOgorICAgICAgICByZXNvbHZl
ci0+cmVzb2x2ZShleGVjLCB2YWx1ZSwgSlNQcm9taXNlUmVzb2x2ZXI6OlJlc29sdmVTeW5jaHJv
bm91c2x5KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEpTUHJvbWlzZUNhbGxiYWNrOjpS
ZWplY3Q6CisgICAgICAgIHJlc29sdmVyLT5yZWplY3QoZXhlYywgdmFsdWUsIEpTUHJvbWlzZVJl
c29sdmVyOjpSZXNvbHZlU3luY2hyb25vdXNseSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0NhbGxUeXBl
IEpTUHJvbWlzZUNhbGxiYWNrOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFByb21pc2VDYWxsYmFj
azsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCisKKworCitjb25zdCBDbGFzc0luZm8g
SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlV3JhcHBlckNhbGxiYWNr
KSB9OworCitKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFj
azo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciwgSlNWYWx1
ZSBjYWxsYmFjaykKK3sKKyAgICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrPigq
ZXhlYy0+aGVhcCgpKSkgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcmVzb2x2ZXIs
IGNhbGxiYWNrKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNQ
cm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZVdyYXBwZXJD
YWxsYmFjazo6SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJh
Y2s6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlUmVzb2x2ZXIqIHJl
c29sdmVyLCBKU1ZhbHVlIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPnZtKCksICJQcm9taXNlV3JhcHBlckNhbGxiYWNrIik7CisgICAgbV9yZXNvbHZlci5zZXQo
ZXhlYy0+dm0oKSwgdGhpcywgcmVzb2x2ZXIpOworICAgIG1fY2FsbGJhY2suc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIGNhbGxiYWNrKTsKK30KKwordm9pZCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNl
V3JhcHBlckNhbGxiYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmVzb2x2ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJh
Y2s6OmNhbGxQcm9taXNlV3JhcHBlckNhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqIHByb21pc2VXcmFwcGVyQ2FsbGJhY2sgPSBqc0Nhc3Q8
SlNQcm9taXNlV3JhcHBlckNhbGxiYWNrKj4oZXhlYy0+Y2FsbGVlKCkpOworCisgICAgSlNQcm9t
aXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZVdyYXBwZXJDYWxsYmFjay0+bV9yZXNvbHZl
ci5nZXQoKTsKKyAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJvbWlzZVdyYXBwZXJDYWxsYmFjay0+
bV9jYWxsYmFjay5nZXQoKTsKKworICAgIC8vIDEuIExldCBhcmd1bWVudCBiZSB0aGUgZmlyc3Qg
YXJndW1lbnQgdGhhdCBpcyBwYXNzZWQsIGFuZCB1bmRlZmluZWQgb3RoZXJ3aXNlLgorICAgIEpT
VmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKworICAgIC8vIDIuIFNldCBjYWxs
YmFjaydzIGNhbGxiYWNrIHRoaXMgdmFsdWUgdG8gcmVzb2x2ZXIncyBhc3NvY2lhdGVkIHByb21p
c2UuCisgICAgLy8gMy4gTGV0IHZhbHVlIGJlIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgY2FsbGJh
Y2sgd2l0aCBhcmd1bWVudCBhcyBhcmd1bWVudC4KKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRh
KTsKKyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGNhbGxiYWNrQXJndW1lbnRzOworICAgIGNhbGxiYWNrQXJndW1lbnRzLmFw
cGVuZChhcmd1bWVudCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBjYWxs
YmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCByZXNvbHZlci0+cHJvbWlzZSgpLCBjYWxsYmFja0Fy
Z3VtZW50cyk7CisKKyAgICAvLyA0LiBJZiBpbnZva2luZyBjYWxsYmFjayB0aHJldyBhbiBleGNl
cHRpb24sIGNhdGNoIGl0IGFuZCBydW4gcmVzb2x2ZXIncyByZWplY3QKKyAgICAvLyAgICB3aXRo
IHRoZSB0aHJvd24gZXhjZXB0aW9uIGFzIGFyZ3VtZW50IGFuZCB0aGUgc3luY2hyb25vdXMgZmxh
ZyBzZXQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFsdWUg
ZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdChleGVjLCBleGNlcHRpb24sIEpTUHJv
bWlzZVJlc29sdmVyOjpSZXNvbHZlU3luY2hyb25vdXNseSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAgLy8gNS4gT3RoZXJ3aXNl
LCBydW4gcmVzb2x2ZXIncyByZXNvbHZlIHdpdGggdmFsdWUgYW5kIHRoZSBzeW5jaHJvbm91cyBm
bGFnIHNldC4KKyAgICByZXNvbHZlci0+cmVzb2x2ZShleGVjLCB2YWx1ZSwgSlNQcm9taXNlUmVz
b2x2ZXI6OlJlc29sdmVTeW5jaHJvbm91c2x5KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0NhbGxUeXBlIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFj
azo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxQcm9taXNlV3JhcHBlckNhbGxiYWNrOworICAgIHJl
dHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBKU1Byb21pc2VDYWxsYmFja19oCisjZGVmaW5lIEpTUHJvbWlzZUNhbGxiYWNrX2gKKworI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpT
UHJvbWlzZVJlc29sdmVyOworCitjbGFzcyBKU1Byb21pc2VDYWxsYmFjayA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKKworICAgIGVudW0gQWxnb3JpdGhtIHsKKyAgICAgICAgRnVsZmlsbCwKKyAgICAgICAgUmVz
b2x2ZSwKKyAgICAgICAgUmVqZWN0LAorICAgIH07CisKKyAgICBzdGF0aWMgSlNQcm9taXNlQ2Fs
bGJhY2sqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpT
UHJvbWlzZVJlc29sdmVyKiwgQWxnb3JpdGhtKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUHJvbWlzZUNhbGxiYWNrKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgQWxnb3JpdGhtKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSosIEpTUHJvbWlzZVJlc29sdmVyKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQ
cm9taXNlQ2FsbGJhY2soRXhlY1N0YXRlKik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVz
b2x2ZXI+IG1fcmVzb2x2ZXI7CisgICAgQWxnb3JpdGhtIG1fYWxnb3JpdGhtOworfTsKKworY2xh
c3MgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewor
cHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGlj
IEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBKU1ZhbHVlIGNhbGxiYWNrKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEpTUHJv
bWlzZVdyYXBwZXJDYWxsYmFjayhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBKU1ZhbHVl
IGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCisgICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2VXcmFwcGVyQ2Fs
bGJhY2soRXhlY1N0YXRlKik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVzb2x2ZXI+IG1f
cmVzb2x2ZXI7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fY2FsbGJhY2s7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZUNhbGxiYWNrX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNl
Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNQcm9t
aXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21p
c2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZlci5oIgorI2luY2x1ZGUg
Ikxvb2t1cC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoSlNQcm9taXNlQ29uc3RydWN0b3IpOworCisvLyBzdGF0aWMgUHJvbWlzZSBmdWxmaWxs
KGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21p
c2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSopOworLy8gc3RhdGljIFByb21pc2Ug
cmVzb2x2ZShhbnkgdmFsdWUpOyAvLyBzYW1lIGFzIGFueSh2YWx1ZSkKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jlc29sdmUoRXhl
Y1N0YXRlKik7CisvLyBzdGF0aWMgUHJvbWlzZSByZWplY3QoYW55IHZhbHVlKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVj
dChFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IubHV0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywg
MCwgRXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Byb21pc2VDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlCisgIGZ1bGZpbGwg
ICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgcmVzb2x2ZSAgICAgICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVu
Y1Jlc29sdmUgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZWplY3QgICAgICAg
ICAgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVqZWN0ICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCitAZW5kCisqLworCitKU1Byb21pc2VDb25zdHJ1Y3RvciogSlNQcm9taXNlQ29u
c3RydWN0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQ
cm90b3R5cGUpCit7CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBKU1Byb21pc2VDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
Y29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb21pc2VQcm90b3R5cGUpOworICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6SlNQcm9taXNlQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSAKK3sKK30K
Kwordm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2UiKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVs
ZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisKKyAgICBKU1ZhbHVlIGZ1
bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Cisg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFz
IGZpcnN0IGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOworICAg
IAorICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisgICAgSlNQcm9taXNl
KiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xv
YmFsT2JqZWN0KTsKKworICAgIC8vIDIuIExldCByZXNvbHZlciBiZSBwcm9taXNlJ3MgYXNzb2Np
YXRlZCByZXNvbHZlci4KKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBwcm9taXNl
LT5yZXNvbHZlcigpOworCisgICAgLy8gMy4gU2V0IGluaXQncyBjYWxsYmFjayB0aGlzIHZhbHVl
IHRvIHByb21pc2UuCisgICAgLy8gNC4gSW52b2tlIGluaXQgd2l0aCByZXNvbHZlciBwYXNzZWQg
YXMgcGFyYW1ldGVyLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGluaXRBcmd1bWVudHM7Cisg
ICAgaW5pdEFyZ3VtZW50cy5hcHBlbmQocmVzb2x2ZXIpOworICAgIGNhbGwoZXhlYywgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgcHJvbWlzZSwgaW5pdEFyZ3VtZW50cyk7CisKKyAgICAv
LyA1LiBJZiBpbml0IHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQsIGFuZCB0aGVuLCBpZiBy
ZXNvbHZlcidzIHJlc29sdmVkIGZsYWcKKyAgICAvLyAgICBpcyB1bnNldCwgcnVuIHJlc29sdmVy
J3MgcmVqZWN0IHdpdGggdGhlIHRocm93biBleGNlcHRpb24gYXMgYXJndW1lbnQuCisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhl
Yy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAg
ICAgcmVzb2x2ZXItPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB9
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitDb25zdHJ1Y3RU
eXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3RQcm9taXNlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsK
K30KKworQ2FsbFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJikKK3sKKyAgICByZXR1cm4gQ2FsbFR5cGVOb25lOworfQorCitib29sIEpTUHJv
bWlzZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9u
PihleGVjLCBFeGVjU3RhdGU6OnByb21pc2VDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8
SlNQcm9taXNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0Z1
bGZpbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKworICAg
IEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMt
PnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZXIoKS0+ZnVsZmlsbChl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0
cnVjdG9yRnVuY1Jlc29sdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJl
c29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZXIo
KS0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
UHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYg
KCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQi
KSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpOworCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpj
cmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwcm9taXNl
LT5yZXNvbHZlcigpLT5yZWplY3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNQ
cm9taXNlQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOworCitjbGFzcyBKU1By
b21pc2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5G
TzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQ
cm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3Ry
dWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VD
b25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTUHJvbWlzZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTUHJvbWlz
ZVByb3RvdHlwZSk7CisKKy8vIFByb21pc2UgdGhlbihbVHJlYXRVbmRlZmluZWRBcz1NaXNzaW5n
XSBvcHRpb25hbCBBbnlDYWxsYmFjayBmdWxmaWxsQ2FsbGJhY2ssIFtUcmVhdFVuZGVmaW5lZEFz
PU1pc3NpbmddIG9wdGlvbmFsIEFueUNhbGxiYWNrIHJlamVjdENhbGxiYWNrKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1bmNUaGVuKEV4
ZWNTdGF0ZSopOworLy8gUHJvbWlzZSBjYXRjaChbVHJlYXRVbmRlZmluZWRBcz1NaXNzaW5nXSBv
cHRpb25hbCBBbnlDYWxsYmFjayByZWplY3RDYWxsYmFjayk7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jQ2F0Y2goRXhlY1N0YXRlKik7
CisKK30KKworI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlByb21pc2VQcm90b3R5cGUiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3Rh
dGU6OnByb21pc2VQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Byb21pc2VQ
cm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oCitA
YmVnaW4gcHJvbWlzZVByb3RvdHlwZVRhYmxlCisgIHRoZW4gICAgICAgICBKU1Byb21pc2VQcm90
b3R5cGVGdW5jVGhlbiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGNhdGNoICAg
ICAgICBKU1Byb21pc2VQcm90b3R5cGVGdW5jQ2F0Y2ggICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCitAZW5kCisqLworCitKU1Byb21pc2VQcm90b3R5cGUqIEpTUHJvbWlzZVByb3RvdHlw
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK3sKKyAgICBKU1Byb21pc2VQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJv
bWlzZVByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24oZXhlYywgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUq
IEpTUHJvbWlzZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VQcm90b3R5cGU6
OkpTUHJvbWlzZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgSlNQcm9taXNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7Cit9
CisKK2Jvb2wgSlNQcm9taXNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgRXhlY1N0YXRlOjpwcm9taXNlUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2Fz
dDxKU1Byb21pc2VQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQor
CitzdGF0aWMgSW50ZXJuYWxGdW5jdGlvbiogd3JhcENhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjYWxsYmFjaywgSlNQcm9taXNl
UmVzb2x2ZXIqIHJlc29sdmVyLCBKU1Byb21pc2VDYWxsYmFjazo6QWxnb3JpdGhtIGFsZ29yaXRo
bSkKK3sKKyAgICBpZiAoIWNhbGxiYWNrLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBK
U1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpLCByZXNvbHZlciwgY2Fs
bGJhY2spOworICAgIHJldHVybiBKU1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2
ZXIsIGFsZ29yaXRobSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9t
aXNlUHJvdG90eXBlRnVuY1RoZW4oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZSog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlKj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIHRoZW4gbXVzdCBiZSBhIFByb21p
c2UiKSk7CisKKyAgICBKU1ZhbHVlIGZ1bGZpbGxDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIGlmICghZnVsZmlsbENhbGxiYWNrLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
ZnVsZmlsbENhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0
IGFyZ3VtZW50IikpOworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlIHJlamVjdENhbGxiYWNrID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFyZWplY3RDYWxsYmFjay5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKHJlamVjdENhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZp
bmVkIGFzIGFzIHNlY29uZCBhcmd1bWVudCIpKTsKKyAgICB9CisKKyAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKTsKKworICAgIC8v
IDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisgICAgSlNQcm9taXNlKiBwcm9taXNl
ID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0
KTsKKworICAgIC8vIDIuIExldCByZXNvbHZlciBiZSBwcm9taXNlJ3MgYXNzb2NpYXRlZCByZXNv
bHZlci4KKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBwcm9taXNlLT5yZXNvbHZl
cigpOworCisgICAgLy8gMy4gTGV0IGZ1bGZpbGxXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVy
IGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQgZnVsZmlsbENhbGxiYWNrIGlmIGZ1bGZpbGxDYWxs
YmFjayBpcworICAgIC8vICAgIG5vdCBvbWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9y
IHJlc29sdmVyIGFuZCBpdHMgZnVsZmlsbCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVy
bmFsRnVuY3Rpb24qIGZ1bGZpbGxXcmFwcGVyID0gd3JhcENhbGxiYWNrKGV4ZWMsIGdsb2JhbE9i
amVjdCwgZnVsZmlsbENhbGxiYWNrLCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZp
bGwpOworCisgICAgLy8gNC4gTGV0IHJlamVjdFdyYXBwZXIgYmUgYSBwcm9taXNlIHdyYXBwZXIg
Y2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCByZWplY3RDYWxsYmFjayBpZiByZWplY3RDYWxsYmFj
ayBpcworICAgIC8vICAgIG5vdCBvbWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJl
c29sdmVyIGFuZCBpdHMgcmVqZWN0IGFsZ29yaXRobSBvdGhlcndpc2UuCisgICAgSW50ZXJuYWxG
dW5jdGlvbiogcmVqZWN0V3JhcHBlciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3Qs
IHJlamVjdENhbGxiYWNrLCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdCk7CisK
KyAgICAvLyA1LiBBcHBlbmQgZnVsZmlsbFdyYXBwZXIgYW5kIHJlamVjdFdyYXBwZXIgdG8gdGhl
IGNvbnRleHQgb2JqZWN0LgorICAgIHRoaXNPYmplY3QtPmFwcGVuZENhbGxiYWNrcyhleGVjLCBm
dWxmaWxsV3JhcHBlciwgcmVqZWN0V3JhcHBlcik7CisKKyAgICAvLyA2LiBSZXR1cm4gcHJvbWlz
ZS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1bmNDYXRjaChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNQcm9taXNlKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1By
b21pc2UqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2
ZXIgb2YgY2F0Y2ggbXVzdCBiZSBhIFByb21pc2UiKSk7CisgICAgCisgICAgSlNWYWx1ZSByZWpl
Y3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghcmVqZWN0Q2FsbGJhY2su
aXNVbmRlZmluZWQoKSkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZWplY3RDYWxsYmFjaywgY2FsbERhdGEpOwor
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0
aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCIpKTsKKyAgICB9CisKKyAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qo
KTsKKworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisgICAgSlNQcm9t
aXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwg
Z2xvYmFsT2JqZWN0KTsKKworICAgIC8vIDIuIExldCByZXNvbHZlciBiZSBwcm9taXNlJ3MgYXNz
b2NpYXRlZCByZXNvbHZlci4KKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIgPSBwcm9t
aXNlLT5yZXNvbHZlcigpOworCisgICAgLy8gMy4gTGV0IGZ1bGZpbGxDYWxsYmFjayBiZSBhIG5l
dyBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQgaXRzIGZ1bGZpbGwgYWxnb3JpdGht
LgorICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bGZpbGxXcmFwcGVyID0gSlNQcm9taXNlQ2FsbGJh
Y2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cHJvbWlzZUNhbGxi
YWNrU3RydWN0dXJlKCksIHJlc29sdmVyLCBKU1Byb21pc2VDYWxsYmFjazo6RnVsZmlsbCk7CisK
KyAgICAvLyA0LiBMZXQgcmVqZWN0V3JhcHBlciBiZSBhIHByb21pc2Ugd3JhcHBlciBjYWxsYmFj
ayBmb3IgcmVzb2x2ZXIgYW5kIHJlamVjdENhbGxiYWNrIGlmIHJlamVjdENhbGxiYWNrIGlzCisg
ICAgLy8gICAgbm90IG9taXR0ZWQgYW5kIGEgcHJvbWlzZSBjYWxsYmFjayBmb3IgcmVzb2x2ZXIg
YW5kIGl0cyByZWplY3QgYWxnb3JpdGhtIG90aGVyd2lzZS4KKyAgICBJbnRlcm5hbEZ1bmN0aW9u
KiByZWplY3RXcmFwcGVyID0gd3JhcENhbGxiYWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgcmVqZWN0
Q2FsbGJhY2ssIHJlc29sdmVyLCBKU1Byb21pc2VDYWxsYmFjazo6UmVqZWN0KTsKKworICAgIC8v
IDUuIEFwcGVuZCBmdWxmaWxsV3JhcHBlciBhbmQgcmVqZWN0V3JhcHBlciB0byB0aGUgY29udGV4
dCBvYmplY3QuCisgICAgdGhpc09iamVjdC0+YXBwZW5kQ2FsbGJhY2tzKGV4ZWMsIGZ1bGZpbGxX
cmFwcGVyLCByZWplY3RXcmFwcGVyKTsKKworICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgorICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UHJvdG90eXBlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VQcm90b3R5cGVfaAorI2RlZmluZSBKU1Byb21p
c2VQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTUHJvbWlzZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2VQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKworcHJpdmF0ZToKKyAg
ICBKU1Byb21pc2VQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNQcm9taXNlUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZlcjo6c19pbmZvID0geyAiUHJv
bWlzZVJlc29sdmVyIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Byb21pc2VSZXNvbHZlcikgfTsKKworSlNQcm9taXNlUmVzb2x2ZXIqIEpTUHJvbWlzZVJlc29s
dmVyOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNQcm9taXNlKiBwcm9t
aXNlKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlcj4odm0uaGVhcCkpIEpTUHJvbWlzZVJlc29sdmVy
KHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHByb21pc2Up
OworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9taXNlUmVzb2x2ZXI6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUmVzb2x2ZXI6OkpTUHJvbWlzZVJlc29sdmVyKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2lzUmVzb2x2ZWQoZmFsc2UpCit7Cit9CisKK3ZvaWQgSlNQcm9t
aXNlUmVzb2x2ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm9taXNlKiBwcm9taXNlKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CisgICAgbV9wcm9taXNlLnNldCh2bSwgdGhpcywgcHJvbWlzZSk7Cit9CisKK3ZvaWQg
SlNQcm9taXNlUmVzb2x2ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VSZXNvbHZlciogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Byb21pc2VSZXNvbHZlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9wcm9taXNlKTsKK30KKworSlNQcm9taXNlKiBKU1Byb21pc2VSZXNvbHZlcjo6cHJvbWlzZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvbWlzZS5nZXQoKTsKK30KKwordm9pZCBKU1Byb21p
c2VSZXNvbHZlcjo6ZnVsZmlsbElmTm90UmVzb2x2ZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIGlmICghbV9pc1Jlc29sdmVkKSB7CisgICAgICAgIG1faXNSZXNvbHZl
ZCA9IHRydWU7CisgICAgICAgIGZ1bGZpbGwoZXhlYywgdmFsdWUpOworICAgIH0KK30KKwordm9p
ZCBKU1Byb21pc2VSZXNvbHZlcjo6cmVzb2x2ZUlmTm90UmVzb2x2ZWQoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghbV9pc1Jlc29sdmVkKSB7CisgICAgICAgIG1f
aXNSZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHJlc29sdmUoZXhlYywgdmFsdWUpOworICAgIH0K
K30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6cmVqZWN0SWZOb3RSZXNvbHZlZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2ZWQpIHsKKyAg
ICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmVqZWN0KGV4ZWMsIHZhbHVlKTsK
KyAgICB9Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXI6OmZ1bGZpbGwoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBSZXNvbHZlck1vZGUgbW9kZSkKK3sKKyAgICAvLyAxLiBMZXQg
cHJvbWlzZSBiZSB0aGUgY29udGV4dCBvYmplY3QncyBhc3NvY2lhdGVkIHByb21pc2UuCisgICAg
Ly8gMi4gU2V0IHByb21pc2UncyBzdGF0ZSB0byBmdWxmaWxsZWQuCisgICAgbV9wcm9taXNlLT5z
ZXRTdGF0ZShKU1Byb21pc2U6OkZ1bGZpbGxlZCk7CisKKyAgICAvLyAzLiBTZXQgcHJvbWlzZSdz
IHJlc3VsdCB0byB2YWx1ZS4KKyAgICBtX3Byb21pc2UtPnNldFJlc3VsdChleGVjLT52bSgpLCB2
YWx1ZSk7CisKKyAgICAvLyA0LiBJZiB0aGUgc3luY2hyb25vdXMgZmxhZyBpcyBzZXQsIHByb2Nl
c3MgcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tzIHdpdGggdmFsdWUuCisgICAgaWYgKG1vZGUg
PT0gUmVzb2x2ZVN5bmNocm9ub3VzbHkpIHsKKyAgICAgICAgbV9wcm9taXNlLT5wcm9jZXNzRnVs
ZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShleGVjLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgLy8gNS4gT3RoZXJ3aXNlLCB0aGUgc3luY2hyb25vdXMgZmxhZyBpcyB1
bnNldCwgcXVldWUgYSB0YXNrIHRvIHByb2Nlc3MgcHJvbWlzZSdzIGZ1bGZpbGwgY2FsbGJhY2tz
IHdpdGggdmFsdWUuCisgICAgbV9wcm9taXNlLT5xdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2Fs
bGJhY2tzKGV4ZWMpOworfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZXNvbHZlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUmVzb2x2ZXJNb2RlIG1vZGUpCit7CisgICAgLy8g
MS4gTGV0IHRoZW4gYmUgbnVsbC4KKyAgICBKU1ZhbHVlIHRoZW4gPSBqc051bGwoKTsKKyAgICAK
KyAgICAvLyAyLiBJZiB2YWx1ZSBpcyBhIEphdmFTY3JpcHQgT2JqZWN0LCBzZXQgdGhlbiB0byB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIEphdmFTY3JpcHQgW1tHZXRdXSBpbnRlcm5hbAorICAg
IC8vICAgIG1ldGhvZCBvZiB2YWx1ZSB3aXRoIHByb3BlcnR5IG5hbWUgdGhlbi4KKyAgICBpZiAo
dmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aGVuID0gdmFsdWUuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50aGVuKTsKKworICAgICAgICAvLyAzLiBJZiBjYWxsaW5nIHRoZSBb
W0dldF1dIGludGVybmFsIG1ldGhvZCB0aHJldyBhbiBleGNlcHRpb24sIGNhdGNoIGl0IGFuZCBy
dW4gcmVqZWN0IHdpdGggdGhlIHRocm93bgorICAgICAgICAvLyAgICBleGNlcHRpb24gYW5kIHRo
ZSBzeW5jaHJvbm91cyBmbGFnIGlmIHNldCwgYW5kIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBz
LgorICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIEpTVmFs
dWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgICAgICBleGVjLT5jbGVh
ckV4Y2VwdGlvbigpOworCisgICAgICAgICAgICByZWplY3QoZXhlYywgZXhjZXB0aW9uLCBtb2Rl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDQuIElmIEph
dmFTY3JpcHQgSXNDYWxsYWJsZSh0aGVuKSBpcyB0cnVlLCBydW4gdGhlc2Ugc3Vic3RlcHMgYW5k
IHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzOgorICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
KyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKHRoZW4sIGNhbGxE
YXRhKTsKKyAgICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICAg
ICAgLy8gNC4xLiBMZXQgZnVsZmlsbENhbGxiYWNrIGJlIGEgcHJvbWlzZSBjYWxsYmFjayBmb3Ig
dGhlIGNvbnRleHQgb2JqZWN0IGFuZCBpdHMgcmVzb2x2ZSBhbGdvcml0aG0uCisgICAgICAgICAg
ICBKU1Byb21pc2VDYWxsYmFjayogZnVsZmlsbENhbGxiYWNrID0gSlNQcm9taXNlQ2FsbGJhY2s6
OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgZ2xvYmFsT2JqZWN0KCktPnByb21pc2VDYWxs
YmFja1N0cnVjdHVyZSgpLCB0aGlzLCBKU1Byb21pc2VDYWxsYmFjazo6UmVzb2x2ZSk7CisKKyAg
ICAgICAgICAgIC8vIDQuMi4gTGV0IHJlamVjdENhbGxiYWNrIGJlIGEgcHJvbWlzZSBjYWxsYmFj
ayBmb3IgdGhlIGNvbnRleHQgb2JqZWN0IGFuZCBpdHMgcmVqZWN0IGFsZ29yaXRobS4KKyAgICAg
ICAgICAgIEpTUHJvbWlzZUNhbGxiYWNrKiByZWplY3RDYWxsYmFjayA9IEpTUHJvbWlzZUNhbGxi
YWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGdsb2JhbE9iamVjdCgpLT5wcm9taXNl
Q2FsbGJhY2tTdHJ1Y3R1cmUoKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIDQuMy4gQ2FsbCB0aGUgSmF2YVNjcmlwdCBbW0Nh
bGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgdGhlbiB3aXRoIHRoaXMgdmFsdWUgdmFsdWUgYW5kIGZ1
bGZpbGxDYWxsYmFjaworICAgICAgICAgICAgLy8gICAgICBhbmQgcmVqZWN0Q2FsbGJhY2sgYXMg
YXJndW1lbnRzLgorICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgdGhlbkFyZ3VtZW50
czsKKyAgICAgICAgICAgIHRoZW5Bcmd1bWVudHMuYXBwZW5kKGZ1bGZpbGxDYWxsYmFjayk7Cisg
ICAgICAgICAgICB0aGVuQXJndW1lbnRzLmFwcGVuZChyZWplY3RDYWxsYmFjayk7CisgICAgICAg
ICAgICBjYWxsKGV4ZWMsIHRoZW4sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdmFsdWUsIHRoZW5Bcmd1
bWVudHMpOworCisgICAgICAgICAgICAvLyA0LjQgSWYgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50
ZXJuYWwgbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQgYW5kIHJ1biBjb250ZXh0
IG9iamVjdCdzCisgICAgICAgICAgICAvLyAgICAgcmVqZWN0IHdpdGggdGhlIHRocm93biBleGNl
cHRpb24gYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIGlmIHNldC4KKyAgICAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
ID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRp
b24oKTsKKworICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBleGNlcHRpb24sIG1vZGUpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDUuIFJ1biBjb250ZXh0IG9iamVjdCdzIGZ1
bGZpbGwgd2l0aCB2YWx1ZSBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LgorICAgIGZ1
bGZpbGwoZXhlYywgdmFsdWUsIG1vZGUpOworfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpy
ZWplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBSZXNvbHZlck1vZGUgbW9kZSkK
K3sKKyAgICAvLyAxLiBMZXQgcHJvbWlzZSBiZSB0aGUgY29udGV4dCBvYmplY3QncyBhc3NvY2lh
dGVkIHByb21pc2UuCisgICAgLy8gMi4gU2V0IHByb21pc2UncyBzdGF0ZSB0byByZWplY3RlZC4K
KyAgICBtX3Byb21pc2UtPnNldFN0YXRlKEpTUHJvbWlzZTo6UmVqZWN0ZWQpOworCisgICAgLy8g
My4gU2V0IHByb21pc2UncyByZXN1bHQgdG8gdmFsdWUuCisgICAgbV9wcm9taXNlLT5zZXRSZXN1
bHQoZXhlYy0+dm0oKSwgdmFsdWUpOworCisgICAgLy8gNC4gSWYgdGhlIHN5bmNocm9ub3VzIGZs
YWcgaXMgc2V0LCBwcm9jZXNzIHByb21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggdmFsdWUu
CisgICAgaWYgKG1vZGUgPT0gUmVzb2x2ZVN5bmNocm9ub3VzbHkpIHsKKyAgICAgICAgbV9wcm9t
aXNlLT5wcm9jZXNzUmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSBzeW5jaHJv
bm91cyBmbGFnIGlzIHVuc2V0LCBxdWV1ZSBhIHRhc2sgdG8gcHJvY2VzcyBwcm9taXNlJ3MgcmVq
ZWN0IGNhbGxiYWNrcyB3aXRoIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+cXVldWVUYXNrVG9Qcm9j
ZXNzUmVqZWN0Q2FsbGJhY2tzKGV4ZWMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNQcm9taXNlUmVzb2x2ZXJfaAorI2RlZmluZSBKU1Byb21pc2VSZXNvbHZlcl9o
CisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQ
cm9taXNlOworCitjbGFzcyBKU1Byb21pc2VSZXNvbHZlciA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAg
IHN0YXRpYyBKU1Byb21pc2VSZXNvbHZlciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNQcm9t
aXNlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTUHJvbWlz
ZSogcHJvbWlzZSgpIGNvbnN0OworCisgICAgdm9pZCBmdWxmaWxsSWZOb3RSZXNvbHZlZChFeGVj
U3RhdGUqLCBKU1ZhbHVlKTsKKyAgICB2b2lkIHJlc29sdmVJZk5vdFJlc29sdmVkKEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOworICAgIHZvaWQgcmVqZWN0SWZOb3RSZXNvbHZlZChFeGVjU3RhdGUqLCBK
U1ZhbHVlKTsKKworICAgIGVudW0gUmVzb2x2ZXJNb2RlIHsKKyAgICAgICAgUmVzb2x2ZVN5bmNo
cm9ub3VzbHksCisgICAgICAgIFJlc29sdmVBc3luY2hyb25vdXNseSwKKyAgICB9OworCisgICAg
dm9pZCBmdWxmaWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFJlc29sdmVyTW9kZSA9IFJlc29sdmVB
c3luY2hyb25vdXNseSk7CisgICAgdm9pZCByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFJl
c29sdmVyTW9kZSA9IFJlc29sdmVBc3luY2hyb25vdXNseSk7CisgICAgdm9pZCByZWplY3QoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgUmVzb2x2ZXJNb2RlID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1Byb21pc2UqKTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNp
dENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAgIEpT
UHJvbWlzZVJlc29sdmVyKFZNJiwgU3RydWN0dXJlKik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNQ
cm9taXNlPiBtX3Byb21pc2U7CisgICAgYm9vbCBtX2lzUmVzb2x2ZWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZVJlc29sdmVyX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJl
c29sdmVyQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcikgfTsKKworSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUHJv
dG90eXBlKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rv
cj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBw
cm9taXNlUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVy
ZSogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgCit7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSogcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNlUmVzb2x2ZXIi
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKK30KKworQ29uc3RydWN0VHlwZSBKU1Byb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERh
dGEmKQoreworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworQ2FsbFR5cGUgSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KQoreworICAgIHJldHVybiBDYWxsVHlwZU5vbmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rv
cl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKKworY2xhc3MgSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VS
ZXNvbHZlckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSosIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJl
RmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
KTsKKworLy8gdm9pZCBmdWxmaWxsKG9wdGlvbmFsIGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNGdWxm
aWxsKEV4ZWNTdGF0ZSopOworLy8gdm9pZCByZXNvbHZlKG9wdGlvbmFsIGFueSB2YWx1ZSk7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZUZ1bmNSZXNvbHZlKEV4ZWNTdGF0ZSopOworLy8gdm9pZCByZWplY3Qob3B0aW9uYWwgYW55
IHZhbHVlKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJl
c29sdmVyUHJvdG90eXBlRnVuY1JlamVjdChFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAi
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlBy
b21pc2VSZXNvbHZlclByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6cHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUubHV0LmgKK0BiZWdpbiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZQorICBm
dWxmaWxsICAgICAgICAgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jRnVsZmlsbCAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29sdmUgICAgICAgICBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZUZ1bmNSZXNvbHZlICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgcmVqZWN0ICAgICAgICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlRnVuY1JlamVj
dCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGUqIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbihleGVjLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisK
K1N0cnVjdHVyZSogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworfQorCitib29sIEpTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4o
ZXhlYywgRXhlY1N0YXRlOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZShleGVjKSwganND
YXN0PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZUZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Byb21pc2VS
ZXNvbHZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlUmVzb2x2ZXIqPihl
eGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgb2YgZnVs
ZmlsbCBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyIikpOworCisgICAgdGhpc09iamVjdC0+ZnVs
ZmlsbElmTm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZShFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhp
c09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIlJlY2VpdmVyIG9mIHJlc29sdmUgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIp
KTsKKworICAgIHRoaXNPYmplY3QtPnJlc29sdmVJZk5vdFJlc29sdmVkKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlRnVuY1JlamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIHJlamVjdCBtdXN0
IGJlIGEgUHJvbWlzZVJlc29sdmVyIikpOworCisgICAgdGhpc09iamVjdC0+cmVqZWN0SWZOb3RS
ZXNvbHZlZChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
X2gKKyNkZWZpbmUgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgZXh0ZXJuIGNvbnN0
IEhhc2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwQ29u
c3RydWN0b3JUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwUHJvdG90eXBlVGFi
bGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHN0cmluZ0NvbnN0cnVjdG9yVGFibGU7CitleHRl
cm4gY29uc3QgSGFzaFRhYmxlIHByb21pc2VQcm90b3R5cGVUYWJsZTsKK2V4dGVybiBjb25zdCBI
YXNoVGFibGUgcHJvbWlzZUNvbnN0cnVjdG9yVGFibGU7CitleHRlcm4gY29uc3QgSGFzaFRhYmxl
IHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOwogCiAvLyBOb3RlOiBQbGF0Zm9ybS5oIHdp
bGwgZW5mb3JjZSB0aGF0IEVOQUJMRShBU1NFTUJMRVIpIGlzIHRydWUgaWYgZWl0aGVyCiAvLyBF
TkFCTEUoSklUKSBvciBFTkFCTEUoWUFSUl9KSVQpIG9yIGJvdGggYXJlIGVuYWJsZWQuIFRoZSBj
b2RlIGJlbG93CkBAIC0xNjEsNiArMTY0LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgICwgcmVnRXhwQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hU
YWJsZT4oSlNDOjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSkKICAgICAsIHJlZ0V4cFByb3RvdHlw
ZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnJlZ0V4cFByb3RvdHlwZVRhYmxlKSkKICAg
ICAsIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6c3RyaW5n
Q29uc3RydWN0b3JUYWJsZSkpCisgICAgLCBwcm9taXNlUHJvdG90eXBlVGFibGUoZmFzdE5ldzxI
YXNoVGFibGU+KEpTQzo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKSkKKyAgICAsIHByb21pc2VDb25z
dHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnByb21pc2VDb25zdHJ1Y3RvclRh
YmxlKSkKKyAgICAsIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRh
YmxlPihKU0M6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKSkKICAgICAsIGlkZW50aWZp
ZXJUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50SWRlbnRp
ZmllclRhYmxlKCkgOiBjcmVhdGVJZGVudGlmaWVyVGFibGUoKSkKICAgICAsIHByb3BlcnR5TmFt
ZXMobmV3IENvbW1vbklkZW50aWZpZXJzKHRoaXMpKQogICAgICwgZW1wdHlMaXN0KG5ldyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlcikKQEAgLTMxMCw2ICszMTYsOSBAQCBWTTo6flZNKCkKICAgICByZWdF
eHBDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHJlZ0V4cFByb3RvdHlwZVRh
YmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUtPmRlbGV0ZVRh
YmxlKCk7CisgICAgcHJvbWlzZVByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIHBy
b21pc2VDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIHByb21pc2VSZXNvbHZl
clByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwogCiAgICAgZmFzdERlbGV0ZShjb25zdF9j
YXN0PEhhc2hUYWJsZSo+KGFycmF5Q29uc3RydWN0b3JUYWJsZSkpOwogICAgIGZhc3REZWxldGUo
Y29uc3RfY2FzdDxIYXNoVGFibGUqPihhcnJheVByb3RvdHlwZVRhYmxlKSk7CkBAIC0zMjgsNiAr
MzM3LDkgQEAgVk06On5WTSgpCiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+
KHJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFz
aFRhYmxlKj4ocmVnRXhwUHJvdG90eXBlVGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nh
c3Q8SGFzaFRhYmxlKj4oc3RyaW5nQ29uc3RydWN0b3JUYWJsZSkpOworICAgIGZhc3REZWxldGUo
Y29uc3RfY2FzdDxIYXNoVGFibGUqPihwcm9taXNlUHJvdG90eXBlVGFibGUpKTsKKyAgICBmYXN0
RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZUNvbnN0cnVjdG9yVGFibGUpKTsK
KyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlVGFibGUpKTsKIAogICAgIGRlbGV0ZSBlbXB0eUxpc3Q7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cENvbnN0cnVjdG9y
VGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwUHJvdG90eXBlVGFibGU7CiAg
ICAgICAgIGNvbnN0IEhhc2hUYWJsZSogc3RyaW5nQ29uc3RydWN0b3JUYWJsZTsKKyAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiBwcm9taXNlUHJvdG90eXBlVGFibGU7CisgICAgICAgIGNvbnN0IEhh
c2hUYWJsZSogcHJvbWlzZUNvbnN0cnVjdG9yVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZSogcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGU7CiAgICAgICAgIAogICAgICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsODggQEAKKzIwMTMtMDgtMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUHJvbWlzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDI2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9m
IFByb21pc2VzIC0gaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3Byb21pc2VzLgorICAgICAg
ICAtIERlc3BpdGUgUHJvbWlzZXMgYmVpbmcgZGVmaW5lZCBpbiB0aGUgRE9NLCB0aGUgaW1wbGVt
ZW50YXRpb24gaXMgYmVpbmcgcHV0IGluIEpTQworICAgICAgICAgIGluIHByZXBhcmF0aW9uIGZv
ciB0aGUgUHJvbWlzZXMgZXZlbnR1YWxseSBiZWluZyBkZWZpbmVkIGluIEVDTUFTY3JpcHQuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Q
cm9taXNlLWNoYWluLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1leGNlcHRp
b24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vy
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvanMvUHJvbWlzZS1pbml0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1By
b21pc2UtcmVqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LWNoYWluLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdv
cmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10
aGVuLWV4Y2VwdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVzb2x2
ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Ut
cmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJv
bWlzZS1yZXNvbHZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUt
ZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9t
aXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1z
aW1wbGUtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc2lt
cGxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tz
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvanMvUHJvbWlzZS10eXBlcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pz
L1Byb21pc2UuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoK
KyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0VGFzay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0Q2Fs
bGJhY2s6On5KU0dsb2JhbE9iamVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2xv
YmFsT2JqZWN0Q2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjazo6SlNHbG9iYWxPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpK
U0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0dsb2JhbE9iamVjdFRhc2s6On5KU0dsb2JhbE9iamVjdFRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUpOgorICAgICAgICBBZGQgYSBuZXcgdGFzayB0eXBl
IHRvIGJlIHVzZWQgd2l0aCB0aGUgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUncyBuZXcgUXVldWVU
YXNrVG9FdmVudExvb3AgY2FsbGJhY2suCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRh
c2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6
CisgICAgICAgIEltcGxlbWVudCB0aGUgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgY2FsbGJhY2ss
IFF1ZXVlVGFza1RvRXZlbnRMb29wLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICBBbGwgdXNpbmcgSlNNYWluVGhyZWFkRXhlY1N0YXRl
IGFzIGEgc2ltcGxlIFJBSUkgb2JqZWN0LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50
ZXJydXB0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAgICAgQWRkIGEgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgYW5kIGltcGxlbWVudCBRdWV1ZVRhc2tUb0V2ZW50TG9vcC4gRm9y
d2FyZCB0aGUgb3RoZXIgY2FsbGJhY2tzCisgICAgICAgIHRvIEpTR2xvYmFsT2JqZWN0IHNvIHRo
ZXkgcmV0YWluIHRoZWlyIGV4aXN0aW5nIGJlaGF2aW9yLgorCiAyMDEzLTA4LTI1ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEphdmFTY3JpcHQgYmluZGlu
ZyBmb3IgQ2xpcGJvYXJkOjp0eXBlcyBtb3JlIG5vcm1hbApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDYgKzIzMzIsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3Rv
bS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgXAogICAgICBiaW5kaW5n
cy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcCBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgXAogICAgICBiaW5k
aW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBcCkBAIC0xMzUzLDYgKzEzNTQsNyBA
QCBIRUFERVJTICs9IFwKICAgICBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBcCiAgICAgYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmggXAorICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oIFwKICAgICBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01Q
bHVnaW5BcnJheUN1c3RvbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTYx
MzgsNiArMTYxMzgsMjAgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIj4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NSW1wbGVtZW50YXRp
b25DdXN0b20uY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KQEAgLTIwNjc3LDYgKzIwNjkxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXEpTRGljdGlvbmFyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcSlNET01CaW5kaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3RUYXNrLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdpbmRvd0Jhc2UuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93Q3VzdG9tLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdpbmRvd1No
ZWxsLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0ODIsNiArNDQ4Miw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5n
c1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCI+CisgICAgICA8RmlsdGVy
PmJpbmRpbmdzXGpzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0x
MTU3OCw2ICsxMTU4MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU0RPTUdsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXEpTRXJyb3JIYW5kbGVyLmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU0NTc4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTM1LDYgKzE5MzUsOCBAQAogCQk3QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyog
U2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUZENEZG
NDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgz
IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFw
aGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICov
OyB9OworCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJE
RDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9Owor
CQk3QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdG
OThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CiAJCTdDNTIyRDRC
MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAv
KiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0M1MzQzRkMxN0I3NEI2MzAwNDIzMkYw
IC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYw
IC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5oICovOyB9OwpAQCAtODMzMCw2ICs4MzMyLDggQEAKIAkJN0FGMTFB
NTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJy
ZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtw
b2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3N0I2MDAz
NUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RU
YXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyQkREM0MxN0M3Rjk4QjAw
MzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDRBMTVCNDc4QjIwMDlCN0M5
NSAvKiBJbnNwZWN0b3JPdmVybGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvck92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MzQz
RkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1OTgsMTIgKzE4NjAyLDEyIEBA
CiAJCQkJQkNDRTU4QjQxMDYxRTkyNTAwOEZCMzVBIC8qIENvbnN0cnVjdG9ycyAqLywKIAkJCQlC
QzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovLAogCQkJCTE0REZCMzNGMEE3REY3
NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkJOTNGOEIzMDYwQTMwMEZFQTAw
RjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLywKIAkJCQk0OUIzNzYwQTE1QzZDNjg0MDA1
OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgKi8sCiAJCQkJNDlCMzc2MEIxNUM2QzY4NDAwNTkxMzFE
IC8qIEFycmF5VmFsdWUuaCAqLywKIAkJCQk5NzNBQTNGMjE1RDA4OEYwMDBFMzhBODUgLyogQmlu
ZGluZ1N0YXRlLmNwcCAqLywKIAkJCQk5NzNBQTNGMzE1RDA4OEYwMDBFMzhBODUgLyogQmluZGlu
Z1N0YXRlLmggKi8sCiAJCQkJQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlw
dFNvdXJjZVByb3ZpZGVyLmggKi8sCi0JCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENv
ZGVHZW5lcmF0b3JKUy5wbSAqLywKIAkJCQkzMTJENjdCMDE1MzU2OTFGMDA1NjNEMEQgLyogRGlj
dGlvbmFyeS5jcHAgKi8sCiAJCQkJMzE2MDIzRUYxNTMyQzQwQzAwRDUwRkY0IC8qIERpY3Rpb25h
cnkuaCAqLywKIAkJCQlCQzUzREE2MTExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRh
YmxlTWFwLmNwcCAqLywKQEAgLTE4NjIyLDYgKzE4NjI2LDggQEAKIAkJCQk5M0I3MEQ0ODA5RUIw
QzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8sCiAJCQkJRTFDMzZDQkMwRUIwODA2MjAw
NzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAqLywKIAkJCQlFMUMzNkMwMjBFQjA3NkQ2
MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAqLywKKwkJCQk3QzJCREQzQjE3QzdGOThC
MDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLywKKwkJCQk3QzJCREQzQzE3
QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi8sCiAJCQkJQkM2OTMy
NzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8sCiAJCQkJQkM2OTMy
NzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovLAogCQkJCUJDQkZCNTNB
MERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCAqLywKQEAgLTIzNzE3LDYg
KzIzNzIzLDcgQEAKIAkJCQk0OUU5MTFEMDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURCMUJDNkExMDcxNUE2NDAwRUZBQTQ5IC8q
IFRyYW5zZm9ybVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0NUJGRDQxM0NGODA5MDAw
Q0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzJCREQzRTE3
QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTdCNDkxNjE2QTlCMDk0MDAxQzg4MzkgLyogVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFEMjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3
QUQgLyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjgwLDYgKzI2Mjg3LDcgQEAK
IAkJCQlCQzBCMzU4NzE0QzRGOTgzMDA1NUUyMkEgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyOUEzMDlBQzE1NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMEIzNTgzMTRDNEY5NTQwMDU1RTIyQSAvKiBSdW5Mb29wTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0MyQkREM0QxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFs
T2JqZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxRTBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZV9hcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyMDBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1
NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmNwcCIKICNpbmNsdWRlICJKU0RPTUZvcm1EYXRhQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5jcHAiCisjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3RUYXNrLmNwcCIKICNpbmNsdWRlICJKU0RPTUltcGxlbWVudGF0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU0dsb2JhbE9iamVjdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gY3JlYXRlKEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tU
b0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8VGFz
a0NvbnRleHQ+IHRhc2tDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKU0dsb2JhbE9iamVjdENhbGxiYWNrKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tD
b250ZXh0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3RDYWxsYmFjaygp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgY2FsbCgpCisgICAgeworICAgICAgICBpZiAoIWNh
bkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVmUHRy
PEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CisgICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKG1fZ2xvYmFsT2JqZWN0LT52bSgpKTsKKworICAgICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworCisgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBtX2dsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgICAgICAvLyBXZSB3aWxsIGZhaWwgdG8gZ2V0IHRoZSBjb250ZXh0IGlmIHRo
ZSBmcmFtZSBoYXMgYmVlbiBkZXRhY2hlZC4KKyAgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFdoZW4gb24gdGhlIG1haW4gdGhyZWFkIChlLmcu
IHRoZSBkb2N1bWVudCdzIHRocmVhZCksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvCisgICAgICAg
IC8vIHB1c2ggdGhlIGN1cnJlbnQndCBFeGVjU3RhdGUgb24gdG8gdGhlIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZSBzdGFjay4KKyAgICAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAg
ICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKKyAgICAg
ICAgICAgIG1fZnVuY3Rpb25QdHIoZXhlYywgbV90YXNrQ29udGV4dC5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9mdW5jdGlvblB0cihleGVjLCBtX3Rhc2tDb250ZXh0Lmdl
dCgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxPYmplY3RDYWxsYmFjayhKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVl
dWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVm
UHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICAgICAgOiBBY3RpdmVET01DYWxsYmFj
ayhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgLCBtX2ds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCkKKyAgICAgICAgLCBt
X2Z1bmN0aW9uUHRyKGZ1bmN0aW9uUHRyKQorICAgICAgICAsIG1fdGFza0NvbnRleHQodGFza0Nv
bnRleHQpCisgICAgeworICAgIH0KKworICAgIFN0cm9uZzxKU0RPTUdsb2JhbE9iamVjdD4gbV9n
bG9iYWxPYmplY3Q7CisgICAgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZl
bnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBtX2Z1bmN0aW9uUHRyOworICAgIFJlZlB0cjxUYXNr
Q29udGV4dD4gbV90YXNrQ29udGV4dDsKK307CisKK0pTR2xvYmFsT2JqZWN0VGFzazo6SlNHbG9i
YWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVu
Y3Rpb25QdHIsIFBhc3NSZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQorICAgIDogbV9j
YWxsYmFjayhKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvblB0ciwgdGFza0NvbnRleHQpKQoreworfQorCitKU0dsb2JhbE9iamVjdFRhc2s6On5KU0ds
b2JhbE9iamVjdFRhc2soKQoreworfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0VGFzazo6cGVyZm9y
bVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit7CisgICAgbV9jYWxsYmFjay0+Y2FsbCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTRE9NR2xv
YmFsT2JqZWN0VGFza19oCisjZGVmaW5lIEpTRE9NR2xvYmFsT2JqZWN0VGFza19oCisKKyNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdENhbGxi
YWNrOworCitjbGFzcyBKU0dsb2JhbE9iamVjdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SlNHbG9iYWxP
YmplY3RUYXNrPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpH
bG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0
aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPEpTQzo6VGFza0NvbnRleHQ+IHRhc2tDb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBKU0dsb2JhbE9iamVjdFRh
c2soZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdFRhc2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCitwcml2YXRlOgorICAgIEpTR2xvYmFs
T2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxK
U0M6OlRhc2tDb250ZXh0Pik7CisKKyAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4g
bV9jYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpT
RE9NR2xvYmFsT2JqZWN0VGFza19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9i
amVjdFRhc2suaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpT
Tm9kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUwLDcgKzUxLDcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IAogCiBjb25zdCBDbGFzc0luZm8gSlNET01X
aW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5n
LCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFT
Y3JpcHRFeHBlcmltZW50c0VuYWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFs
bG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5m
bywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQs
ICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93
QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4g
d2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSkKQEAgLTE2Myw2ICsxNjQsMTIgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRF
eHBlcmltZQogICAgIHJldHVybiBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0RXhwZXJpbWVu
dHNFbmFibGVkKCk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50
TG9vcChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQ
YXNzUmVmUHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKK3sKKyAgICBjb25zdCBKU0RPTVdp
bmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2Uq
PihvYmplY3QpOworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soSlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NV2luZG93QmFzZSopdGhpc09i
amVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7Cit9CisKIHZvaWQgSlNET01XaW5kb3dC
YXNlOjp3aWxsUmVtb3ZlRnJvbVdpbmRvd1NoZWxsKCkKIHsKICAgICBzZXRDdXJyZW50RXZlbnQo
MCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJy
dXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJv
b2wgamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisKKyAgICAgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFz
a1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250
ZXh0Pik7CisgICAgICAgIAogICAgICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogCiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRo
aXNWYWx1ZSwgZXhjZXB0aW9uKTsKICAgICB9OwogCi1wcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
SlNNYWluVGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgICAgICA6IG1f
cHJldmlvdXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3Bw
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oIgogCiAjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmgiCiAjaW5jbHVkZSAi
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNDYsOCArNDcsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkpTRE9NR2xvYmFsT2Jq
ZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UpIH07CiAKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJv
bSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZElu
dGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsICZxdWV1ZVRhc2tU
b0V2ZW50TG9vcCB9OworCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQ
dHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCi0gICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwg
c3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSkpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwg
c3RydWN0dXJlLCBub3JtYWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQog
ICAgICwgbV9pbXBsKGltcGwpCiB7CiB9CkBAIC02OCw2ICs3MSwzOCBAQCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBKU1dvcmtlckdsb2JhbFNjCiAgICAgcmV0dXJuIG1faW1wbC5nZXQoKTsKIH0K
IAorCitib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4g
SlNHbG9iYWxPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20ob2JqZWN0LCBleGVjKTsKK30KKworYm9v
bCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRz
UHJvZmlsaW5nKG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnN1
cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsK
K30KKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2Jq
ZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtlckds
b2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZChvYmplY3QpOworfQorCit2b2lkIEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0
LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1
bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4
dCkKK3sKKyAgICBjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4ob2JqZWN0KTsKKyAgICB0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKEpTR2xvYmFsT2Jq
ZWN0VGFzazo6Y3JlYXRlKChKU0RPTUdsb2JhbE9iamVjdCopdGhpc09iamVjdCwgZnVuY3Rpb25Q
dHIsIHRhc2tDb250ZXh0KSk7Cit9CisKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQog
ewogICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtlckdsb2JhbFNjb3BlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
aAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6R2xvYmFs
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKKyAgICAg
ICAgc3RhdGljIGNvbnN0IEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgc19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZTsKKworICAgICAgICBzdGF0aWMgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSopOworICAgICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQo
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgYm9vbCBqYXZhU2Ny
aXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29w
Q2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0Pik7CisKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mLCBK
U0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+KTsKICAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTQ1Nzgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NSBA
QAorMjAxMy0wOC0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBQcm9taXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIwMjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGFkYXB0ZWQgZnJvbSB0aGUgTW96aWxsYSBhbmQgQmxp
bmsgcHJvamVjdHMuCisKKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxs
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtYWxyZWFk
eS1mdWxmaWxsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWFscmVh
ZHktcmVqZWN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21p
c2UtYWxyZWFkeS1yZWplY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21p
c2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
UHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJv
bWlzZS1jaGFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1jaGFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWV4Y2VwdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3Jr
ZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWpl
Y3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2
ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1
bGZpbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2lt
cGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLWluLXdvcmtl
cnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1j
YWxsYmFja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
dGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vy
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNh
bGxiYWNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdHlwZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9Qcm9taXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVz
b3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJz
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUt
aW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlz
ZS1zaW1wbGUtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJj
ZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmpzOiBB
ZGRlZC4KKwogMjAxMy0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZsb2F0VHlwZWRBcnJheUFkYXB0b3I6OnRvSlNWYWx1ZSBzaG91bGQgYWxtb3N0IGNl
cnRhaW5seSBub3QgdXNlIGpzTnVtYmVyKCkgc2luY2UgdGhhdCBhdHRlbXB0cyBpbnQgY29udmVy
c2lvbnMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxl
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWFscmVhZHktZnVsZmlsbGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxsZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2ZvbycpOworICByZXNvbHZlci5mdWxmaWxsKCdm
dWxmaWxsJyk7CisgIHJlc29sdmVyLnJlc29sdmUoJ3Jlc29sdmUnKTsKKyAgcmVzb2x2ZXIucmVq
ZWN0KCdyZWplY3QnKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1
bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2ZvbycpOwor
ICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3Rl
ZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlamVjdGVkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1y
ZWplY3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworUEFTUyByZXN1bHQgaXMgImZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxy
ZWFkeS1yZWplY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1hbHJlYWR5LXJlamVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29s
dmVyLnJlamVjdCgnZm9vJyk7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2Z1bGZpbGwnKTsKKyAgcmVz
b2x2ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICByZXNvbHZlci5yZWplY3QoJ3JlamVjdCcpOwor
fSkudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1
bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFk
eS1yZXNvbHZlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitU
ZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQg
aXMgImZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJl
c29sdmVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
YWxyZWFkeS1yZXNvbHZlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHZhciBhbm90aGVyUmVzb2x2ZXI7
CisgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyBhbm90aGVyUmVz
b2x2ZXIgPSByOyB9KSk7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2Z1bGZpbGwnKTsKKyAgcmVzb2x2
ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICByZXNvbHZlci5yZWplY3QoJ3JlamVjdCcpOworCisg
IGFub3RoZXJSZXNvbHZlci5mdWxmaWxsKCdmb28nKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cmVzdWx0JywgJ2ZvbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0
ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNh
dGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1jYXRjaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAor
VGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgdGhpc0lu
SW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlIGluc3RhbmNl
b2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHNlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNl
IGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNlLmNhdGNoKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1
bWVudC4KK1BBU1MgZmlyc3RQcm9taXNlLmNhdGNoKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQu
CitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQ
QVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNT
IHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHJlc3VsdCBpcyAiYnllIgorUEFTUyBmdWxmaWxsZWQK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdv
cmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWNhdGNoLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTkgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdv
cmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRy
dWUKK1BBU1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVl
CitQQVNTIFtXb3JrZXJdIHNlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlLmNhdGNoKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1
bWVudC4KK1BBU1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlLmNhdGNoKDM3KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3Qg
YXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQ
cm9taXNlIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0g
c2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAiaGVsbG8iCitQ
QVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAiYnllIgorUEFTUyBbV29ya2VyXSBmdWxmaWxsZWQKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29y
a2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdvcmtl
cigncmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgcmVzb2x2ZXI7CisKK3ZhciBmaXJzdFBy
b21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNvbHZlcikgeworICB3aW5kb3cudGhp
c0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNl
Y29uZFByb21pc2UgPSBmaXJzdFByb21pc2UuY2F0Y2goZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdp
bmRvdy50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlzOworICBzaG91bGRCZUZhbHNlKCd0aGlz
SW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZScpOworICBzaG91bGRCZVRydWUoJ3Ro
aXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZScpOworICB3aW5kb3cucmVzdWx0
ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOwor
ICByZXR1cm4gJ2J5ZSc7Cit9KTsKKworc2Vjb25kUHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3Vs
dCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3Jlc3VsdCcsICdieWUnKTsKKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpT
VGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlz
SW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgnZmlyc3RQcm9taXNlIGlu
c3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdzZWNvbmRQcm9taXNlIGluc3RhbmNl
b2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLmNhdGNoKG51bGwpJywg
JyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBh
cmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UuY2F0Y2goMzcpJywgJyJUeXBl
RXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVu
dCInKTsKKworcmVzb2x2ZXIucmVqZWN0KCdoZWxsbycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgUHJvbWlzZS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1
bHQgaXMgImhlbGxvIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbzIiCitQ
QVNTIHJlamVjdGVkCitQQVNTIHJlc3VsdCBpcyAiZXJyb3IiCitQQVNTIHJlamVjdGVkCitQQVNT
IHJlc3VsdCBpcyAiZXJyb3IyIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJyZWNv
dmVyZWQiCitQQVNTIG9wZXJhdGlvbiBpcyAiYXN5bmNocm9ub3VzIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1jaGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWNoYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
dmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocikge3Jl
c29sdmVyID0gcjt9KTsKK3ZhciBvcGVyYXRpb247CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAtIGNvbnRpbnVlCisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxl
ZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3Jlc3VsdCcsICdoZWxsbycpOworICByZXR1cm4gJ2hlbGxvMic7Cit9LCBmdW5jdGlvbigpIHsK
KyAgdGVzdEZhaWxlZCgncnJlamVjdGVkJyk7Cit9KS50aGVuKCkgIC8vIHBhc3MgdGhyb3VnaAor
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7ICAvLyBmdWxmaWxsZWQgLSB0aHJvdyBhbiBleGNlcHRp
b24KKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvMicpOworICB0aHJvdyAn
ZXJyb3InOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7Cit9KS50
aGVuKGZ1bmN0aW9uKCkgeyAgLy8gcmVqZWN0ZWQgLSB0aHJvdyBhbiBleGNlcHRpb24KKyAgdGVz
dEZhaWxlZCgnZnVsZmlsbGVkJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBhc3Nl
ZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdyZXN1bHQnLCAnZXJyb3InKTsKKyAgdGhyb3cgJ2Vycm9yMic7Cit9KS50aGVu
KCkgLy8gcGFzcyB0aHJvdWdoCisudGhlbihmdW5jdGlvbigpIHsgIC8vIHJlamVjdGVkIC0gcmVj
b3ZlcgorICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgewor
ICB0ZXN0UGFzc2VkKCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdlcnJvcjInKTsKKyAgcmV0dXJuICdyZWNv
dmVyZWQnOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAtIHRoZSBs
YXN0CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0
OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdyZWNvdmVyZWQnKTsKKyAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdvcGVyYXRpb24nLCAnYXN5bmNocm9ub3VzJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSk7CisKK29wZXJhdGlvbiA9ICdzeW5jaHJvbm91cyc7CityZXNv
bHZlci5mdWxmaWxsKCdoZWxsbycpOworCisvLyBUaGUgY2hhaW4gc2hvdWxkIGJlIGV4ZWN1dGVk
IGFzeW5jaHJvbm91c2x5Lgorb3BlcmF0aW9uID0gJ2FzeW5jaHJvbm91cyc7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4Y2VwdGlv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
UEFTUyB0aGlzSW5UaGVuQ2FsbGJhY2sgPT09IHRoaXJkUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJl
c3VsdCBpcyAiZm9vYmFyIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNlcHRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhjZXB0aW9u
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhjZXB0
aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFBy
b21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZpcnN0UHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5J
bml0ID0gdGhpczsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKK30pOworCit2YXIgc2Vj
b25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB0aHJv
dyAnZm9vYmFyJzsKK30pOworCit2YXIgdGhpcmRQcm9taXNlID0gc2Vjb25kUHJvbWlzZS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgeworICBmYWlsKCdVbmV4cGVjdGVkIGludm9jYXRpb24gb2YgZnVs
ZmlsbENhbGxiYWNrJyk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJblRo
ZW5DYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luVGhlbkNhbGxiYWNrID09
PSB0aGlyZFByb21pc2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZm9vYmFyJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNyBAQAorUHJvbWlz
ZXMgLSBBZGFwdGVkIGZyb20gaHR0cDovL2R4ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwv
c291cmNlL2RvbS9wcm9taXNlL3Rlc3RzL3Rlc3RfcHJvbWlzZS5odG1sLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCitUZXN0IFByb21pc2UgcmVzb2x2ZS4KK1BBU1MgVGhlbi5y
ZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgcmVq
ZWN0LgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKwor
VGVzdCBQcm9taXNlIHJlamVjdC4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkCitQ
QVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSBnYy4KK1BBU1MgVGhlbiAtIHByb21pc2UgaXMg
c3RpbGwgYWxpdmUKKworVGVzdCBQcm9taXNlIGFzeW5jLgorR2xvYmFsIHNob3VsZCBiZSBmb28K
K1BBU1MgZm9vIGlzIGZvbworR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28KK1BBU1MgZm9vIGlz
IGZvbworR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBmb28gKDIpCitQQVNTIGZvbyBpcyBmb28KK0ds
b2JhbCBzaG91bGQgYmUgYmFyCitQQVNTIGJhciBpcyBiYXIKKworVGVzdCBQcm9taXNlIGRvdWJs
ZSB0aGVuLgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQy
CitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgMSBpcyAxCitQQVNTIDQy
IGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIHRoZW4gLyBleGNlcHRpb24uCitQQVNTIFRoZW4ucmVz
b2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgQ2F0Y2ggaGFuZGxlciAoZS5nLiB0aGUgcmVqZWN0
IGhhbmRsZXIpIGNhbGxlZC4KKworVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNhdGNoIC8gdGhlbi4K
K1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBU
aGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCitQQVNTIFRoZW4ucmVz
b2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDQgaXMgNDQKKworVGVzdCBQcm9taXNlIC0gcmVq
ZWN0IC8gdGhlbiAvIGNhdGNoIC8gdGhlbi4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2Fs
bGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BB
U1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0NCBp
cyA0NAorCitUZXN0IFByb21pc2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuICgyKS4K
K1BBU1MgQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRoZW4ucmVz
b2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDMgaXMgNDMKKworVGVzdCBQcm9taXNlIC0gcmVq
ZWN0IC8gdGhlbiAvIGNhdGNoIGV4Y2VwdGlvbiAvIHRoZW4uCitQQVNTIFRoZW4ucmVqZWN0IGhh
cyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBDYXRjaCBoYXMgYmVlbiBjYWxsZWQK
K1BBU1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0
NCBpcyA0NAorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlc29sdmUp
LgorTWFueSBzdGVwcy4uLiBzaG91bGQgcmV0dXJuIDIKK1BBU1MgMiBpcyAyCisKK1Rlc3QgUHJv
bWlzZSAtIHRoZW4gLyBjYXRjaCBvcmRlcmluZyAocmVqZWN0KS4KK01hbnkgc3RlcHMuLi4gc2hv
dWxkIHJldHVybiAyCitQQVNTIDIgaXMgMgorCitUZXN0IFByb21pc2UgLSBuZXN0ZWQgcHJvbWlz
ZQorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJlc29sdmUgaGFz
IGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIG5lc3RlZC1uZXN0
ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BBU1MgVGhlbi5y
ZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MyBpcyA0MworCitUZXN0IFByb21pc2UgLSB3
cm9uZyBuZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BB
U1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFBy
b21pc2UgLSBwcm9taXNlIGxvb3AuCitQQVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkCitQ
QVNTIE5lc3RlZC1uZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJlc29sdmUg
aGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIFByb21pc2Uu
cmVqZWN0KCkuCitQQVNTIFRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0
MgorCitUZXN0IFByb21pc2UgLSBQcm9taXNlLnJlc29sdmUoKS4KK1BBU1MgVGhlbi5yZXNvbHZl
IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSBQcm9taXNl
LnJlc29sdmUoKSB3aXRoICBuZXN0ZWQgcHJvbWlzZS4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMg
ZXhlY3V0ZWQKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0
MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBQcm9taXNl
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcHJvbWlzZVN0YXRlIGlzICJw
ZW5kaW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIHByb21pc2VTdGF0
ZSBpcyAiZnVsZmlsbGVkIgorUEFTUyBwcm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1mdWxmaWxsLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29y
a2Vycy5qcworUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIFtX
b3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0
YXRlIGlzICJmdWxmaWxsZWQiCitQQVNTIFtXb3JrZXJdIHByb21pc2VSZXN1bHQgaXMgImhlbGxv
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3Jr
ZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9
IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMnKTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
ZnVsZmlsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWZ1bGZpbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVz
b2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIg
PSByOyB9KTsKK3ZhciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3Vs
dCA9IHVuZGVmaW5lZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlz
ZVN0YXRlID0gJ2Z1bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJl
c3VsdCA9IHJlc3VsdDsKK30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0
ZScsICdwZW5kaW5nJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcHJvbWlzZS50aGVu
KGZ1bmN0aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdm
dWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hl
bGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQo
J3Byb21pc2UgaXMgcmVqZWN0ZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1p
bml0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1pbml0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitU
ZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBwcm9taXNl
IGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHByb21pc2UuY29uc3RydWN0b3IgaXMg
UHJvbWlzZQorUEFTUyB0aGlzSW5Jbml0IGlzIHByb21pc2UKK1BBU1MgcmVzb2x2ZXIgaW5zdGFu
Y2VvZiBQcm9taXNlUmVzb2x2ZXIgaXMgdHJ1ZQorUEFTUyByZXNvbHZlci5jb25zdHJ1Y3RvciBp
cyBQcm9taXNlUmVzb2x2ZXIKK1BBU1MgbmV3IFByb21pc2UoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNl
KDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBm
aXJzdCBhcmd1bWVudC4KK1BBU1MgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKCkgeyB0
aHJvdyBFcnJvcigiZm9vIik7IH0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyByZXN1
bHQubWVzc2FnZSBpcyAiZm9vIgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxs
byIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13
b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjAgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLWluaXQtaW4td29y
a2Vycy5qcworUEFTUyBbV29ya2VyXSBwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVl
CitQQVNTIFtXb3JrZXJdIHByb21pc2UuY29uc3RydWN0b3IgaXMgUHJvbWlzZQorUEFTUyBbV29y
a2VyXSB0aGlzSW5Jbml0IGlzIHByb21pc2UKK1BBU1MgW1dvcmtlcl0gcmVzb2x2ZXIgaW5zdGFu
Y2VvZiBQcm9taXNlUmVzb2x2ZXIgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXNvbHZlci5jb25z
dHJ1Y3RvciBpcyBQcm9taXNlUmVzb2x2ZXIKK1BBU1MgW1dvcmtlcl0gbmV3IFByb21pc2UoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQu
CitQQVNTIFtXb3JrZXJdIG5ldyBQcm9taXNlKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0g
cHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKCkgeyB0aHJvdyBFcnJvcigiZm9vIik7IH0p
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBbV29ya2VyXSByZXN1bHQubWVzc2FnZSBp
cyAiZm9vIgorUEFTUyBbV29ya2VyXSBmdWxmaWxsZWQKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlz
ICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29y
a2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWlu
aXQtaW4td29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBz
dGFydFdvcmtlcigncmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmpzJyk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFyIHRoaXNJbkluaXQ7Cit2YXIg
cmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgdGhp
c0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gcjsKK30pOworCitzaG91bGRCZVRydWUoJ3By
b21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZSgncHJvbWlzZS5jb25zdHJ1Y3Rv
cicsICdQcm9taXNlJyk7CitzaG91bGRCZSgndGhpc0luSW5pdCcsICdwcm9taXNlJyk7CitzaG91
bGRCZVRydWUoJ3Jlc29sdmVyIGluc3RhbmNlb2YgUHJvbWlzZVJlc29sdmVyJyk7CitzaG91bGRC
ZSgncmVzb2x2ZXIuY29uc3RydWN0b3InLCAnUHJvbWlzZVJlc29sdmVyJyk7CisKK3Nob3VsZFRo
cm93KCduZXcgUHJvbWlzZSgpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCInKTsKK3Nob3VsZFRocm93KCduZXcgUHJvbWlzZSgzNyknLCAnIlR5cGVFcnJvcjog
RXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Nob3VsZE5vdFRo
cm93KCdwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28i
KTsgfSknKTsKK3Byb21pc2UudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3
aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdC5t
ZXNzYWdlJywgJ2ZvbycpOworfSk7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7
CisgIHJlc29sdmVyLmZ1bGZpbGwoImhlbGxvIik7CisgIHRocm93IEVycm9yKCJmb28iKTsKK30p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHRl
c3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcs
ICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3
aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBw
cm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIHByb21pc2VTdGF0ZSBpcyAicmVqZWN0ZWQi
CitQQVNTIHByb21pc2VSZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1yZWplY3QtaW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vy
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorW1dvcmtlcl0g
VGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdv
cmtlcjogcmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtl
cl0gcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUg
aXMgInBlbmRpbmciCitQQVNTIFtXb3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicmVqZWN0ZWQiCitQ
QVNTIFtXb3JrZXJdIHByb21pc2VSZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMv
UHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlciA9IHI7IH0pOwordmFyIHByb21pc2VTdGF0ZSA9
ICdwZW5kaW5nJzsKK3ZhciBwcm9taXNlUmVzdWx0ID0gdW5kZWZpbmVkOworcHJvbWlzZS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAnZnVsZmlsbGVkJzsKKyAgcHJv
bWlzZVJlc3VsdCA9IHJlc3VsdDsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3Rh
dGUgPSAncmVqZWN0ZWQnOworICBwcm9taXNlUmVzdWx0ID0gcmVzdWx0OworfSk7CisKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcmVzb2x2ZXIu
cmVqZWN0KCdoZWxsbycpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScs
ICdwZW5kaW5nJyk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgn
cHJvbWlzZSBpcyBmdWxmaWxsZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24o
KSB7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3JlamVjdGVkJyk7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBm
aW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2
ZS1jaGFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVz
dCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlz
ICJoZWxsbyIKK1BBU1MgcmVzdWx0IGlzICJieWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXJlc29sdmUtY2hhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS1jaGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXIxLCByZXNvbHZlcjIsIHJlc29sdmVyMzsKK3ZhciBy
ZXNvbHZlcjQsIHJlc29sdmVyNSwgcmVzb2x2ZXI2OwordmFyIHByb21pc2UxID0gbmV3IFByb21p
c2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjEgPSByOyB9KTsKK3ZhciBwcm9taXNlMiA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIyID0gcjsgfSk7Cit2YXIgcHJvbWlzZTMgPSBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyMyA9IHI7IH0pOwordmFyIHByb21pc2U0
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjQgPSByOyB9KTsKK3ZhciBwcm9t
aXNlNSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXI1ID0gcjsgfSk7Cit2YXIg
cHJvbWlzZTYgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyNiA9IHI7IH0pOwor
CityZXNvbHZlcjMucmVzb2x2ZShwcm9taXNlMik7CityZXNvbHZlcjIucmVzb2x2ZShwcm9taXNl
MSk7CityZXNvbHZlcjYucmVzb2x2ZShwcm9taXNlNSk7CityZXNvbHZlcjUucmVzb2x2ZShwcm9t
aXNlNCk7CisKK3Byb21pc2UzLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1
bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7
Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKK30pOworCitwcm9t
aXNlNi50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJl
c3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnYnllJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSk7CisKK3Jlc29sdmVyMS5yZXNvbHZlKCdoZWxsbycpOworcmVzb2x2ZXI0
LnJlamVjdCgnYnllJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29u
ZFByb21pc2UgaXMgdHJ1ZQorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29s
dmUtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBA
QAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpz
CitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBp
cyB0cnVlCitQQVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291
cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4t
ZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1l
eGNlcHRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1Rl
c3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitUaGUgcHJvbWlzZSBp
cyBhbHJlYWR5IHJlamVjdGVkIG5vdy4KK1BBU1MgcmVqZWN0ZWQKK1BBU1MgcmVzdWx0IGlzICJo
ZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhj
ZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
c29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgY2FsbGJhY2s7Cit2YXIgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLnJlc29sdmUoe3Ro
ZW46IGZ1bmN0aW9uKGZ1bGZpbGxDYWxsYmFjaywgcmVqZWN0Q2FsbGJhY2spIHsKKyAgICB0aHJv
dyAnaGVsbG8nOworICB9fSwgdHJ1ZSk7Cit9KTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkg
eworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgdGVzdFBhc3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3Vs
dCA9IHJlc3VsdAorICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOwor
ICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgYWxyZWFkeSBy
ZWplY3RlZCBub3cuJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRo
ZW4tZnVsZmlsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1BBU1MgdmFsdWUudGhlbiBpcyBjYWxsZWQuCitQQVNTIHRoaXNWYWx1
ZSBpcyB2YWx1ZQorVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuCitQQVNTIGZ1bGZp
bGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1m
dWxmaWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBjYWxsYmFj
azsKK3ZhciB2YWx1ZSA9IHsKKyAgdGhlbjogZnVuY3Rpb24oZnVsZmlsbENhbGxiYWNrLCByZWpl
Y3RDYWxsYmFjaykgeworICAgIHRlc3RQYXNzZWQoJ3ZhbHVlLnRoZW4gaXMgY2FsbGVkLicpOwor
ICAgIHdpbmRvdy50aGlzVmFsdWUgPSB0aGlzOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUnLCAn
dmFsdWUnKTsKKyAgICBjYWxsYmFjayA9IGZ1bGZpbGxDYWxsYmFjazsKKyAgfQorfTsKK2Zpbmlz
aEpTVGVzdCgpOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIucmVz
b2x2ZSh2YWx1ZSk7IH0pOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRl
c3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsK
K30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rl
c3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuJyk7
CisKK2NhbGxiYWNrKCdoZWxsbycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13
aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHZhbHVlLnRoZW4gaXMgY2FsbGVkLgorUEFTUyB0aGlz
VmFsdWUgaXMgdmFsdWUKK1RoZSBwcm9taXNlIGlzIG5vdCByZWplY3RlZCBub3cuCitQQVNTIHJl
amVjdGVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1y
ZWplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
UHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIGNhbGxiYWNr
OwordmFyIHZhbHVlID0geworICB0aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVj
dENhbGxiYWNrKSB7CisgICAgdGVzdFBhc3NlZCgndmFsdWUudGhlbiBpcyBjYWxsZWQuJyk7Cisg
ICAgd2luZG93LnRoaXNWYWx1ZSA9IHRoaXM7CisgICAgc2hvdWxkQmUoJ3RoaXNWYWx1ZScsICd2
YWx1ZScpOworICAgIGNhbGxiYWNrID0gcmVqZWN0Q2FsbGJhY2s7CisgIH0KK307Cit2YXIgcHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgci5yZXNvbHZlKHZhbHVlKTsgfSk7CisK
K3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVk
Jyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNz
ZWQoJ3JlamVjdGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisK
K2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgcmVqZWN0ZWQgbm93LicpOworCitjYWxsYmFjaygn
aGVsbG8nKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlc29sdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlc29sdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
Cit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAg
cmVzb2x2ZXIucmVzb2x2ZSgnaGVsbG8nKTsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZp
cnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmls
bENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sg
PT09IHNlY29uZFByb21pc2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9
LCBmdW5jdGlvbigpIHsKKyAgZmFpbCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2Utc2ltcGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitQQVNTIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIHRoaXNJ
bkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBp
cyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2lt
cGxlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxs
YmFjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2Fs
bGJhY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1z
aW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCit2YXIgZnV0dXJlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIp
IHsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxm
aWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBs
ZS1mdWxmaWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2Utc2ltcGxlLWZ1bGZpbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
Cit2YXIgZnV0dXJlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICByZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworICB9LCAw
KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpT
VGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBs
ZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBA
CitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
U3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcwor
UEFTUyBbV29ya2VyXSB0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zaW1wbGUtaW4td29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlz
ZS1zaW1wbGUtaW4td29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhp
czsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9
IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVs
ZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7
Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKKwor
cmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmls
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNT
IHJlc3VsdCBpcyB1bmRlZmluZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CityZXN1bHQgPSB1bmRlZmluZWQ7CisKK1Byb21p
c2UuZnVsZmlsbCgnaGVsbG8nKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVz
dWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycp
OworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0RmFpbGVk
KCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworc2hvdWxkQmUoJ3Jlc3VsdCcs
ICd1bmRlZmluZWQnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IFByb21p
c2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgdW5kZWZp
bmVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXN0YXRpYy1yZWplY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2Utc3RhdGljLXJlamVjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworcmVzdWx0ID0gdW5kZWZpbmVkOworCitQcm9taXNlLnJlamVjdCgnaGVsbG8nKS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJl
c3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKK3Nob3VsZEJlKCdyZXN1bHQnLCAndW5kZWZpbmVkJyk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0
aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzIHVuZGVmaW5lZAorUEFTUyByZXN1bHQg
aXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVz
b2x2ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0
YXRpYy1yZXNvbHZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Jlc3Vs
dCA9IHVuZGVmaW5lZDsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24gKHIpIHsgcmVzb2x2ZXIgPSByO30gKSk7CisKK3By
b21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNU
ZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKKworcmVzb2x2ZXIucmVzb2x2ZSgnaGVsbG8nKTsKK3Nob3VsZEJl
KCdyZXN1bHQnLCAndW5kZWZpbmVkJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRy
dWUKK1BBU1MgZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIHNl
Y29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgZmlyc3RQcm9taXNl
LnRoZW4obnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24g
b3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBmaXJzdFByb21pc2UudGhl
bih1bmRlZmluZWQsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1
bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBzZWNvbmQgYXJndW1lbnQuCitQQVNTIGZpcnN0UHJv
bWlzZS50aGVuKDM3KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlv
biBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIHRoaXNJbkZ1bGZpbGxD
YWxsYmFjayA9PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxs
YmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vy
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtdGhlbi1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE4IEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS10aGVuLWluLXdvcmtlcnMu
anMKK1BBU1MgW1dvcmtlcl0gdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BB
U1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNT
IFtXb3JrZXJdIHNlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gZmlyc3RQcm9taXNlLnRoZW4obnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50Lgor
UEFTUyBbV29ya2VyXSBmaXJzdFByb21pc2UudGhlbih1bmRlZmluZWQsIG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBz
ZWNvbmQgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS50aGVuKDM3KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMg
YXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9
PT0gZmlyc3RQcm9taXNlIGlzIGZhbHNlCitQQVNTIFtXb3JrZXJdIHRoaXNJbkZ1bGZpbGxDYWxs
YmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAi
aGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWluLXdvcmtl
cnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVu
LWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3Rh
cnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5qcycpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13
aXRob3V0LWNhbGxiYWNrcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxs
YmFja3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQ
cm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJo
ZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNr
cy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhv
dXQtY2FsbGJhY2tzLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTAgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91
dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImhlbGxv
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWlu
LXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
dGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3Jr
ZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2Vy
KCdyZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuanMn
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3Mu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlz
ZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCituZXcgUHJvbWlzZShmdW5j
dGlvbihyKSB7IHIuZnVsZmlsbCgnaGVsbG8nKTsgfSkKKyAgLnRoZW4oKQorICAudGhlbihmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cisg
IH0pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10aGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXRoZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS10aGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29s
dmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24obmV3UmVzb2x2
ZXIpIHsKKyAgd2luZG93LnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IG5ld1Jlc29s
dmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNlLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgIHdpbmRvdy50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlzOworICBz
aG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZScpOwor
ICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZScp
OworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jl
c3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitzaG91bGRCZVRydWUo
J3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdmaXJzdFByb21p
c2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZVRydWUoJ3NlY29uZFByb21pc2UgaW5z
dGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbihudWxs
KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmly
c3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLnRoZW4odW5kZWZpbmVk
LCBudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMg
YXMgc2Vjb25kIGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKDM3
KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmly
c3QgYXJndW1lbnQiJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlw
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXR5cGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACitQ
cm9taXNlcyAtIFRlc3QgYmFzaWMgdHlwZXMgLyBleGNlcHRpb25zLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworCitQcm9taXNlcworCithUHJvbWlzZSA9IG5ldyBQcm9taXNlKC4u
LikKK1BBU1MgYVByb21pc2UgaXMgYW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBTdHJpbmco
YVByb21pc2UpIGlzICdbb2JqZWN0IFByb21pc2VdJworUEFTUyBhUHJvbWlzZS50aGVuIGlzIGRl
ZmluZWQuCitQQVNTIGFQcm9taXNlLnRoZW4gaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BB
U1MgYVByb21pc2UudGhlbi5sZW5ndGggaXMgMAorUEFTUyBhUHJvbWlzZS5jYXRjaCBpcyBkZWZp
bmVkLgorUEFTUyBhUHJvbWlzZS5jYXRjaCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFT
UyBhUHJvbWlzZS5jYXRjaC5sZW5ndGggaXMgMAorCitQcm9taXNlIGNvbnN0cnVjdG9yCisKK1BB
U1MgUHJvbWlzZS5sZW5ndGggaXMgMQorUEFTUyBuZXcgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1MgbmV3IFBy
b21pc2UoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMg
YXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNlKCdoZWxsbycpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50Lgor
UEFTUyBuZXcgUHJvbWlzZShbXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQg
ZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNlKHt9KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1
bWVudC4KK1BBU1MgbmV3IFByb21pc2UobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
RXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNl
KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24g
YXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVy
KSB7IHJlc29sdmVyLnJlc29sdmUoMSk7IH0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBQcm9taXNlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRnVuY3Rpb24gaXMgbm90IGEg
ZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ1Byb21pc2UoKScpLgorCitQcm9taXNlIHN0YXRpY3MKKwor
UEFTUyBQcm9taXNlLmZ1bGZpbGwgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgUHJv
bWlzZS5mdWxmaWxsLmxlbmd0aCBpcyAxCitQQVNTIFByb21pc2UuZnVsZmlsbCgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1Mg
UHJvbWlzZS5mdWxmaWxsKDEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBQcm9taXNl
LnJlc29sdmUgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgUHJvbWlzZS5yZXNvbHZl
Lmxlbmd0aCBpcyAxCitQQVNTIFByb21pc2UucmVzb2x2ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1MgUHJvbWlzZS5yZXNv
bHZlKDEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBQcm9taXNlLnJlamVjdCBpcyBh
biBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBQcm9taXNlLnJlamVjdC5sZW5ndGggaXMgMQor
UEFTUyBQcm9taXNlLnJlamVjdCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVk
IGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1MgUHJvbWlzZS5yZWplY3QoMSkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIFByb21pc2UuZnVsZmlsbCgxKSBpcyBhbiBpbnN0YW5jZSBv
ZiBQcm9taXNlCitQQVNTIFByb21pc2UucmVzb2x2ZSgxKSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9t
aXNlCitQQVNTIFByb21pc2UucmVqZWN0KDEpIGlzIGFuIGluc3RhbmNlIG9mIFByb21pc2UKKwor
UHJvbWlzZVJlc29sdmVyCisKK2FSZXNvbHZlciBpcyBmcm9tIG5ldyBQcm9taXNlKGZ1bmN0aW9u
KGFSZXNvbHZlcikgeyAuLi4gfSkKK1BBU1MgYVJlc29sdmVyIGlzIGFuIGluc3RhbmNlIG9mIFBy
b21pc2VSZXNvbHZlcgorUEFTUyBTdHJpbmcoYVJlc29sdmVyKSBpcyAnW29iamVjdCBQcm9taXNl
UmVzb2x2ZXJdJworUEFTUyBhUmVzb2x2ZXIuZnVsZmlsbCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5j
dGlvbgorUEFTUyBhUmVzb2x2ZXIuZnVsZmlsbC5sZW5ndGggaXMgMQorUEFTUyBhUmVzb2x2ZXIu
cmVzb2x2ZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBhUmVzb2x2ZXIucmVzb2x2
ZS5sZW5ndGggaXMgMQorUEFTUyBhUmVzb2x2ZXIucmVqZWN0IGlzIGFuIGluc3RhbmNlIG9mIEZ1
bmN0aW9uCitQQVNTIGFSZXNvbHZlci5yZWplY3QubGVuZ3RoIGlzIDEKK1BBU1MgcmVzb2x2ZXJG
dWxmaWxsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2YgZnVsZmlsbCBt
dXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyLgorUEFTUyByZXNvbHZlclJlc29sdmUoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBSZWNlaXZlciBvZiByZXNvbHZlIG11c3QgYmUgYSBQcm9taXNl
UmVzb2x2ZXIuCitQQVNTIHJlc29sdmVyUmVqZWN0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogUmVjZWl2ZXIgb2YgcmVqZWN0IG11c3QgYmUgYSBQcm9taXNlUmVzb2x2ZXIuCisKK1Byb21p
c2VSZXNvbHZlciBjb25zdHJ1Y3RvcgorCitQQVNTIG5ldyBQcm9taXNlUmVzb2x2ZXIoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBGdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZyAnbmV3IFByb21pc2VSZXNvbHZlcigpJykuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtdHlwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtdHlwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS10eXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlByb21pc2VzIC0gVGVzdCBiYXNpYyB0eXBlcyAv
IGV4Y2VwdGlvbnMuIik7CisKKy8vIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworCisv
LyBQcm9taXNlCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZXMiKTsKK2RlYnVnKCIiKTsKKwor
Ly8gUHJvbWlzZXMgc2hvdWxkIGJlIG9mIHR5cGUgUHJvbWlzZS4KKwordmFyIGFQcm9taXNlID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsgcmVzb2x2ZXIucmVzb2x2ZSgxKTsgfSk7
CisKK2RlYnVnKCJhUHJvbWlzZSA9IG5ldyBQcm9taXNlKC4uLikiKQorc2hvdWxkQmVUeXBlKCJh
UHJvbWlzZSIsICJQcm9taXNlIik7CitzaG91bGRCZSgiU3RyaW5nKGFQcm9taXNlKSIsICInW29i
amVjdCBQcm9taXNlXSciKTsKKworc2hvdWxkQmVEZWZpbmVkKCJhUHJvbWlzZS50aGVuIik7Citz
aG91bGRCZVR5cGUoImFQcm9taXNlLnRoZW4iLCAiRnVuY3Rpb24iKTsKK3Nob3VsZEJlKCJhUHJv
bWlzZS50aGVuLmxlbmd0aCIsICIwIik7CitzaG91bGRCZURlZmluZWQoImFQcm9taXNlLmNhdGNo
Iik7CitzaG91bGRCZVR5cGUoImFQcm9taXNlLmNhdGNoIiwgIkZ1bmN0aW9uIik7CitzaG91bGRC
ZSgiYVByb21pc2UuY2F0Y2gubGVuZ3RoIiwgIjAiKTsKKworCisvLyBQcm9taXNlIGNvbnN0cnVj
dG9yCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZSBjb25zdHJ1Y3RvciIpOworZGVidWcoIiIp
OworCisvLyBOZWVkIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIuCitzaG91bGRCZSgiUHJvbWlzZS5s
ZW5ndGgiLCAiMSIpOworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKCkiKTsKKworLy8gUGFyYW1l
dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4KK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSgxKSIsICIn
VHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCciKTsKK3No
b3VsZFRocm93KCJuZXcgUHJvbWlzZSgnaGVsbG8nKSIsICInVHlwZUVycm9yOiBFeHBlY3RlZCBm
dW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCciKTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlz
ZShbXSkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1l
bnQnIik7CitzaG91bGRUaHJvdygibmV3IFByb21pc2Uoe30pIiwgIidUeXBlRXJyb3I6IEV4cGVj
dGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50JyIpOworc2hvdWxkVGhyb3coIm5ldyBQ
cm9taXNlKG51bGwpIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0
IGFyZ3VtZW50JyIpOworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKHVuZGVmaW5lZCkiLCAiJ1R5
cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQnIik7CitzaG91
bGROb3RUaHJvdygibmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsgcmVzb2x2ZXIucmVz
b2x2ZSgxKTsgfSkiKTsKKworLy8gQ2FuJ3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24KK3Nob3Vs
ZFRocm93KCJQcm9taXNlKCkiKTsKKworCisvLyBQcm9taXNlIHN0YXRpY3MKK2RlYnVnKCIiKTsK
K2RlYnVnKCJQcm9taXNlIHN0YXRpY3MiKTsKK2RlYnVnKCIiKTsKKworCisvLyBOZWVkIGF0IGxl
YXN0IG9uZSBwYXJhbWV0ZXIuCitzaG91bGRCZVR5cGUoIlByb21pc2UuZnVsZmlsbCIsICJGdW5j
dGlvbiIpOworc2hvdWxkQmUoIlByb21pc2UuZnVsZmlsbC5sZW5ndGgiLCAiMSIpOworc2hvdWxk
VGhyb3coIlByb21pc2UuZnVsZmlsbCgpIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0
IG9uZSBhcmd1bWVudCciKTsKK3Nob3VsZE5vdFRocm93KCJQcm9taXNlLmZ1bGZpbGwoMSkiKTsK
Kworc2hvdWxkQmVUeXBlKCJQcm9taXNlLnJlc29sdmUiLCAiRnVuY3Rpb24iKTsKK3Nob3VsZEJl
KCJQcm9taXNlLnJlc29sdmUubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZFRocm93KCJQcm9taXNlLnJl
c29sdmUoKSIsICInVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQnIik7
CitzaG91bGROb3RUaHJvdygiUHJvbWlzZS5yZXNvbHZlKDEpIik7CisKK3Nob3VsZEJlVHlwZSgi
UHJvbWlzZS5yZWplY3QiLCAiRnVuY3Rpb24iKTsKK3Nob3VsZEJlKCJQcm9taXNlLnJlamVjdC5s
ZW5ndGgiLCAiMSIpOworc2hvdWxkVGhyb3coIlByb21pc2UucmVqZWN0KCkiLCAiJ1R5cGVFcnJv
cjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50JyIpOworc2hvdWxkTm90VGhyb3coIlBy
b21pc2UucmVqZWN0KDEpIik7CisKKy8vIFNob3VsZCByZXR1cm4gUHJvbWlzZSBvYmplY3RzLgor
c2hvdWxkQmVUeXBlKCJQcm9taXNlLmZ1bGZpbGwoMSkiLCAiUHJvbWlzZSIpOworc2hvdWxkQmVU
eXBlKCJQcm9taXNlLnJlc29sdmUoMSkiLCAiUHJvbWlzZSIpOworc2hvdWxkQmVUeXBlKCJQcm9t
aXNlLnJlamVjdCgxKSIsICJQcm9taXNlIik7CisKKworCisvLyBQcm9taXNlUmVzb2x2ZXIKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJQcm9taXNlUmVzb2x2ZXIiKTsKK2RlYnVnKCIiKTsKKwordmFyIGFS
ZXNvbHZlcjsKK3ZhciByZXNvbHZlckZ1bGZpbGw7Cit2YXIgcmVzb2x2ZXJSZXNvbHZlOwordmFy
IHJlc29sdmVyUmVqZWN0OworCituZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgYVJlc29s
dmVyID0gcjsKKworICAgIC8vIFRoZSByZXNvbHZlciBzaG91bGQgYmUgb2YgdHlwZSBQcm9taXNl
UmVzb2x2ZXIuCisgICAgZGVidWcoImFSZXNvbHZlciBpcyBmcm9tIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKGFSZXNvbHZlcikgeyAuLi4gfSkiKQorICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVyIiwg
IlByb21pc2VSZXNvbHZlciIpOworICAgIHNob3VsZEJlKCJTdHJpbmcoYVJlc29sdmVyKSIsICIn
W29iamVjdCBQcm9taXNlUmVzb2x2ZXJdJyIpOworICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVy
LmZ1bGZpbGwiLCAiRnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZSgiYVJlc29sdmVyLmZ1bGZpbGwu
bGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZVR5cGUoImFSZXNvbHZlci5yZXNvbHZlIiwgIkZ1
bmN0aW9uIik7CisgICAgc2hvdWxkQmUoImFSZXNvbHZlci5yZXNvbHZlLmxlbmd0aCIsICIxIik7
CisgICAgc2hvdWxkQmVUeXBlKCJhUmVzb2x2ZXIucmVqZWN0IiwgIkZ1bmN0aW9uIik7CisgICAg
c2hvdWxkQmUoImFSZXNvbHZlci5yZWplY3QubGVuZ3RoIiwgIjEiKTsKKworICAgIC8vIFJlc29s
dmVycyBmdW5jdGlvbnMgbXVzdCBiZSBjYWxsZWQgb24gdGhlIHJlc29sdmVyLgorICAgIHJlc29s
dmVyRnVsZmlsbCA9IGFSZXNvbHZlci5mdWxmaWxsOworICAgIHNob3VsZFRocm93KCJyZXNvbHZl
ckZ1bGZpbGwoKSIsICInVHlwZUVycm9yOiBSZWNlaXZlciBvZiBmdWxmaWxsIG11c3QgYmUgYSBQ
cm9taXNlUmVzb2x2ZXInIik7CisgICAgcmVzb2x2ZXJSZXNvbHZlID0gYVJlc29sdmVyLnJlc29s
dmU7CisgICAgc2hvdWxkVGhyb3coInJlc29sdmVyUmVzb2x2ZSgpIiwgIidUeXBlRXJyb3I6IFJl
Y2VpdmVyIG9mIHJlc29sdmUgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciciKTsKKyAgICByZXNv
bHZlclJlamVjdCA9IGFSZXNvbHZlci5yZWplY3Q7CisgICAgc2hvdWxkVGhyb3coInJlc29sdmVy
UmVqZWN0KCkiLCAiJ1R5cGVFcnJvcjogUmVjZWl2ZXIgb2YgcmVqZWN0IG11c3QgYmUgYSBQcm9t
aXNlUmVzb2x2ZXInIik7Cit9KTsKKworZGVidWcoIiIpOworZGVidWcoIlByb21pc2VSZXNvbHZl
ciBjb25zdHJ1Y3RvciIpOworZGVidWcoIiIpOworCitzaG91bGRUaHJvdygibmV3IFByb21pc2VS
ZXNvbHZlcigpIik7CisKK2RlYnVnKCIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQ+CisKKy8vIEFkYXB0ZWQgZnJvbSBodHRwOi8vZHhyLm1vemlsbGEub3JnL21v
emlsbGEtY2VudHJhbC9zb3VyY2UvZG9tL3Byb21pc2UvdGVzdHMvdGVzdF9wcm9taXNlLmh0bWwg
d2hpY2ggc3RhdGVkOgorLy8gICAgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisvLyAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvCisKK2Rlc2NyaXB0aW9uKCJQcm9taXNlcyAtIEFkYXB0ZWQgZnJvbSBodHRw
Oi8vZHhyLm1vemlsbGEub3JnL21vemlsbGEtY2VudHJhbC9zb3VyY2UvZG9tL3Byb21pc2UvdGVz
dHMvdGVzdF9wcm9taXNlLmh0bWwuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworZnVuY3Rpb24gdGVzdChfYSwgX2IpCit7CisgICAgaWYgKGlzUmVzdWx0Q29ycmVjdChfYSwg
X2IpKQorICAgICAgICB0ZXN0UGFzc2VkKHN0cmluZ2lmeShfYSkgKyAiIGlzICIgKyBzdHJpbmdp
ZnkoX2IpKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoc3RyaW5naWZ5KF9hKSArICIg
c2hvdWxkIGJlICIgKyBzdHJpbmdpZnkoX2IpKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVJlc29s
dmUoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgcmVzb2x2ZS4iKQorICAKKyAgdmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29s
dmUoNDIpOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVu
LnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVu
VGVzdCgpOworICB9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBo
YXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlvbiBw
cm9taXNlUmVqZWN0KCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIHJlamVjdC4iKTsKKyAgCisg
IHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNv
bHZlci5yZWplY3QoNDIpOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFp
bGVkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgcnVuVGVzdCgpOworICB9
LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4g
Y2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30K
KworZnVuY3Rpb24gcHJvbWlzZUV4Y2VwdGlvbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSBy
ZWplY3QuIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
cikgeworICAgIHRocm93IDQyOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0
RmFpbGVkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgcnVuVGVzdCgpOwor
ICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJl
ZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsK
K30KKworZnVuY3Rpb24gcHJvbWlzZUdDKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIGdjLiIp
OworICAKKyAgdmFyIHJlc29sdmVyOworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHIpIHsKKyAgICByZXNvbHZlciA9IHI7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgewor
ICAgIHRlc3RQYXNzZWQoIlRoZW4gLSBwcm9taXNlIGlzIHN0aWxsIGFsaXZlIik7CisgICAgcnVu
VGVzdCgpOworICB9KTsKKworICBwcm9taXNlID0gbnVsbDsKKworICBnYygpOworCisgIHJlc29s
dmVyLnJlc29sdmUoNDIpOworfQorCitmdW5jdGlvbiBwcm9taXNlQXN5bmMoKSB7CisgIGRlYnVn
KCJUZXN0IFByb21pc2UgYXN5bmMuIik7CisKKyAgdmFyIGdsb2JhbCA9ICJmb28iOworICB2YXIg
ZiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICBkZWJ1ZygiR2xvYmFsIHNob3VsZCBi
ZSBmb28iKTsKKyAgICB0ZXN0KGdsb2JhbCwgJ2ZvbycpOworCisgICAgci5yZXNvbHZlKDQyKTsK
KworICAgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIHN0aWxsIGJlIGZvbyIpOworICAgIHRlc3QoZ2xv
YmFsLCAnZm9vJyk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgZGVidWco
Ikdsb2JhbCBzaG91bGQgYmUgYmFyIik7CisgICAgICB0ZXN0KGdsb2JhbCwgJ2JhcicpOworICAg
ICAgcnVuVGVzdCgpOworICAgIH0sIDApOworICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGds
b2JhbCA9ICJiYXIiOworICB9KTsKKworICBkZWJ1ZygiR2xvYmFsIHNob3VsZCBzdGlsbCBiZSBm
b28gKDIpIik7CisgIHRlc3QoZ2xvYmFsLCAnZm9vJyk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VE
b3VibGVUaGVuKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIGRvdWJsZSB0aGVuLiIpOworCisg
IHZhciBzdGVwcyA9IDA7CisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVz
b2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKDQyKTsKKyAgfSk7CisKKyAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJl
ZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgc3RlcHMrKzsKKyAgfSwgZnVu
Y3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxl
ZCIpOworICB9KTsKKworICBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQ
YXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHN0ZXBzLCAx
KTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0aW9uKHdo
YXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAg
fSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VUaGVuRXhjZXB0aW9uKCkgeworICBkZWJ1ZygiVGVz
dCBQcm9taXNlIC0gdGhlbiAvIGV4Y2VwdGlvbi4iKTsKKworICB2YXIgcHJvbWlzZSA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZSg0Mik7Cisg
IH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRocm93ICJib29oIjsKKyAgfSku
Y2F0Y2goZnVuY3Rpb24oZSkgeworICAgIHRlc3RQYXNzZWQoIkNhdGNoIGhhbmRsZXIgKGUuZy4g
dGhlIHJlamVjdCBoYW5kbGVyKSBjYWxsZWQuIik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30K
KworZnVuY3Rpb24gcHJvbWlzZVRoZW5DYXRjaFRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21p
c2UgLSB0aGVuIC8gY2F0Y2ggLyB0aGVuLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKDQyKTsKKyAgfSk7
CisKKyAgdmFyIHByb21pc2UyID0gcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0
ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0
LCA0Mik7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOworCisgIHBy
b21pc2UyLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2
ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQzKTsKKyAgICByZXR1cm4gd2hh
dCArIDE7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVj
dCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7CisgICAgdGVzdEZh
aWxlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkg
eworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0
ZXN0KHdoYXQsIDQ0KTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAg
ICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7Cit9CisK
K2Z1bmN0aW9uIHByb21pc2VSZWplY3RUaGVuQ2F0Y2hUaGVuKCkgeworICBkZWJ1ZygiVGVzdCBQ
cm9taXNlIC0gcmVqZWN0IC8gdGhlbiAvIGNhdGNoIC8gdGhlbi4iKTsKKworICB2YXIgcHJvbWlz
ZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVqZWN0
KDQyKTsKKyAgfSk7CisKKyAgdmFyIHByb21pc2UyID0gcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdo
YXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7Cisg
IH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICByZXR1cm4gd2hhdCArIDE7Cisg
IH0pOworCisgIHByb21pc2UyLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQo
IlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQzKTsKKyAg
ICByZXR1cm4gd2hhdCArIDE7CisgIH0pLmNhdGNoKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0
RmFpbGVkKCJDYXRjaCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0
KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAg
IHRlc3Qod2hhdCwgNDQpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHBy
b21pc2VSZWplY3RUaGVuQ2F0Y2hUaGVuMigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHJl
amVjdCAvIHRoZW4gLyBjYXRjaCAvIHRoZW4gKDIpLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZWplY3QoNDIpOwor
ICB9KTsKKworICBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQo
IlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAg
ICByZXR1cm4gd2hhdCArIDE7CisgIH0pLmNhdGNoKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0
UGFzc2VkKCJDYXRjaCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAg
ICByZXR1cm4gd2hhdCArIDE7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQ
YXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQz
KTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVqZWN0VGhl
bkNhdGNoRXhjZXB0aW9uVGhlbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHJlamVjdCAv
IHRoZW4gLyBjYXRjaCBleGNlcHRpb24gLyB0aGVuLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZWplY3QoNDIpOwor
ICB9KTsKKworICBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQo
IlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgewor
ICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qo
d2hhdCwgNDIpOworICAgIHRocm93KHdoYXQgKyAxKTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hh
dCkgeworICAgIHRlc3RQYXNzZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qo
d2hhdCwgNDMpOworICAgIHJldHVybiB3aGF0ICsgMTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0
KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAg
IHRlc3Qod2hhdCwgNDQpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHBy
b21pc2VUaGVuQ2F0Y2hPcmRlcmluZ1Jlc29sdmUoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2Ug
LSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlc29sdmUpLiIpOworCisgIHZhciBnbG9iYWwgPSAw
OworICB2YXIgZiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICByLnJlc29sdmUoNDIp
OworICB9KTsKKworICBmLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZi50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgZ2xvYmFsKys7CisgICAgfSk7CisgICAgZi5jYXRjaChmdW5jdGlvbigpIHsKKyAg
ICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYudGhlbihmdW5jdGlvbigpIHsKKyAgICAgIGds
b2JhbCsrOworICAgIH0pOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBkZWJ1
ZygiTWFueSBzdGVwcy4uLiBzaG91bGQgcmV0dXJuIDIiKTsKKyAgICAgIHRlc3QoZ2xvYmFsLCAy
KTsKKyAgICAgIHJ1blRlc3QoKTsKKyAgICB9LCAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHBy
b21pc2VUaGVuQ2F0Y2hPcmRlcmluZ1JlamVjdCgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAt
IHRoZW4gLyBjYXRjaCBvcmRlcmluZyAocmVqZWN0KS4iKTsKKworICB2YXIgZ2xvYmFsID0gMDsK
KyAgdmFyIGYgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgci5yZWplY3QoNDIpOwor
ICB9KQorCisgIGYudGhlbihmdW5jdGlvbigpIHt9LCBmdW5jdGlvbigpIHsKKyAgICBmLnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLmNhdGNoKGZ1bmN0
aW9uKCkgeworICAgICAgZ2xvYmFsKys7CisgICAgfSk7CisgICAgZi50aGVuKGZ1bmN0aW9uKCkg
e30sIGZ1bmN0aW9uKCkgeworICAgICAgZ2xvYmFsKys7CisgICAgfSk7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgIGRlYnVnKCJNYW55IHN0ZXBzLi4uIHNob3VsZCByZXR1cm4g
MiIpOworICAgICAgdGVzdChnbG9iYWwsIDIpOworICAgICAgcnVuVGVzdCgpOworICAgIH0sIDAp
OworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZU5lc3RlZFByb21pc2UoKSB7CisgIGRlYnVn
KCJUZXN0IFByb21pc2UgLSBuZXN0ZWQgcHJvbWlzZSIpOworCisgIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZShuZXcgUHJvbWlzZShmdW5jdGlv
bihyKSB7CisgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZCIpOwor
ICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICB9KSk7CisgIH0pLnRoZW4oZnVuY3Rpb24odmFsdWUp
IHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAg
dGVzdCh2YWx1ZSwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHBy
b21pc2VOZXN0ZWROZXN0ZWRQcm9taXNlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gbmVz
dGVkLW5lc3RlZCBwcm9taXNlLiIpOworCisgIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVy
KSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZShuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAg
ICB0ZXN0UGFzc2VkKCJOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZCIpOworICAgICAgci5yZXNv
bHZlKDQyKTsKKyAgICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsgcmV0dXJuIHdoYXQgKyAxOyB9
KSk7CisgIH0pLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJl
c29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh2YWx1ZSwgNDMpOworICAgIHJ1blRl
c3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VXcm9uZ05lc3RlZFByb21pc2UoKSB7
CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSB3cm9uZyBuZXN0ZWQgcHJvbWlzZS4iKTsKKworICBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUobmV3
IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgICAgdGVzdFBhc3NlZCgiTmVzdGVkIHByb21pc2Ug
aXMgZXhlY3V0ZWQiKTsKKyAgICAgIHIucmVzb2x2ZSg0Mik7CisgICAgfSkpOworICAgIHJlc29s
dmVyLnJlamVjdCg0Mik7CisgIH0pLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0UGFz
c2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh2YWx1ZSwgNDIp
OworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0RmFpbGVk
KCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHBy
b21pc2VMb29wKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcHJvbWlzZSBsb29wLiIpOwor
CisgIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2
ZShuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQgcHJv
bWlzZSBpcyBleGVjdXRlZCIpOworICAgICAgci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiTmVzdGVkLW5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1
dGVkIik7CisgICAgICAgIHIucmVzb2x2ZSg0Mik7CisgICAgICB9KSk7CisgICAgfSkpOworICB9
KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhh
cyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3QodmFsdWUsIDQyKTsKKyAgICBydW5UZXN0KCk7Cisg
IH0sIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJl
ZW4gY2FsbGVkIik7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVqZWN0Q29uc3RydWN0
b3IoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBQcm9taXNlLnJlamVjdCgpLiIpOworCisg
IHZhciBwcm9taXNlID0gUHJvbWlzZS5yZWplY3QoNDIpLnRoZW4oZnVuY3Rpb24od2hhdCkgewor
ICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSwgZnVu
Y3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxl
ZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1
bmN0aW9uIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3IoKSB7CisgIGRlYnVnKCJUZXN0IFByb21p
c2UgLSBQcm9taXNlLnJlc29sdmUoKS4iKTsKKworICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSg0MikudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNv
bHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3Qo
KTsKKyAgfSwgZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJl
ZW4gY2FsbGVkIik7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVzb2x2ZUNvbnN0cnVj
dG9yTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIFByb21pc2UucmVz
b2x2ZSgpIHdpdGggIG5lc3RlZCBwcm9taXNlLiIpOworCisgIHZhciBwcm9taXNlID0gUHJvbWlz
ZS5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICB0ZXN0UGFzc2VkKCJOZXN0
ZWQgcHJvbWlzZSBpcyBleGVjdXRlZCIpOworICAgIHIucmVzb2x2ZSg0Mik7CisgIH0sIGZ1bmN0
aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIlNlY29uZCBhcmd1bWVudCB0byBQcm9taXNlIGNvbnN0
cnVjdG9yIGNhbGxlZC4iKTsKKyAgfSkpLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQ
YXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQy
KTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIlRo
ZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKwordmFyIHRlc3RzID0gWwor
ICAgIHByb21pc2VSZXNvbHZlLAorICAgIHByb21pc2VSZWplY3QsCisgICAgcHJvbWlzZUV4Y2Vw
dGlvbiwKKyAgICBwcm9taXNlR0MsCisgICAgcHJvbWlzZUFzeW5jLAorICAgIHByb21pc2VEb3Vi
bGVUaGVuLAorICAgIHByb21pc2VUaGVuRXhjZXB0aW9uLAorICAgIHByb21pc2VUaGVuQ2F0Y2hU
aGVuLAorICAgIHByb21pc2VSZWplY3RUaGVuQ2F0Y2hUaGVuLAorICAgIHByb21pc2VSZWplY3RU
aGVuQ2F0Y2hUaGVuMiwKKyAgICBwcm9taXNlUmVqZWN0VGhlbkNhdGNoRXhjZXB0aW9uVGhlbiwK
KyAgICBwcm9taXNlVGhlbkNhdGNoT3JkZXJpbmdSZXNvbHZlLAorICAgIHByb21pc2VUaGVuQ2F0
Y2hPcmRlcmluZ1JlamVjdCwKKyAgICBwcm9taXNlTmVzdGVkUHJvbWlzZSwKKyAgICBwcm9taXNl
TmVzdGVkTmVzdGVkUHJvbWlzZSwKKyAgICBwcm9taXNlV3JvbmdOZXN0ZWRQcm9taXNlLAorICAg
IHByb21pc2VMb29wLAorICAgIHByb21pc2VSZWplY3RDb25zdHJ1Y3RvciwgCisgICAgcHJvbWlz
ZVJlc29sdmVDb25zdHJ1Y3RvciwKKyAgICBwcm9taXNlUmVzb2x2ZUNvbnN0cnVjdG9yTmVzdGVk
UHJvbWlzZSwKK107CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgIGlmICghdGVzdHMubGVuZ3Ro
KSB7CisgICAgZmluaXNoSlNUZXN0KCk7CisgICAgcmV0dXJuOworICB9CisKKyAgZGVidWcoIiIp
OworICB2YXIgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgIHRlc3QoKTsKK30KKworcnVuVGVzdCgp
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVz
b3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWlu
LXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAoraW1wb3J0U2NyaXB0
cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOwor
Cit2YXIgZ2xvYmFsID0gdGhpczsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFy
IHJlc29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24obmV3
UmVzb2x2ZXIpIHsKKyAgZ2xvYmFsLnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IG5l
d1Jlc29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNlLmNhdGNo
KGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhp
czsKKyAgc2hvdWxkQmVGYWxzZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21p
c2UnKTsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFBy
b21pc2UnKTsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgcmV0dXJuICdieWUnOworfSk7CisKK3NlY29uZFBy
b21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnYnllJyk7CisgIHRlc3RQYXNzZWQo
J2Z1bGZpbGxlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0
RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgewor
fSk7CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91
bGRCZVRydWUoJ2ZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1
ZSgnc2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2Zp
cnN0UHJvbWlzZS5jYXRjaChudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBv
ciB1bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQ
cm9taXNlLmNhdGNoKDM3KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRl
ZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Jlc29sdmVyLnJlamVjdCgnaGVsbG8n
KTsKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxmaWxs
LWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJl
LmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK2pzVGVzdElzQXN5bmMg
PSB0cnVlOworCit2YXIgcmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9KTsKK3ZhciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7
Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVuZGVmaW5lZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ2Z1bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQg
PSByZXN1bHQ7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVj
dGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsKK30pOworCitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hl
bGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcn
KTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3Byb21pc2VTdGF0ZScsICdmdWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdw
cm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24o
KSB7CisgIHRlc3RGYWlsZWQoJ3Byb21pc2UgaXMgcmVqZWN0ZWQuJyk7CisgIGZpbmlzaEpTVGVz
dCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWlu
aXQtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291
cmNlcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKK2ltcG9ydFNjcmlwdHMoJy4vanMtdGVzdC1wcmUuanMn
KTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciB0aGlzSW5Jbml0OwordmFyIHJl
c29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgIHRoaXNJ
bkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7Cit9KTsKKworc2hvdWxkQmVUcnVlKCdwcm9t
aXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmUoJ3Byb21pc2UuY29uc3RydWN0b3In
LCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJbkluaXQnLCAncHJvbWlzZScpOworc2hvdWxk
QmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFByb21pc2VSZXNvbHZlcicpOworc2hvdWxkQmUo
J3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21pc2VSZXNvbHZlcicpOworCitzaG91bGRUaHJv
dygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoMzcpJywgJyJUeXBlRXJyb3I6IEV4
cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworCitzaG91bGROb3RUaHJv
dygncHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKCkgeyB0aHJvdyBFcnJvcigiZm9vIik7
IH0pJyk7Citwcm9taXNlLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xv
YmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQubWVz
c2FnZScsICdmb28nKTsKK30pOworCituZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgewor
ICByZXNvbHZlci5mdWxmaWxsKCJoZWxsbyIpOworICB0aHJvdyBFcnJvcigiZm9vIik7Cit9KS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICB0ZXN0
UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAn
aGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xv
YmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNo
SlNUZXN0KCk7Cit9KTsKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Q
cm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlamVjdC1pbi13b3Jr
ZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydFNjcmlwdHMoJy4v
anMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKworanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlciA9IHI7IH0pOwordmFyIHByb21pc2VTdGF0ZSA9
ICdwZW5kaW5nJzsKK3ZhciBwcm9taXNlUmVzdWx0ID0gdW5kZWZpbmVkOworcHJvbWlzZS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAnZnVsZmlsbGVkJzsKKyAgcHJv
bWlzZVJlc3VsdCA9IHJlc3VsdDsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3Rh
dGUgPSAncmVqZWN0ZWQnOworICBwcm9taXNlUmVzdWx0ID0gcmVzdWx0OworfSk7CisKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcmVzb2x2ZXIu
cmVqZWN0KCdoZWxsbycpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScs
ICdwZW5kaW5nJyk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgn
cHJvbWlzZSBpcyBmdWxmaWxsZWQuJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24o
KSB7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ3JlamVjdGVkJyk7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBm
aW5pc2hKU1Rlc3QoKTsKK30pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMv
UHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4t
d29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnRTY3JpcHRz
KCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K3ZhciBnbG9iYWwgPSB0aGlzOworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIg
Zmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2
ZXIucmVzb2x2ZSgnaGVsbG8nKTsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJv
bWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwudGhpc0luRnVsZmlsbENhbGxi
YWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNl
Y29uZFByb21pc2UnKTsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5j
dGlvbigpIHsKKyAgZmFpbCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtl
cnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlz
ZS1zaW1wbGUtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNiBAQAoraW1wb3J0U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitk
ZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit2YXIgZ2xvYmFsID0gdGhpczsKKworZ2xv
YmFsLmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7CisKK3ZhciBmaXJzdFBy
b21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNvbHZlcikgeworICBnbG9iYWwudGhp
c0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNl
Y29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xv
YmFsLnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0lu
RnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQ
cm9taXNlJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vy
cy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21p
c2UtdGhlbi1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKK2lt
cG9ydFNjcmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJv
bWlzZS4nKTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CisKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKwordmFyIHJlc29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2Uo
ZnVuY3Rpb24obmV3UmVzb2x2ZXIpIHsKKyAgZ2xvYmFsLnRoaXNJbkluaXQgPSB0aGlzOworICBy
ZXNvbHZlciA9IG5ld1Jlc29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQ
cm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2Fs
bGJhY2sgPSB0aGlzOworICBzaG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09
IGZpcnN0UHJvbWlzZScpOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9
PT0gc2Vjb25kUHJvbWlzZScpOworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworc2hvdWxk
QmVUcnVlKCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZVRydWUo
J3NlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93KCdmaXJz
dFByb21pc2UudGhlbihudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1
bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9t
aXNlLnRoZW4odW5kZWZpbmVkLCBudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlv
biBvciB1bmRlZmluZWQgYXMgYXMgc2Vjb25kIGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2Zp
cnN0UHJvbWlzZS50aGVuKDM3KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1
bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hl
bGxvJyk7CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10
aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWlu
LXdvcmtlcnMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNl
cy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE3IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7
CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOwor
CitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHIp
IHsgci5mdWxmaWxsKCdoZWxsbycpOyB9KQorICAudGhlbigpCisgIC50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgfSk7CisK
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209602</attachid>
            <date>2013-08-25 13:54:40 -0700</date>
            <delta_ts>2013-08-25 14:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120260-20130825135445.patch</filename>
            <type>text/plain</type>
            <size>237828</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcyAt
IGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNlcy4KKyAgICAgICAgLSBEZXNwaXRl
IFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwgdGhlIGltcGxlbWVudGF0aW9uIGlz
IGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIFByb21p
c2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBpbiBFQ01BU2NyaXB0LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgVXBkYXRlIGpzYydzIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHRvIHN0
dWIgb3V0IHRoZSBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suIFRoaXMgbWVhbidz
CisgICAgICAgIHlvdSBjYW4ndCBxdWl0ZSB1c2UgUHJvbWlzZXMgd2l0aCB3aXRoIHRoZSBjb21t
YW5kIGxpbmUgdG9vbCB5ZXQuCisgICAgCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
Lmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlND
OjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBzdXBwb3J0
aW5nIGNvZGUgZm9yIHRoZSBuZXcgc3RhdGljIGxvb2t1cCB0YWJsZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgIEFkZCAzIG5ldyBpZGVudGlmaWVy
cywgIlByb21pc2UiLCAiUHJvbWlzZVJlc29sdmVyIiwgYW5kICJ0aGVuIi4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVy
J3MgY29uc3RydWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpUYXNrQ29udGV4dDo6flRhc2tDb250ZXh0KToK
KyAgICAgICAgQWRkIGEgbmV3IGNhbGxiYWNrIHRvIHRoZSBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSB0byBwb3N0IGEgdGFzayBvbiB0aGUgZW1iZWRkZXIncyBydW5sb29wLgorCisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnByb21pc2VSZXNvbHZlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojpwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSk6CisgICAgICAgIEFkZCBz
dXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVyJ3MgY29uc3RydWN0b3Jz
IGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1By
b21pc2VDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFByb21p
c2UgaW1wbGVtZW50YXRpb24uCisKIDIwMTMtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b0pTVmFsdWUgc2hv
dWxkIGFsbW9zdCBjZXJ0YWlubHkgbm90IHVzZSBqc051bWJlcigpIHNpbmNlIHRoYXQgYXR0ZW1w
dHMgaW50IGNvbnZlcnNpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2UuY3BwCisgICAgcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKKyAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAg
IHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTUsNiAr
NDIyLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgYWxsIDogXAogICAgIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggXAorICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAg
ICAgTmFtZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDkgQEAgTFVU
X0ZJTEVTICs9IFwKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcCBc
CisgICAgcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTmFt
ZVByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5o
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTWF0aE9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTmFtZVByb3RvdHlw
ZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggXApAQCAtODExLDYgKzgxNCwyMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvbWlzZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcCBcCisg
ICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRp
bWUvSlNTY29wZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE1NDU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNyArMjU5LDcgQEAgcHJvdGVjdGVkOgogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9i
YWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNiArNDY4LDEzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Byb21pc2UuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNQcm9taXNlQ2FsbGJhY2suY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUHJvdG90eXBlLmNwcCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyLmNwcCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPg0KQEAgLTU0Myw2ICs1NTAsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQ
cm90b3R5cGUubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5sdXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExMSW50QXNzZW1ibHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0
LmgiIC8+DQpAQCAtODgwLDYgKzg5MCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09OT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09iamVjdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b21pc2VDYWxsYmFjay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTUHJvbWlzZVByb3RvdHlwZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUmVzb2x2ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b3h5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDU3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNiArNjQ5LDIwIEBACiAJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
ICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggKi87IH07CisJCTdDMTVGNjVEMTdDMTk5Q0Uw
MDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9t
aXNlQ2FsbGJhY2suY3BwICovOyB9OworCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQ
cm9taXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTVGNjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICov
OyB9OworCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMw
MDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwICovOyB9OworCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi87IH07CisJ
CTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFGMTdC
RUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8q
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI4
RTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuY3BwICovOyB9OworCQk3QzNC
QTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0JBMjhGMTdDMDM5NTYwMDcyRERD
OSAvKiBKU1Byb21pc2VSZXNvbHZlci5oICovOyB9OworCQk3QzNCQTI5NjE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MDE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDM0JBMjk3MTdDMDM5
NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MTE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk3QzNCQTI5ODE3
QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQkEyOTIxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJN0MzQkEy
OTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MzE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJN0VGRjAwNjQw
RUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAx
Miw4ICsxMDI2LDYgQEAKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyog
V2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4
QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07Ci0JCUJDMThDNTI2MEUxNkZDQTcwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmx1dC5oICovOyB9OwotCQlCQzE4QzUyQTBFMTZGQ0MyMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDNTI5MEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oICovOyB9OwogCQlC
QzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0
NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9Owog
CQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2Qzkg
LyogQXJndW1lbnRzLmggKi87IH07CkBAIC0xNzc5LDYgKzE3OTEsMjMgQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEUx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJl
c29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0JBMjkwMTdDMDM5NTYwMDcy
RERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5MTE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDM0JBMjkyMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5QTE3QzAzQkUxMDA3
MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVy
ZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VGRjAwNjMwRUMwNUE5
QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTIxLDggKzIxNTAs
NiBAQAogCQlCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYw
IC8qIE1hdGhPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTJCMEUx
NkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTYsNyArMjE4Myw2IEBACiAJCUJDNzk1MjM0MEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJvb2xlYW5Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzc5NTIzNTBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0Nl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDZWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM4MTQ5QUYxMkY4OUY1MzAwN0IyQzMyIC8q
IEhlYWRlckRldGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFk
ZXJEZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjUsMTggKzI4
OTEsMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MzQkEyOUEx
N0MwM0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywK
IAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywK
LQkJCQlCQzgxNDlBRjEyRjg5RjUzMDA3QjJDMzIgLyogSGVhZGVyRGV0ZWN0aW9uLmggKi8sCiAJ
CQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCisJCQkJ
N0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAq
LywKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8sCi0JCQkJ
QkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYwIC8qIE1hdGhPYmplY3QubHV0LmggKi8sCiAJCQkJQkMy
NjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8sCiAJ
CQkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLywKLQkJ
CQlCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCTVENTM3MjdEMEUxQzU1RUMwMDIxRTU0OSAvKiBUcmFjaW5nRHRyYWNlLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMzEwMiw2ICszMTI4LDIwIEBACiAJ
CQkJQkMyMkEzOTkwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmggKi8sCiAJCQkJQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovLAogCQkJCUE3Rjk5MzVEMEZE
NzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi8sCisJCQkJN0MxODRFMTgxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8sCisJCQkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovLAorCQkJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8sCisJCQkJN0MxNUY2NUMxN0MxOTlDRTAwNzk0RDQwIC8qIEpT
UHJvbWlzZUNhbGxiYWNrLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0Eg
LyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJN0MzQkEyOEUxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLywKKwkJCQk3QzNCQTI4RjE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCAqLywKKwkJCQk3QzNCQTI5MDE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJN0Mz
QkEyOTExN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3QzNCQTI5MjE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oICovLAogCQkJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKQEAgLTM3NjcsNiArMzgwNyw3IEBACiAJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zODM0LDYgKzM4NzUsNyBAQAogCQkJCUE3RDlBMjk4MTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZD
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTExLDYgKzM5NTMsNyBAQAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zOTc1LDYgKzQwMTgsNyBAQAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2
RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdD
MDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggaW4gSGVhZGVycyAqLywKQEAgLTQxMzUsNyArNDE3OSw2IEBACiAJCQkJQzIxMTIyRTMx
NUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDMThDNTJBMEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhF
MjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MjAwLDExICs0MjQzLDE0IEBACiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3Rv
dHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMTg0RTFC
MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2
NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFBy
b3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTcx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyRDYwRTE3MDcwODAwMkM3RTgyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCNDExMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjE1LDYgKzQyNjEsNyBA
QAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdCMiAvKiBSZWplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJl
cGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBE
QjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNDEsNyArNDI4
OCw2IEBACiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5n
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzUyNjBFMTZGQ0E3MDBC
MzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
M0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDcyOCw2ICs0Nzc0LDcgQEAKIAkJCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZH
RGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyOTgxRkRDMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk4MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVF
MDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NDc0OSw2ICs0Nzk2LDcgQEAKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQx
NTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZH
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyog
REZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENGMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDc2OCw2ICs0ODE2
LDcgQEAKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlERDIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
M0JBMjk2MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC00Nzk3LDYgKzQ4NDYsNyBAQAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJC
NzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE4NEUxRTE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9t
aXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBB
MjcxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTQ4NTgsNiArNDkwOCw3IEBACiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4
IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDky
Nyw2ICs0OTc4LDcgQEAKIAkJCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRF
MUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDk4MSw2ICs1MDMzLDcgQEAKIAkJ
CQkxNDc0QzMzQzE2QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTg0RTIyMTdCRUUyNDAwMDdDQjYzQSAv
KiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEw
N0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNC
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25z
dHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZt
KCkucmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
Y2FsbEZyYW1lLT52bSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5zdHJpbmdDb25zdHJ1Y3RvclRhYmxlOyB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VQcm90b3R5cGVUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnByb21pc2VQcm90b3R5
cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgp
LnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGU7IH0K
IAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJh
c2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAg
ICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKICAgICBtYWNybyhO
YU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNy
byhQcm9taXNlKSBcCisgICAgbWFjcm8oUHJvbWlzZVJlc29sdmVyKSBcCiAgICAgbWFjcm8oUmFu
Z2VFcnJvcikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVnRXhw
KSBcCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN1
YmFycmF5KSBcCiAgICAgbWFjcm8odGVzdCkgXAorICAgIG1hY3JvKHRoZW4pIFwKICAgICBtYWNy
byh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkgXAogICAgIG1hY3JvKHRvSVNP
U3RyaW5nKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDEzIEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk5LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0Vu
YWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogLyogU291cmNlIGZvciBK
U0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0yOTcsNiAr
MzA0LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBt
X2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9lcnJvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fcHJvbWlz
ZVByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9wcm9taXNlU3Ry
dWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fcHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CisgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhp
cywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb21pc2VDYWxs
YmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVjLT52bSgp
LCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAgICAgLy8gQ29u
c3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzIxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0g
Qm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBudW1iZXJDb25z
dHJ1Y3RvciA9IE51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgTnVtYmVyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogZGF0
ZUNvbnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgRGF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBwcm9t
aXNlQ29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMs
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVn
RXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCkpKTsKIApAQCAtMzI5LDYgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIG1f
ZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CisgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHBy
b21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzQ1LDYg
KzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuU3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5z
dHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24u
Z2V0KCksIERvbnRFbnVtKTsKQEAgLTU2NCw2ICs1ODUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGF0ZVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtNTk0LDcgKzYxNywxMSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlKTsKKwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIAog
I2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiAj
aW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwpAQCAtNTgsNiAr
NTksOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKK2NsYXNzIEpT
UHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xh
c3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I7CkBAIC03MCw3ICs3MywxNCBAQCBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNr
Tm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CiAKIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2
PiBFeGVjU3RhdGVTdGFjazsKLSAgICAKKworY2xhc3MgVGFza0NvbnRleHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxUYXNrQ29udGV4dD4geworcHVibGljOgorICAgIHZpcnR1YWwgflRhc2tDb250ZXh0
KCkKKyAgICB7CisgICAgfQorfTsKKwogc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIGJvb2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9u
UHRyIGFsbG93c0FjY2Vzc0Zyb207CkBAIC04Niw2ICs5NiwxMCBAQCBzdHJ1Y3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRlZiBib29sICgqSmF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZEZ1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIEphdmFT
Y3JpcHRFeHBlcmltZW50c0VuYWJsZWRGdW5jdGlvblB0ciBqYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkOworCisgICAgdHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFj
a0Z1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHR5cGVkZWYgdm9p
ZCAoKlF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiwgUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRh
c2tDb250ZXh0Pik7CisgICAgUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRh
c2tUb0V2ZW50TG9vcDsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMTM0LDYgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAg
ICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gbV9kYXRlUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFy
cmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNQcm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVy
PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsK
IAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7
CkBAIC0xNjcsNyArMTgzLDExIEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cmluZ09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9wcm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVJlc29sdmVyU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZUNhbGxiYWNrU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVm
ZmVyUHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zMTIsNiArMzMyLDgg
QEAgcHVibGljOgogICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGVQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAg
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3Ry
dWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CkBAIC0zNTksNyArMzgxLDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IHByb21pc2VSZXNvbHZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29s
dmVyU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlQ2FsbGJhY2tTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorCiAg
ICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBh
cnJheUJ1ZmZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTUHJvbWlzZVRhc2tDb250ZXh0IDogcHVibGljIFRhc2tDb250ZXh0IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU1Byb21pc2VUYXNrQ29udGV4dD4gY3JlYXRlKFZNJiB2bSwg
SlNQcm9taXNlKiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBK
U1Byb21pc2VUYXNrQ29udGV4dCh2bSwgcHJvbWlzZSkpOworICAgIH0KKworICAgIEpTUHJvbWlz
ZSYgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuICptX3Byb21pc2UuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBKU1Byb21pc2VUYXNrQ29udGV4dChWTSYgdm0sIEpTUHJvbWlzZSogcHJvbWlzZSkK
KyAgICB7CisgICAgICAgIG1fcHJvbWlzZS5zZXQodm0sIHByb21pc2UpOworICAgIH0KKworICAg
IFN0cm9uZzxKU1Byb21pc2U+IG1fcHJvbWlzZTsKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1By
b21pc2U6OnNfaW5mbyA9IHsgIlByb21pc2UiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTUHJvbWlzZSkgfTsKKworSlNQcm9taXNlKiBKU1Byb21pc2U6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTUHJvbWlzZSogcHJvbWlz
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4odm0uaGVhcCkpIEpTUHJv
bWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm9taXNlLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0pTUHJvbWlzZSogSlNQcm9taXNlOjpjcmVhdGVXaXRo
UmVzb2x2ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpT
UHJvbWlzZSogcHJvbWlzZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4o
dm0uaGVhcCkpIEpTUHJvbWlzZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkp
OworICAgIHByb21pc2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgIEpTUHJvbWlzZVJlc29s
dmVyKiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+cHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKCksIHByb21pc2UpOworICAgIHByb21pc2UtPnNl
dFJlc29sdmVyKHZtLCByZXNvbHZlcik7CisKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworU3Ry
dWN0dXJlKiBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlOjpKU1Byb21pc2Uo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3N0YXRlKFBlbmRpbmcpCit7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBKU1Byb21p
c2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTUHJvbWlzZSo+
KGNlbGwpLT5KU1Byb21pc2U6On5KU1Byb21pc2UoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1Byb21pc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVzb2x2ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Jlc3VsdCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPm1fZnVsZmlsbENhbGxiYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZnVsZmlsbENhbGxiYWNrc1tpXSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX3JlamVjdENhbGxiYWNrcy5zaXplKCk7ICsraSkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVqZWN0Q2FsbGJhY2tzW2ld
KTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNldFJlc29sdmVyKFZNJiB2bSwgSlNQcm9taXNlUmVz
b2x2ZXIqIHJlc29sdmVyKQoreworICAgIG1fcmVzb2x2ZXIuc2V0KHZtLCB0aGlzLCByZXNvbHZl
cik7Cit9CisKK0pTUHJvbWlzZVJlc29sdmVyKiBKU1Byb21pc2U6OnJlc29sdmVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNl
dFJlc3VsdChWTSYgdm0sIEpTVmFsdWUgcmVzdWx0KQoreworICAgIG1fcmVzdWx0LnNldCh2bSwg
dGhpcywgcmVzdWx0KTsKK30KKworSlNWYWx1ZSBKU1Byb21pc2U6OnJlc3VsdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVzdWx0LmdldCgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0U3Rh
dGUoSlNQcm9taXNlOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBQZW5k
aW5nKTsKKyAgICBtX3N0YXRlID0gc3RhdGU7Cit9CisKK0pTUHJvbWlzZTo6U3RhdGUgSlNQcm9t
aXNlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjphcHBlbmRDYWxsYmFja3MoRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdWxmaWxsQ2FsbGJhY2ssIEludGVybmFsRnVuY3Rpb24qIHJlamVjdENhbGxiYWNrKQorewor
ICAgIC8vIDEuIEFwcGVuZCBmdWxmaWxsQ2FsbGJhY2sgdG8gcHJvbWlzZSdzIGZ1bGZpbGwgY2Fs
bGJhY2tzLgorICAgIG1fZnVsZmlsbENhbGxiYWNrcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMtPnZtKCksIHRoaXMsIGZ1bGZpbGxDYWxsYmFjaykpOworICAgIAor
ICAgIC8vIDIuIEFwcGVuZCByZWplY3RDYWxsYmFjayB0byBwcm9taXNlJyByZWplY3QgY2FsbGJh
Y2tzLgorICAgIG1fcmVqZWN0Q2FsbGJhY2tzLmFwcGVuZChXcml0ZUJhcnJpZXI8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYy0+dm0oKSwgdGhpcywgcmVqZWN0Q2FsbGJhY2spKTsKKworICAgIC8vIDMu
IElmIHByb21pc2UncyBzdGF0ZSBpcyBmdWxmaWxsZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNz
IHByb21pc2UncyBmdWxmaWxsIGNhbGxiYWNrcyB3aXRoIHByb21pc2UncyByZXN1bHQuCisgICAg
aWYgKG1fc3RhdGUgPT0gRnVsZmlsbGVkKSB7CisgICAgICAgIHF1ZXVlVGFza1RvUHJvY2Vzc0Z1
bGZpbGxDYWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0
LiBJZiBwcm9taXNlJ3Mgc3RhdGUgaXMgcmVqZWN0ZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNz
IHByb21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggcHJvbWlzZSdzIHJlc3VsdC4KKyAgICBp
ZiAobV9zdGF0ZSA9PSBSZWplY3RlZCkgeworICAgICAgICBxdWV1ZVRhc2tUb1Byb2Nlc3NSZWpl
Y3RDYWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpxdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNz
RnVsZmlsbENhbGxiYWNrc0ZvclRhc2ssIEpTUHJvbWlzZVRhc2tDb250ZXh0OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgdGhpcykpOworICAgIGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUjog
RXZlbnQgbG9vcCBub3Qgc3VwcG9ydGVkLiIpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cXVldWVU
YXNrVG9Qcm9jZXNzUmVqZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVu
dExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzUmVqZWN0Q2FsbGJhY2tz
Rm9yVGFzaywgSlNQcm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZShleGVjLT52bSgpLCB0aGlzKSk7
CisgICAgZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBz
dXBwb3J0ZWQuIik7Cit9CisKK3ZvaWQgSlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNr
c0ZvclRhc2soRXhlY1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7Cisg
ICAgSlNQcm9taXNlVGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0
PEpTUHJvbWlzZVRhc2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSYgcHJv
bWlzZSA9IHByb21pc2VUYXNrQ29udGV4dC0+cHJvbWlzZSgpOworCisgICAgcHJvbWlzZS5wcm9j
ZXNzRnVsZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLnJlc3VsdCgpKTsKK30K
Kwordm9pZCBKU1Byb21pc2U6OnByb2Nlc3NSZWplY3RDYWxsYmFja3NGb3JUYXNrKEV4ZWNTdGF0
ZSogZXhlYywgVGFza0NvbnRleHQqIHRhc2tDb250ZXh0KQoreworICAgIEpTUHJvbWlzZVRhc2tD
b250ZXh0KiBwcm9taXNlVGFza0NvbnRleHQgPSBzdGF0aWNfY2FzdDxKU1Byb21pc2VUYXNrQ29u
dGV4dCo+KHRhc2tDb250ZXh0KTsKKyAgICBKU1Byb21pc2UmIHByb21pc2UgPSBwcm9taXNlVGFz
a0NvbnRleHQtPnByb21pc2UoKTsKKworICAgIHByb21pc2UucHJvY2Vzc1JlamVjdENhbGxiYWNr
c1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLnJlc3VsdCgpKTsKK30KKwordm9pZCBKU1Byb21pc2U6
OnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBGdWxmaWxsZWQpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bGZpbGxDYWxsYmFja3Muc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IG1fZnVsZmlsbENhbGxiYWNrc1tpXS5nZXQoKTsKKwor
ICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBK
U0M6OmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwo
ZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAg
ICB9CisgICAgCisgICAgbV9mdWxmaWxsQ2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpwcm9jZXNzUmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBSZWplY3RlZCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVqZWN0Q2FsbGJhY2tzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBtX3JlamVjdENhbGxiYWNrc1tpXS5nZXQoKTsK
KworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBKU0M6OmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNh
bGwoZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsK
KyAgICB9CisgICAgCisgICAgbV9yZWplY3RDYWxsYmFja3MuY2xlYXIoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTUHJvbWlzZV9oCisjZGVmaW5lIEpTUHJvbWlzZV9oCisKKyNpbmNsdWRlICJKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUmVz
b2x2ZXI7CitjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworY2xhc3MgVGFza0NvbnRleHQ7CisKK2Ns
YXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJv
bWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2UqIGNyZWF0ZVdpdGhSZXNvbHZlcihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIHNldFJlc29sdmVyKFZNJiwgSlNQcm9taXNl
UmVzb2x2ZXIqKTsKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIoKSBjb25zdDsKKwor
ICAgIGVudW0gU3RhdGUgeworICAgICAgICBQZW5kaW5nLAorICAgICAgICBGdWxmaWxsZWQsCisg
ICAgICAgIFJlamVjdGVkLAorICAgIH07CisKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsKKyAg
ICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRSZXN1bHQoVk0mLCBKU1ZhbHVl
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCgpIGNvbnN0OworCisgICAgdm9pZCBhcHBlbmRDYWxsYmFj
a3MoRXhlY1N0YXRlKiwgSW50ZXJuYWxGdW5jdGlvbiogZnVsZmlsbENhbGxiYWNrLCBJbnRlcm5h
bEZ1bmN0aW9uKiByZWplY3RDYWxsYmFjayk7CisKKyAgICB2b2lkIHF1ZXVlVGFza1RvUHJvY2Vz
c0Z1bGZpbGxDYWxsYmFja3MoRXhlY1N0YXRlKik7CisgICAgdm9pZCBxdWV1ZVRhc2tUb1Byb2Nl
c3NSZWplY3RDYWxsYmFja3MoRXhlY1N0YXRlKik7CisgICAgdm9pZCBwcm9jZXNzRnVsZmlsbENh
bGxiYWNrc1dpdGhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICB2b2lkIHByb2Nlc3NS
ZWplY3RDYWxsYmFja3NXaXRoVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKKworcHJpdmF0ZToKKyAgICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUq
KTsKKworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzRm9yVGFzayhFeGVj
U3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NSZWplY3RDYWxs
YmFja3NGb3JUYXNrKEV4ZWNTdGF0ZSosIFRhc2tDb250ZXh0Kik7CisKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4g
bV9yZXNvbHZlcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZXN1bHQ7CisgICAgVmVj
dG9yPFdyaXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPiA+IG1fZnVsZmlsbENhbGxiYWNrczsK
KyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEludGVybmFsRnVuY3Rpb24+ID4gbV9yZWplY3RDYWxs
YmFja3M7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNQcm9taXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5o
IgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZUNhbGxiYWNrOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNl
Q2FsbGJhY2spIH07CisKK0pTUHJvbWlzZUNhbGxiYWNrKiBKU1Byb21pc2VDYWxsYmFjazo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciwgQWxnb3JpdGhtIGFs
Z29yaXRobSkKK3sKKyAgICBKU1Byb21pc2VDYWxsYmFjayogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VDYWxsYmFjaz4oKmV4ZWMtPmhlYXAoKSkpIEpT
UHJvbWlzZUNhbGxiYWNrKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhbGdvcml0aG0pOworICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZXNvbHZlcik7CisgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0pTUHJvbWlzZUNhbGxiYWNrOjpKU1Byb21pc2VDYWxsYmFjayhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQWxnb3JpdGhtIGFsZ29y
aXRobSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX2FsZ29yaXRobShhbGdvcml0aG0pCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlQ2FsbGJh
Y2s6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlUmVzb2x2ZXIqIHJl
c29sdmVyKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNl
Q2FsbGJhY2siKTsKKyAgICBtX3Jlc29sdmVyLnNldChleGVjLT52bSgpLCB0aGlzLCByZXNvbHZl
cik7Cit9CisKK3ZvaWQgSlNQcm9taXNlQ2FsbGJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VDYWxsYmFjayogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VDYWxsYmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworCisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3Jlc29sdmVyKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Byb21pc2VDYWxsYmFjazo6Y2FsbFByb21pc2VDYWxsYmFjayhFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHByb21pc2VDYWxsYmFjayA9IGpzQ2Fz
dDxKU1Byb21pc2VDYWxsYmFjayo+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1Byb21pc2VSZXNv
bHZlciogcmVzb2x2ZXIgPSBwcm9taXNlQ2FsbGJhY2stPm1fcmVzb2x2ZXIuZ2V0KCk7CisKKyAg
ICAvLyAxLiBMZXQgdmFsdWUgYmUgdGhlIGZpcnN0IGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkLCBh
bmQgdW5kZWZpbmVkIG90aGVyd2lzZS4KKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisKKyAgICAvLyAyLiBSdW4gcmVzb2x2ZXIncyBhbGdvcml0aG0gd2l0aCB2YWx1ZSBh
bmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgc2V0LgorICAgIHN3aXRjaCAocHJvbWlzZUNhbGxiYWNr
LT5tX2FsZ29yaXRobSkgeworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZpbGw6Cisg
ICAgICAgIHJlc29sdmVyLT5mdWxmaWxsKGV4ZWMsIHZhbHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6
UmVzb2x2ZVN5bmNocm9ub3VzbHkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSlNQcm9t
aXNlQ2FsbGJhY2s6OlJlc29sdmU6CisgICAgICAgIHJlc29sdmVyLT5yZXNvbHZlKGV4ZWMsIHZh
bHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6UmVzb2x2ZVN5bmNocm9ub3VzbHkpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdDoKKyAgICAgICAgcmVz
b2x2ZXItPnJlamVjdChleGVjLCB2YWx1ZSwgSlNQcm9taXNlUmVzb2x2ZXI6OlJlc29sdmVTeW5j
aHJvbm91c2x5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlQ2FsbGJhY2s6
OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUHJvbWlzZUNhbGxiYWNrOworICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7Cit9CisKKworCisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2s6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2spIH07CisKK0pTUHJvbWlzZVdy
YXBwZXJDYWxsYmFjayogSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyLCBKU1ZhbHVlIGNhbGxiYWNrKQoreworICAg
IEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s+KCpleGVjLT5oZWFwKCkpKSBKU1By
b21pc2VXcmFwcGVyQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZXNvbHZlciwgY2FsbGJhY2spOworICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VXcmFwcGVyQ2FsbGJh
Y2s6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpKU1Byb21pc2VX
cmFwcGVyQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIsIEpTVmFsdWUgY2Fs
bGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2VX
cmFwcGVyQ2FsbGJhY2siKTsKKyAgICBtX3Jlc29sdmVyLnNldChleGVjLT52bSgpLCB0aGlzLCBy
ZXNvbHZlcik7CisgICAgbV9jYWxsYmFjay5zZXQoZXhlYy0+dm0oKSwgdGhpcywgY2FsbGJhY2sp
OworfQorCit2b2lkIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZVdyYXBwZXJD
YWxsYmFjayogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlcik7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2spOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Y2FsbFByb21pc2VXcmFw
cGVyQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZVdyYXBwZXJDYWxs
YmFjayogcHJvbWlzZVdyYXBwZXJDYWxsYmFjayA9IGpzQ2FzdDxKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2sqPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2
ZXIgPSBwcm9taXNlV3JhcHBlckNhbGxiYWNrLT5tX3Jlc29sdmVyLmdldCgpOworICAgIEpTVmFs
dWUgY2FsbGJhY2sgPSBwcm9taXNlV3JhcHBlckNhbGxiYWNrLT5tX2NhbGxiYWNrLmdldCgpOwor
CisgICAgLy8gMS4gTGV0IGFyZ3VtZW50IGJlIHRoZSBmaXJzdCBhcmd1bWVudCB0aGF0IGlzIHBh
c3NlZCwgYW5kIHVuZGVmaW5lZCBvdGhlcndpc2UuCisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4
ZWMtPmFyZ3VtZW50KDApOworCisgICAgLy8gMi4gU2V0IGNhbGxiYWNrJ3MgY2FsbGJhY2sgdGhp
cyB2YWx1ZSB0byByZXNvbHZlcidzIGFzc29jaWF0ZWQgcHJvbWlzZS4KKyAgICAvLyAzLiBMZXQg
dmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBpbnZva2luZyBjYWxsYmFjayB3aXRoIGFyZ3VtZW50IGFz
IGFyZ3VtZW50LgorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgY2FsbGJh
Y2tBcmd1bWVudHM7CisgICAgY2FsbGJhY2tBcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHJlc29sdmVyLT5wcm9taXNlKCksIGNhbGxiYWNrQXJndW1lbnRzKTsKKworICAgIC8v
IDQuIElmIGludm9raW5nIGNhbGxiYWNrIHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQgYW5k
IHJ1biByZXNvbHZlcidzIHJlamVjdAorICAgIC8vICAgIHdpdGggdGhlIHRocm93biBleGNlcHRp
b24gYXMgYXJndW1lbnQgYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIHNldC4KKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5l
eGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKworICAgICAgICBy
ZXNvbHZlci0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbiwgSlNQcm9taXNlUmVzb2x2ZXI6OlJlc29s
dmVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBPdGhlcndpc2UsIHJ1biByZXNvbHZlcidzIHJl
c29sdmUgd2l0aCB2YWx1ZSBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgc2V0LgorICAgIHJlc29s
dmVyLT5yZXNvbHZlKGV4ZWMsIHZhbHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6UmVzb2x2ZVN5bmNo
cm9ub3VzbHkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworQ2FsbFR5cGUgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbFByb21pc2VXcmFwcGVyQ2FsbGJhY2s7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNhbGxiYWNr
X2gKKyNkZWZpbmUgSlNQcm9taXNlQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXI7CisK
K2NsYXNzIEpTUHJvbWlzZUNhbGxiYWNrIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBBbGdv
cml0aG0geworICAgICAgICBGdWxmaWxsLAorICAgICAgICBSZXNvbHZlLAorICAgICAgICBSZWpl
Y3QsCisgICAgfTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VDYWxsYmFjayogY3JlYXRlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBB
bGdvcml0aG0pOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6
CisgICAgSlNQcm9taXNlQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBbGdv
cml0aG0pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUmVz
b2x2ZXIqKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCisgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2VDYWxsYmFjayhFeGVj
U3RhdGUqKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4gbV9yZXNvbHZlcjsK
KyAgICBBbGdvcml0aG0gbV9hbGdvcml0aG07Cit9OworCitjbGFzcyBKU1Byb21pc2VXcmFwcGVy
Q2FsbGJhY2sgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9taXNlV3JhcHBlckNh
bGxiYWNrKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBK
U1Byb21pc2VSZXNvbHZlciosIEpTVmFsdWUgY2FsbGJhY2spOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNr
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqLCBKU1Byb21pc2VSZXNvbHZlciosIEpTVmFsdWUgY2FsbGJhY2spOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJvbWlzZVdyYXBwZXJDYWxsYmFjayhFeGVjU3RhdGUqKTsK
KyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKwor
ICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4gbV9yZXNvbHZlcjsKKyAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gbV9jYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gSlNQcm9taXNlQ2FsbGJhY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQVNTRVJUX0hBU19U
UklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlQ29uc3RydWN0b3IpOworCisvLyBzdGF0aWMgUHJv
bWlzZSBmdWxmaWxsKGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSopOworLy8gc3Rh
dGljIFByb21pc2UgcmVzb2x2ZShhbnkgdmFsdWUpOyAvLyBzYW1lIGFzIGFueSh2YWx1ZSkKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVu
Y1Jlc29sdmUoRXhlY1N0YXRlKik7CisvLyBzdGF0aWMgUHJvbWlzZSByZWplY3QoYW55IHZhbHVl
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JlamVjdChFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNQ
cm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Byb21pc2VDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBK
U1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHByb21pc2VDb25zdHJ1Y3RvclRhYmxl
CisgIGZ1bGZpbGwgICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVzb2x2ZSAgICAgICAgIEpTUHJvbWlzZUNv
bnN0cnVjdG9yRnVuY1Jlc29sdmUgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBy
ZWplY3QgICAgICAgICAgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVqZWN0ICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitKU1Byb21pc2VDb25zdHJ1Y3Rvciog
SlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VQcm90b3R5
cGUqIHByb21pc2VQcm90b3R5cGUpCit7CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb21pc2VQcm90
b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6SlNQ
cm9taXNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKSAKK3sKK30KKwordm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2UiKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5h
cmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisKKyAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CisKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1
bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpOworICAgIAorICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisg
ICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhl
Yy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsKKworICAgIC8vIDIuIExldCByZXNvbHZlciBiZSBwcm9t
aXNlJ3MgYXNzb2NpYXRlZCByZXNvbHZlci4KKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2
ZXIgPSBwcm9taXNlLT5yZXNvbHZlcigpOworCisgICAgLy8gMy4gU2V0IGluaXQncyBjYWxsYmFj
ayB0aGlzIHZhbHVlIHRvIHByb21pc2UuCisgICAgLy8gNC4gSW52b2tlIGluaXQgd2l0aCByZXNv
bHZlciBwYXNzZWQgYXMgcGFyYW1ldGVyLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGluaXRB
cmd1bWVudHM7CisgICAgaW5pdEFyZ3VtZW50cy5hcHBlbmQocmVzb2x2ZXIpOworICAgIGNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgcHJvbWlzZSwgaW5pdEFyZ3VtZW50
cyk7CisKKyAgICAvLyA1LiBJZiBpbml0IHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQsIGFu
ZCB0aGVuLCBpZiByZXNvbHZlcidzIHJlc29sdmVkIGZsYWcKKyAgICAvLyAgICBpcyB1bnNldCwg
cnVuIHJlc29sdmVyJ3MgcmVqZWN0IHdpdGggdGhlIHRocm93biBleGNlcHRpb24gYXMgYXJndW1l
bnQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFsdWUgZXhj
ZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9u
KCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhjZXB0
aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQor
CitDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RQcm9taXNlOworICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJikKK3sKKyAgICByZXR1cm4gQ2FsbFR5cGVOb25lOworfQor
Citib29sIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRl
cm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnByb21pc2VDb25zdHJ1Y3RvclRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0
cnVjdG9yRnVuY0Z1bGZpbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJl
c29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZXIo
KS0+ZnVsZmlsbChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
UHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jlc29sdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50
IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgp
LT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6
Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlz
ZS0+cmVzb2x2ZXIoKS0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVjdChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBv
bmUgYXJndW1lbnQiKSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0g
SlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICBwcm9taXNlLT5yZXNvbHZlcigpLT5yZWplY3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yX2gK
KyNkZWZpbmUgSlNQcm9taXNlQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwor
CitjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2VDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxG
dW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU1Byb21pc2VDb25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5o
IgorI2luY2x1ZGUgIkpTUHJvbWlzZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVz
b2x2ZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Byb21pc2VQcm90b3R5cGUpOwor
CisvLyBQcm9taXNlIHRoZW4oW1RyZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55
Q2FsbGJhY2sgZnVsZmlsbENhbGxiYWNrLCBbVHJlYXRVbmRlZmluZWRBcz1NaXNzaW5nXSBvcHRp
b25hbCBBbnlDYWxsYmFjayByZWplY3RDYWxsYmFjayk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jVGhlbihFeGVjU3RhdGUqKTsKKy8v
IFByb21pc2UgY2F0Y2goW1RyZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55Q2Fs
bGJhY2sgcmVqZWN0Q2FsbGJhY2spOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNQcm9taXNlUHJvdG90eXBlRnVuY0NhdGNoKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNs
dWRlICJKU1Byb21pc2VQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSlNQcm9taXNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90
eXBlIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlUHJv
dG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHByb21pc2VQ
cm90b3R5cGVUYWJsZQorICB0aGVuICAgICAgICAgSlNQcm9taXNlUHJvdG90eXBlRnVuY1RoZW4g
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBjYXRjaCAgICAgICAgSlNQcm9taXNl
UHJvdG90eXBlRnVuY0NhdGNoICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAor
Ki8KKworSlNQcm9taXNlUHJvdG90eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2VQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90
b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9u
RmluYWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUHJvbWlz
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworfQorCitib29sIEpTUHJv
bWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlUHJv
dG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworc3RhdGljIEludGVy
bmFsRnVuY3Rpb24qIHdyYXBDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY2FsbGJhY2ssIEpTUHJvbWlzZVJlc29sdmVyKiByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgaWYg
KCFjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gSlNQcm9taXNlV3JhcHBl
ckNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21p
c2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIGNhbGxiYWNrKTsKKyAgICBy
ZXR1cm4gSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKCksIHJlc29sdmVyLCBhbGdvcml0aG0p
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1
bmNUaGVuKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Byb21pc2UqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRo
aXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJSZWNlaXZlciBvZiB0aGVuIG11c3QgYmUgYSBQcm9taXNlIikpOworCisgICAg
SlNWYWx1ZSBmdWxmaWxsQ2FsbGJhY2sgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWZ1
bGZpbGxDYWxsYmFjay5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bGZpbGxDYWxsYmFj
aywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCIpKTsK
KyAgICB9CisgICAgCisgICAgSlNWYWx1ZSByZWplY3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIGlmICghcmVqZWN0Q2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShyZWplY3RDYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBzZWNv
bmQgYXJndW1lbnQiKSk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyAxLiBMZXQgcHJvbWlz
ZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6
Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisKKyAgICAvLyAy
LiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0ZWQgcmVzb2x2ZXIuCisgICAgSlNQ
cm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZS0+cmVzb2x2ZXIoKTsKKworICAgIC8v
IDMuIExldCBmdWxmaWxsV3JhcHBlciBiZSBhIHByb21pc2Ugd3JhcHBlciBjYWxsYmFjayBmb3Ig
cmVzb2x2ZXIgYW5kIGZ1bGZpbGxDYWxsYmFjayBpZiBmdWxmaWxsQ2FsbGJhY2sgaXMKKyAgICAv
LyAgICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQg
aXRzIGZ1bGZpbGwgYWxnb3JpdGhtIG90aGVyd2lzZS4KKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBm
dWxmaWxsV3JhcHBlciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3QsIGZ1bGZpbGxD
YWxsYmFjaywgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpGdWxmaWxsKTsKKworICAgIC8v
IDQuIExldCByZWplY3RXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVyIGNhbGxiYWNrIGZvciBy
ZXNvbHZlciBhbmQgcmVqZWN0Q2FsbGJhY2sgaWYgcmVqZWN0Q2FsbGJhY2sgaXMKKyAgICAvLyAg
ICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQgaXRz
IHJlamVjdCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVybmFsRnVuY3Rpb24qIHJlamVj
dFdyYXBwZXIgPSB3cmFwQ2FsbGJhY2soZXhlYywgZ2xvYmFsT2JqZWN0LCByZWplY3RDYWxsYmFj
aywgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZWplY3QpOworCisgICAgLy8gNS4gQXBw
ZW5kIGZ1bGZpbGxXcmFwcGVyIGFuZCByZWplY3RXcmFwcGVyIHRvIHRoZSBjb250ZXh0IG9iamVj
dC4KKyAgICB0aGlzT2JqZWN0LT5hcHBlbmRDYWxsYmFja3MoZXhlYywgZnVsZmlsbFdyYXBwZXIs
IHJlamVjdFdyYXBwZXIpOworCisgICAgLy8gNi4gUmV0dXJuIHByb21pc2UuCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jQ2F0Y2goRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTUHJvbWlzZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlKj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIGNhdGNoIG11
c3QgYmUgYSBQcm9taXNlIikpOworICAgIAorICAgIEpTVmFsdWUgcmVqZWN0Q2FsbGJhY2sgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXJlamVjdENhbGxiYWNrLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEocmVqZWN0Q2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmlu
ZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiKSk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyAx
LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7
CisKKyAgICAvLyAyLiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0ZWQgcmVzb2x2
ZXIuCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZS0+cmVzb2x2ZXIo
KTsKKworICAgIC8vIDMuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBuZXcgcHJvbWlzZSBjYWxs
YmFjayBmb3IgcmVzb2x2ZXIgYW5kIGl0cyBmdWxmaWxsIGFsZ29yaXRobS4KKyAgICBJbnRlcm5h
bEZ1bmN0aW9uKiBmdWxmaWxsV3JhcHBlciA9IEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgp
LCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZpbGwpOworCisgICAgLy8gNC4gTGV0
IHJlamVjdFdyYXBwZXIgYmUgYSBwcm9taXNlIHdyYXBwZXIgY2FsbGJhY2sgZm9yIHJlc29sdmVy
IGFuZCByZWplY3RDYWxsYmFjayBpZiByZWplY3RDYWxsYmFjayBpcworICAgIC8vICAgIG5vdCBv
bWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgcmVqZWN0
IGFsZ29yaXRobSBvdGhlcndpc2UuCisgICAgSW50ZXJuYWxGdW5jdGlvbiogcmVqZWN0V3JhcHBl
ciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3QsIHJlamVjdENhbGxiYWNrLCByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdCk7CisKKyAgICAvLyA1LiBBcHBlbmQgZnVs
ZmlsbFdyYXBwZXIgYW5kIHJlamVjdFdyYXBwZXIgdG8gdGhlIGNvbnRleHQgb2JqZWN0LgorICAg
IHRoaXNPYmplY3QtPmFwcGVuZENhbGxiYWNrcyhleGVjLCBmdWxmaWxsV3JhcHBlciwgcmVqZWN0
V3JhcHBlcik7CisKKyAgICAvLyA2LiBSZXR1cm4gcHJvbWlzZS4KKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNQcm9taXNlUHJvdG90eXBlX2gKKyNkZWZpbmUgSlNQcm9taXNlUHJvdG90eXBlX2gK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1By
b21pc2VQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9taXNlUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlUHJv
dG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZVBy
b3RvdHlwZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
UHJvbWlzZVJlc29sdmVyLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZUNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVy
OjpzX2luZm8gPSB7ICJQcm9taXNlUmVzb2x2ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTUHJvbWlzZVJlc29sdmVyKSB9OworCitKU1Byb21pc2VSZXNvbHZl
ciogSlNQcm9taXNlUmVzb2x2ZXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Byb21pc2UqIHByb21pc2UpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZVJlc29sdmVyPih2bS5oZWFwKSkg
SlNQcm9taXNlUmVzb2x2ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgcHJvbWlzZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBK
U1Byb21pc2VSZXNvbHZlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VSZXNvbHZlcjo6SlNQ
cm9taXNlUmVzb2x2ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9u
RmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1faXNSZXNvbHZlZChmYWxzZSkKK3sK
K30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1By
b21pc2UqIHByb21pc2UpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBtX3Byb21pc2Uuc2V0KHZtLCB0aGlzLCBwcm9t
aXNlKTsKK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2UpOworfQorCitKU1Byb21pc2UqIEpTUHJvbWlzZVJl
c29sdmVyOjpwcm9taXNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9taXNlLmdldCgpOwor
fQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpmdWxmaWxsSWZOb3RSZXNvbHZlZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2ZWQpIHsKKyAg
ICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgZnVsZmlsbChleGVjLCB2YWx1ZSk7
CisgICAgfQorfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZXNvbHZlSWZOb3RSZXNvbHZl
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2
ZWQpIHsKKyAgICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzb2x2ZShleGVj
LCB2YWx1ZSk7CisgICAgfQorfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZWplY3RJZk5v
dFJlc29sdmVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIW1f
aXNSZXNvbHZlZCkgeworICAgICAgICBtX2lzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICByZWpl
Y3QoZXhlYywgdmFsdWUpOworICAgIH0KK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZnVs
ZmlsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlc29sdmVyTW9kZSBtb2RlKQor
eworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFzc29jaWF0
ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIGZ1bGZpbGxlZC4K
KyAgICBtX3Byb21pc2UtPnNldFN0YXRlKEpTUHJvbWlzZTo6RnVsZmlsbGVkKTsKKworICAgIC8v
IDMuIFNldCBwcm9taXNlJ3MgcmVzdWx0IHRvIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+c2V0UmVz
dWx0KGV4ZWMtPnZtKCksIHZhbHVlKTsKKworICAgIC8vIDQuIElmIHRoZSBzeW5jaHJvbm91cyBm
bGFnIGlzIHNldCwgcHJvY2VzcyBwcm9taXNlJ3MgZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1
ZS4KKyAgICBpZiAobW9kZSA9PSBSZXNvbHZlU3luY2hyb25vdXNseSkgeworICAgICAgICBtX3By
b21pc2UtPnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSBzeW5j
aHJvbm91cyBmbGFnIGlzIHVuc2V0LCBxdWV1ZSBhIHRhc2sgdG8gcHJvY2VzcyBwcm9taXNlJ3Mg
ZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBtX3Byb21pc2UtPnF1ZXVlVGFza1Rv
UHJvY2Vzc0Z1bGZpbGxDYWxsYmFja3MoZXhlYyk7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2
ZXI6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBSZXNvbHZlck1vZGUg
bW9kZSkKK3sKKyAgICAvLyAxLiBMZXQgdGhlbiBiZSBudWxsLgorICAgIEpTVmFsdWUgdGhlbiA9
IGpzTnVsbCgpOworICAgIAorICAgIC8vIDIuIElmIHZhbHVlIGlzIGEgSmF2YVNjcmlwdCBPYmpl
Y3QsIHNldCB0aGVuIHRvIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgSmF2YVNjcmlwdCBbW0dl
dF1dIGludGVybmFsCisgICAgLy8gICAgbWV0aG9kIG9mIHZhbHVlIHdpdGggcHJvcGVydHkgbmFt
ZSB0aGVuLgorICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRoZW4gPSB2YWx1
ZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRoZW4pOworCisgICAgICAgIC8vIDMu
IElmIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlv
biwgY2F0Y2ggaXQgYW5kIHJ1biByZWplY3Qgd2l0aCB0aGUgdGhyb3duCisgICAgICAgIC8vICAg
IGV4Y2VwdGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LCBhbmQgdGhlbiB0ZXJt
aW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewor
ICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAg
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgICAgIHJlamVjdChleGVj
LCBleGNlcHRpb24sIG1vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gNC4gSWYgSmF2YVNjcmlwdCBJc0NhbGxhYmxlKHRoZW4pIGlzIHRydWUsIHJ1biB0
aGVzZSBzdWJzdGVwcyBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHM6CisgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEodGhlbiwgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVO
b25lKSB7CisgICAgICAgICAgICAvLyA0LjEuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBwcm9t
aXNlIGNhbGxiYWNrIGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZXNvbHZlIGFsZ29y
aXRobS4KKyAgICAgICAgICAgIEpTUHJvbWlzZUNhbGxiYWNrKiBmdWxmaWxsQ2FsbGJhY2sgPSBK
U1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBnbG9iYWxPYmpl
Y3QoKS0+cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKCksIHRoaXMsIEpTUHJvbWlzZUNhbGxiYWNr
OjpSZXNvbHZlKTsKKworICAgICAgICAgICAgLy8gNC4yLiBMZXQgcmVqZWN0Q2FsbGJhY2sgYmUg
YSBwcm9taXNlIGNhbGxiYWNrIGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZWplY3Qg
YWxnb3JpdGhtLgorICAgICAgICAgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHJlamVjdENhbGxiYWNr
ID0gSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgZ2xvYmFs
T2JqZWN0KCktPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgpLCB0aGlzLCBKU1Byb21pc2VDYWxs
YmFjazo6UmVqZWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gNC4zLiBDYWxsIHRo
ZSBKYXZhU2NyaXB0IFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiB0aGVuIHdpdGggdGhpcyB2
YWx1ZSB2YWx1ZSBhbmQgZnVsZmlsbENhbGxiYWNrCisgICAgICAgICAgICAvLyAgICAgIGFuZCBy
ZWplY3RDYWxsYmFjayBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciB0aGVuQXJndW1lbnRzOworICAgICAgICAgICAgdGhlbkFyZ3VtZW50cy5hcHBlbmQoZnVs
ZmlsbENhbGxiYWNrKTsKKyAgICAgICAgICAgIHRoZW5Bcmd1bWVudHMuYXBwZW5kKHJlamVjdENh
bGxiYWNrKTsKKyAgICAgICAgICAgIGNhbGwoZXhlYywgdGhlbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB2YWx1ZSwgdGhlbkFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgIC8vIDQuNCBJZiBjYWxsaW5n
IHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QgdGhyZXcgYW4gZXhjZXB0aW9uLCBjYXRjaCBp
dCBhbmQgcnVuIGNvbnRleHQgb2JqZWN0J3MKKyAgICAgICAgICAgIC8vICAgICByZWplY3Qgd2l0
aCB0aGUgdGhyb3duIGV4Y2VwdGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0Lgor
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAg
SlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBl
eGVjLT5jbGVhckV4Y2VwdGlvbigpOworCisgICAgICAgICAgICAgICAgcmVqZWN0KGV4ZWMsIGV4
Y2VwdGlvbiwgbW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gNS4gUnVuIGNv
bnRleHQgb2JqZWN0J3MgZnVsZmlsbCB3aXRoIHZhbHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxh
ZyBpZiBzZXQuCisgICAgZnVsZmlsbChleGVjLCB2YWx1ZSwgbW9kZSk7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlUmVzb2x2ZXI6OnJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJl
c29sdmVyTW9kZSBtb2RlKQoreworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0
IG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0
YXRlIHRvIHJlamVjdGVkLgorICAgIG1fcHJvbWlzZS0+c2V0U3RhdGUoSlNQcm9taXNlOjpSZWpl
Y3RlZCk7CisKKyAgICAvLyAzLiBTZXQgcHJvbWlzZSdzIHJlc3VsdCB0byB2YWx1ZS4KKyAgICBt
X3Byb21pc2UtPnNldFJlc3VsdChleGVjLT52bSgpLCB2YWx1ZSk7CisKKyAgICAvLyA0LiBJZiB0
aGUgc3luY2hyb25vdXMgZmxhZyBpcyBzZXQsIHByb2Nlc3MgcHJvbWlzZSdzIHJlamVjdCBjYWxs
YmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBpZiAobW9kZSA9PSBSZXNvbHZlU3luY2hyb25vdXNseSkg
eworICAgICAgICBtX3Byb21pc2UtPnByb2Nlc3NSZWplY3RDYWxsYmFja3NXaXRoVmFsdWUoZXhl
YywgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIDUuIE90aGVy
d2lzZSwgdGhlIHN5bmNocm9ub3VzIGZsYWcgaXMgdW5zZXQsIHF1ZXVlIGEgdGFzayB0byBwcm9j
ZXNzIHByb21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggdmFsdWUuCisgICAgbV9wcm9taXNl
LT5xdWV1ZVRhc2tUb1Byb2Nlc3NSZWplY3RDYWxsYmFja3MoZXhlYyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VSZXNvbHZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlcl9oCisjZGVmaW5lIEpT
UHJvbWlzZVJlc29sdmVyX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU1Byb21pc2U7CisKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVJlc29sdmVyKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBKU1Byb21pc2UqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgSlNQcm9taXNlKiBwcm9taXNlKCkgY29uc3Q7CisKKyAgICB2b2lkIGZ1bGZpbGxJ
Zk5vdFJlc29sdmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHZvaWQgcmVzb2x2ZUlmTm90
UmVzb2x2ZWQoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgdm9pZCByZWplY3RJZk5vdFJlc29s
dmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworCisgICAgZW51bSBSZXNvbHZlck1vZGUgeworICAg
ICAgICBSZXNvbHZlU3luY2hyb25vdXNseSwKKyAgICAgICAgUmVzb2x2ZUFzeW5jaHJvbm91c2x5
LAorICAgIH07CisKKyAgICB2b2lkIGZ1bGZpbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUmVzb2x2
ZXJNb2RlID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsKKyAgICB2b2lkIHJlc29sdmUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUmVzb2x2ZXJNb2RlID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsKKyAg
ICB2b2lkIHJlamVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBSZXNvbHZlck1vZGUgPSBSZXNvbHZl
QXN5bmNocm9ub3VzbHkpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTUHJvbWlzZSopOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisK
K3ByaXZhdGU6CisgICAgSlNQcm9taXNlUmVzb2x2ZXIoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IFdyaXRlQmFycmllcjxKU1Byb21pc2U+IG1fcHJvbWlzZTsKKyAgICBib29sIG1faXNSZXNvbHZl
ZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNQcm9taXNlUmVzb2x2
ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2
ZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIK
KworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
TG9va3VwLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcikgfTsKKworSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3RvciogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQor
eworICAgIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9taXNlUHJv
dG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9t
aXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VSZXNvbHZl
ckNvbnN0cnVjdG9yOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5j
dGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Byb21p
c2VSZXNvbHZlclByb3RvdHlwZSogcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKK30KKworQ29uc3RydWN0VHlwZSBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQorewor
ICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKQoreworICAg
IHJldHVybiBDYWxsVHlwZU5vbmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJl
c29sdmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcl9oCisKKyNp
bmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKKworY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSosIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisK
K3ByaXZhdGU6CisgICAgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZSk7CisKKy8vIHZvaWQgZnVsZmlsbChvcHRpb25hbCBhbnkg
dmFsdWUpOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGVGdW5jRnVsZmlsbChFeGVjU3RhdGUqKTsKKy8vIHZvaWQgcmVzb2x2ZShv
cHRpb25hbCBhbnkgdmFsdWUpOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZShFeGVjU3RhdGUqKTsKKy8vIHZv
aWQgcmVqZWN0KG9wdGlvbmFsIGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZWplY3QoRXhlY1N0YXRl
Kik7CisKK30KKworI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUiLCAmQmFzZTo6c19p
bmZvLCAwLCBFeGVjU3RhdGU6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2Ug
Zm9yIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlVGFibGUKKyAgZnVsZmlsbCAgICAgICAgIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlRnVuY0Z1bGZpbGwgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNv
bHZlICAgICAgICAgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZSAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlamVjdCAgICAgICAgICBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZUZ1bmNSZWplY3QgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGU+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZShleGVjLCBzdHJ1
Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgc3RydWN0dXJlKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpKU1Byb21p
c2VSZXNvbHZlclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52
bSgpKTsKK30KKworYm9vbCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSo+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jRnVsZmlsbChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09i
amVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlY2VpdmVyIG9mIGZ1bGZpbGwgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsK
KworICAgIHRoaXNPYmplY3QtPmZ1bGZpbGxJZk5vdFJlc29sdmVkKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
RnVuY1Jlc29sdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2VSZXNvbHZlcio+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBvZiByZXNvbHZlIG11c3Qg
YmUgYSBQcm9taXNlUmVzb2x2ZXIiKSk7CisKKyAgICB0aGlzT2JqZWN0LT5yZXNvbHZlSWZOb3RS
ZXNvbHZlZChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZWplY3QoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Byb21p
c2VSZXNvbHZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJS
ZWNlaXZlciBvZiByZWplY3QgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsKKworICAgIHRo
aXNPYmplY3QtPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZV9oCisjZGVmaW5lIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2
YXRlOgorICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSw5IEBAIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwVGFibGU7CiBleHRlcm4gY29u
c3QgSGFzaFRhYmxlIHJlZ0V4cENvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRh
YmxlIHJlZ0V4cFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdD
b25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUHJvdG90eXBl
VGFibGU7CitleHRlcm4gY29uc3QgSGFzaFRhYmxlIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOwor
ZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsKIAog
Ly8gTm90ZTogUGxhdGZvcm0uaCB3aWxsIGVuZm9yY2UgdGhhdCBFTkFCTEUoQVNTRU1CTEVSKSBp
cyB0cnVlIGlmIGVpdGhlcgogLy8gRU5BQkxFKEpJVCkgb3IgRU5BQkxFKFlBUlJfSklUKSBvciBi
b3RoIGFyZSBlbmFibGVkLiBUaGUgY29kZSBiZWxvdwpAQCAtMTYxLDYgKzE2NCw5IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHJlZ0V4cENvbnN0cnVj
dG9yVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkp
CiAgICAgLCByZWdFeHBQcm90b3R5cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdF
eHBQcm90b3R5cGVUYWJsZSkpCiAgICAgLCBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8
SGFzaFRhYmxlPihKU0M6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKQorICAgICwgcHJvbWlzZVBy
b3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnByb21pc2VQcm90b3R5cGVUYWJs
ZSkpCisgICAgLCBwcm9taXNlQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
Ojpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSkpCisgICAgLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVU
YWJsZSkpCiAgICAgLCBpZGVudGlmaWVyVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJl
YWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmllclRhYmxl
KCkpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKSkKICAg
ICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCkBAIC0zMTAsNiArMzE2LDkg
QEAgVk06On5WTSgpCiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsK
ICAgICByZWdFeHBQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdDb25z
dHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIHByb21pc2VQcm90b3R5cGVUYWJsZS0+
ZGVsZXRlVGFibGUoKTsKKyAgICBwcm9taXNlQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUo
KTsKKyAgICBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKIAog
ICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihhcnJheUNvbnN0cnVjdG9yVGFi
bGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oYXJyYXlQcm90b3R5
cGVUYWJsZSkpOwpAQCAtMzI4LDYgKzMzNyw5IEBAIFZNOjp+Vk0oKQogICAgIGZhc3REZWxldGUo
Y29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFz
dERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7CiAg
ICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFi
bGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZVByb3Rv
dHlwZVRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21p
c2VDb25zdHJ1Y3RvclRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJs
ZSo+KHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKSk7CiAKICAgICBkZWxldGUgZW1wdHlM
aXN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1NDU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzNSw2ICsyMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJl
Z0V4cFByb3RvdHlwZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0
cnVjdG9yVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvbWlzZVByb3RvdHlwZVRh
YmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOwor
ICAgICAgICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOwog
ICAgICAgICAKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwog
ICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA4LTI0ICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFByb21pc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyNjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW5p
dGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcyAtIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNwcm9taXNlcy4KKyAgICAgICAgLSBEZXNwaXRlIFByb21pc2VzIGJlaW5nIGRlZmluZWQg
aW4gdGhlIERPTSwgdGhlIGltcGxlbWVudGF0aW9uIGlzIGJlaW5nIHB1dCBpbiBKU0MKKyAgICAg
ICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIFByb21pc2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVm
aW5lZCBpbiBFQ01BU2NyaXB0LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2pzL1Byb21pc2UtYWxy
ZWFkeS1mdWxmaWxsZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWFscmVh
ZHktcmVqZWN0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWFscmVhZHkt
cmVzb2x2ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdv
cmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2UtZXhjZXB0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJv
bWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4t
d29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtaW5pdC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXJlamVjdC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1By
b21pc2Utc3RhdGljLWZ1bGZpbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNl
LXN0YXRpYy1yZWplY3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1yZXNvbHZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLWluLXdv
cmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1j
YWxsYmFja3MtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Ut
dGhlbi13aXRob3V0LWNhbGxiYWNrcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21p
c2UtdGhlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLmh0bWwKKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21h
a2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0dsb2JhbE9iamVjdENhbGxiYWNrOjp+SlNHbG9iYWxPYmplY3RDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjYWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpKU0dsb2JhbE9iamVjdFRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjp+SlNHbG9iYWxPYmpl
Y3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0VGFzazo6cGVyZm9ybVRh
c2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKToKKyAgICAg
ICAgQWRkIGEgbmV3IHRhc2sgdHlwZSB0byBiZSB1c2VkIHdpdGggdGhlIEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlJ3MgbmV3IFF1ZXVlVGFza1RvRXZlbnRMb29wIGNhbGxiYWNrLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICBJbXBsZW1lbnQgdGhlIEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIGNhbGxiYWNrLCBRdWV1ZVRhc2tUb0V2ZW50TG9vcC4gCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaDoKKyAgICAgICAgQWxsIHVzaW5n
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBhcyBhIHNpbXBsZSBSQUlJIG9iamVjdC4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNz
RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6
OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVu
dExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6
CisgICAgICAgIEFkZCBhIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIGFuZCBpbXBsZW1lbnQgUXVl
dWVUYXNrVG9FdmVudExvb3AuIEZvcndhcmQgdGhlIG90aGVyIGNhbGxiYWNrcworICAgICAgICB0
byBKU0dsb2JhbE9iamVjdCBzbyB0aGV5IHJldGFpbiB0aGVpciBleGlzdGluZyBiZWhhdmlvci4K
KwogMjAxMy0wOC0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBKYXZhU2NyaXB0IGJpbmRpbmcgZm9yIENsaXBib2FyZDo6dHlwZXMgbW9yZSBub3JtYWwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU0NTc4KQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjMz
Miw2ICsyMzMyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdFRhc2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdFRhc2suaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01J
bXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24g
MTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDYgKzEwMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01JbXBsZW1l
bnRhdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlD
dXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAg
XApAQCAtMTM1Myw2ICsxMzU0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIFwKICAgICBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdFRhc2suaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogICAg
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxNTQ1NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUz
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisgICAgYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25D
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1
NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MTM4LDYgKzE2MTM4LDIwIEBACiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3RU
YXNrLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDY3Nyw2ICsyMDY5MSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RpY3Rpb25hcnkuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NQmluZGluZy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNE
T01XaW5kb3dCYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU0RPTVdpbmRvd0N1c3RvbS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcSlNET01XaW5kb3dTaGVsbC5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC00NDgyLDYgKzQ0ODIsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01JbXBsZW1l
bnRhdGlvbkN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTE1NzgsNiArMTE1ODEsOSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuaCI+CiAgICAgICA8Rmls
dGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suaCI+CisgICAg
ICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0Vycm9ySGFuZGxlci5oIj4KICAgICAg
IDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkzNSw2ICsxOTM1LDggQEAKIAkJN0FGRDRB
OEIxMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAv
KiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2
RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNT
VkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKKwkJN0MyQkREM0QxN0M3Rjk4QzAwMzhGRjE1IC8q
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcCAqLzsgfTsKKwkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9N
R2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3Zlcmxh
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUy
MkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CiAJCTdD
NTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkExN0I3
NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgKi87IH07CiAJCTdD
NTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZCMTdCNzRC
NjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCAqLzsgfTsKQEAgLTgzMzAs
NiArODMzMiw4IEBACiAJCTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMy
NzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNE
T01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAv
KiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzUyMkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NTk4LDEyICsxODYwMiwxMiBAQAogCQkJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBD
b25zdHJ1Y3RvcnMgKi8sCiAJCQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAq
LywKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAor
CQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJ
CQkJNDlCMzc2MEExNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuY3BwICovLAogCQkJCTQ5
QjM3NjBCMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmggKi8sCiAJCQkJOTczQUEzRjIx
NUQwODhGMDAwRTM4QTg1IC8qIEJpbmRpbmdTdGF0ZS5jcHAgKi8sCiAJCQkJOTczQUEzRjMxNUQw
ODhGMDAwRTM4QTg1IC8qIEJpbmRpbmdTdGF0ZS5oICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkw
MDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oICovLAotCQkJCTkzRjhCMzA2
MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJMzEyRDY3QjAx
NTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwICovLAogCQkJCTMxNjAyM0VGMTUzMkM0
MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQkM1M0RBNjExMTQzMTRCRDAwMEQ4
MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgKi8sCkBAIC0xODYyMiw2ICsxODYyNiw4
IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAog
CQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8s
CiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8s
CisJCQkJN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAgKi8sCisJCQkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0
VGFzay5oICovLAogCQkJCUJDNjkzMjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jh
c2UuY3BwICovLAogCQkJCUJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jh
c2UuaCAqLywKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVs
bC5jcHAgKi8sCkBAIC0yMzcxNyw2ICsyMzcyMyw3IEBACiAJCQkJNDlFOTExRDAwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEQjFC
QzZBMTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0
VGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3QjQ5MTYxNkE5QjA5NDAwMUM4ODM5IC8qIFRy
YW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExRDIwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODU0RkU3MzcwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjI4MCw2ICsyNjI4Nyw3IEBACiAJCQkJQkMwQjM1ODcxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1
bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBMzA5QUMxNTYxQzk5QjAwQkJEOEU1IC8q
IFJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBCMzU4MzE0QzRGOTU0MDA1NUUy
MkEgLyogUnVuTG9vcE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDMkJERDNEMTdDN0Y5OEMw
MDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE1NjlEMjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5jcHAiCiAjaW5j
bHVkZSAiSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3QuY3BwIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCiAjaW5jbHVkZSAi
SlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01NaW1lVHlwZUFy
cmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0VGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9i
amVjdFRhc2suaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayA6IHB1YmxpYyBS
ZWZDb3VudGVkPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJh
Y2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2s+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0
aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxPYmplY3RDYWxsYmFjayhnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkpT
R2xvYmFsT2JqZWN0Q2FsbGJhY2soKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNhbGwoKQor
ICAgIHsKKyAgICAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KHRo
aXMpOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7CisK
KyAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsK
KworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbV9nbG9iYWxPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAgICAgLy8gV2Ugd2lsbCBmYWlsIHRv
IGdldCB0aGUgY29udGV4dCBpZiB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCisgICAgICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBXaGVuIG9u
IHRoZSBtYWluIHRocmVhZCAoZS5nLiB0aGUgZG9jdW1lbnQncyB0aHJlYWQpLCB3ZSBuZWVkIHRv
IG1ha2Ugc3VyZSB0bworICAgICAgICAvLyBwdXNoIHRoZSBjdXJyZW50J3QgRXhlY1N0YXRlIG9u
IHRvIHRoZSBKU01haW5UaHJlYWRFeGVjU3RhdGUgc3RhY2suCisgICAgICAgIGlmIChjb250ZXh0
LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJy
ZW50U3RhdGUoZXhlYyk7CisgICAgICAgICAgICBtX2Z1bmN0aW9uUHRyKGV4ZWMsIG1fdGFza0Nv
bnRleHQuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZnVuY3Rpb25QdHIo
ZXhlYywgbV90YXNrQ29udGV4dC5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2xv
YmFsT2JqZWN0Q2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0
ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCisgICAg
ICAgIDogQWN0aXZlRE9NQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCisgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9i
YWxPYmplY3QpCisgICAgICAgICwgbV9mdW5jdGlvblB0cihmdW5jdGlvblB0cikKKyAgICAgICAg
LCBtX3Rhc2tDb250ZXh0KHRhc2tDb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICBTdHJvbmc8
SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgbV9mdW5jdGlv
blB0cjsKKyAgICBSZWZQdHI8VGFza0NvbnRleHQ+IG1fdGFza0NvbnRleHQ7Cit9OworCitKU0ds
b2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BD
YWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRhc2tDb250ZXh0PiB0
YXNrQ29udGV4dCkKKyAgICA6IG1fY2FsbGJhY2soSlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3Jl
YXRlKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSkKK3sKK30KKworSlNH
bG9iYWxPYmplY3RUYXNrOjp+SlNHbG9iYWxPYmplY3RUYXNrKCkKK3sKK30KKwordm9pZCBKU0ds
b2JhbE9iamVjdFRhc2s6OnBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorewor
ICAgIG1fY2FsbGJhY2stPmNhbGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RU
YXNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdFRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBKU0RPTUdsb2JhbE9iamVjdFRhc2tfaAorI2RlZmluZSBKU0RPTUdsb2Jh
bE9iamVjdFRhc2tfaAorCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjazsKKworY2xhc3MgSlNHbG9iYWxPYmplY3RUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPEpTR2xvYmFsT2JqZWN0VGFzaz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1Rv
RXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6
OlRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgSlNHbG9iYWxPYmplY3RUYXNrKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tD
b250ZXh0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3RUYXNrKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwor
cHJpdmF0ZToKKyAgICBKU0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QqLCBKU0M6
Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVu
Y3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4pOworCisgICAgUmVmUHRyPEpT
R2xvYmFsT2JqZWN0Q2FsbGJhY2s+IG1fY2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBKU0RPTUdsb2JhbE9iamVjdFRhc2tfaApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAx
NTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dD
dXN0b20uaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC01
MCw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShjb25zdCAKIAog
Y29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpT
RE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01X
aW5kb3dCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRv
d0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zy
b20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJ
bnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkIH07Citjb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywg
JnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2Ny
aXB0RXhwZXJpbWVudHNFbmFibGVkLCAmcXVldWVUYXNrVG9FdmVudExvb3AgfTsKIAogSlNET01X
aW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAg
ICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBzaGVsbC0+d29ybGQoKSwgJnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCkBAIC0xNjMsNiArMTY0LDEyIEBAIGJvb2wgSlNET01X
aW5kb3dCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWUKICAgICByZXR1cm4gZnJhbWUtPnNldHRpbmdz
KCkuamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCgpOwogfQogCit2b2lkIEpTRE9NV2luZG93
QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5j
dGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQp
Cit7CisgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKEpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKChK
U0RPTVdpbmRvd0Jhc2UqKXRoaXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOwor
fQorCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dTaGVsbCgpCiB7
CiAgICAgc2V0Q3VycmVudEV2ZW50KDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2
ICs2NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9y
dHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHN0
YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworCisgICAgICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFz
a1RvRXZlbnRMb29wKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIsIFBh
c3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4pOworICAgICAgICAKICAgICAgICAgdm9pZCBwcmlu
dEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgICAgICBKU0RPTVdpbmRv
d1NoZWxsKiBzaGVsbCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6ZXZh
bHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7CiAgICAgfTsKIAotcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IEpTTWFpblRocmVhZEV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgOiBtX3ByZXZpb3VzU3RhdGUoc19tYWluVGhyZWFkU3RhdGUpCiAg
ICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCIK
IAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTQ2LDggKzQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xh
c3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxT
Y29wZSIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKSB9OwogCitjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmlj
aFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVu
dHNFbmFibGVkLCAmcXVldWVUYXNrVG9FdmVudExvb3AgfTsKKwogSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBpbXBsKQotICAgIDog
SlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pKQorICAgIDog
SlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgbm9ybWFsV29ybGQodm0pLCAmc19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAsIG1faW1wbChpbXBsKQogewogfQpAQCAtNjgsNiAr
NzEsMzggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrZXJHbG9iYWxTYwogICAgIHJl
dHVybiBtX2ltcGwuZ2V0KCk7CiB9CiAKKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6
YWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tKG9i
amVjdCwgZXhlYyk7Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRz
UHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpT
R2xvYmFsT2JqZWN0OjpzdXBwb3J0c1Byb2ZpbGluZyhvYmplY3QpOworfQorCitib29sIEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvKG9iamVjdCk7Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6
OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQorewor
ICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KG9iamVjdCk7
Cit9CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OmphdmFTY3JpcHRFeHBlcmltZW50
c0VuYWJsZWQoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNH
bG9iYWxPYmplY3Q6OmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQob2JqZWN0KTsKK30KKwor
dm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29uc3Qg
SlNHbG9iYWxPYmplY3QqIG9iamVjdCwgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFz
a1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxU
YXNrQ29udGV4dD4gdGFza0NvbnRleHQpCit7CisgICAgY29uc3QgSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZSo+KG9iamVjdCk7CisgICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01HbG9iYWxPYmplY3Qq
KXRoaXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworfQorCiBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtlckdsb2JhbFNjb3Bl
KiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKICAgICByZXR1cm4gdG9KUyhleGVjLCB3b3JrZXJHbG9i
YWxTY29wZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDYgKzUzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6Okdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlIHNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGU7CisKKyAgICAgICAgc3RhdGljIGJv
b2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3Vy
Y2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAg
ICAgc3RhdGljIGJvb2wgamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza1RvRXZlbnRMb29w
KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
OjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlND
OjpUYXNrQ29udGV4dD4pOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTU0NTc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsODUgQEAKKzIwMTMtMDgtMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUHJvbWlzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDI2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBhZGFwdGVkIGZy
b20gdGhlIE1vemlsbGEgYW5kIEJsaW5rIHByb2plY3RzLgorCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWFscmVhZHktZnVsZmlsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlamVjdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtY2F0Y2gtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtY2hhaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtY2hhaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9Qcm9taXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvUHJvbWlzZS1leGNlcHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWZ1
bGZpbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2UtZnVsZmlsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
aW5pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1pbml0
LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21p
c2UtaW5pdC1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1pbml0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdv
cmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVq
ZWN0LWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJl
amVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFp
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LWNoYWluLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4t
d29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1y
ZXNvbHZlLWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13
aXRoLXRoZW4tZnVsZmlsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
cmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1p
bnNpZGUtY2FsbGJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNp
bXBsZS1mdWxmaWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1w
bGUtaW4td29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJv
bWlzZS1zaW1wbGUtaW4td29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2Utc2ltcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zdGF0
aWMtZnVsZmlsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1zdGF0aWMtZnVsZmlsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Ut
c3RhdGljLXJlamVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJv
bWlzZS1zdGF0aWMtcmVqZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
UHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1By
b21pc2UtdGhlbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
UHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhv
dXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9Qcm9taXNlLXRoZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LXR5cGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXR5
cGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13
b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWlu
aXQtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJv
bWlzZS1yZWplY3QtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNv
dXJjZXMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvcmVzb3VyY2VzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxs
YmFja3MtaW4td29ya2Vycy5qczogQWRkZWQuCisKIDIwMTMtMDgtMjQgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b0pT
VmFsdWUgc2hvdWxkIGFsbW9zdCBjZXJ0YWlubHkgbm90IHVzZSBqc051bWJlcigpIHNpbmNlIHRo
YXQgYXR0ZW1wdHMgaW50IGNvbnZlcnNpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtYWxyZWFkeS1mdWxmaWxsZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1mdWxmaWxs
ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQcm9t
aXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJmb28i
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFk
eS1mdWxmaWxsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCituZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICByZXNvbHZlci5mdWxmaWxsKCdmb28nKTsK
KyAgcmVzb2x2ZXIuZnVsZmlsbCgnZnVsZmlsbCcpOworICByZXNvbHZlci5yZXNvbHZlKCdyZXNv
bHZlJyk7CisgIHJlc29sdmVyLnJlamVjdCgncmVqZWN0Jyk7Cit9KS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Jlc3VsdCcsICdmb28nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsK
KyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxy
ZWFkeS1yZWplY3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJmb28iCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZWplY3RlZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4n
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCituZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlcikgeworICByZXNvbHZlci5yZWplY3QoJ2ZvbycpOworICByZXNvbHZlci5mdWxm
aWxsKCdmdWxmaWxsJyk7CisgIHJlc29sdmVyLnJlc29sdmUoJ3Jlc29sdmUnKTsKKyAgcmVzb2x2
ZXIucmVqZWN0KCdyZWplY3QnKTsKK30pLnRoZW4oZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQo
J2Z1bGZpbGxlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgewor
ICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3Vs
dCcsICdmb28nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFs
cmVhZHktcmVzb2x2ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJmb28iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWFscmVhZHktcmVzb2x2ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtYWxyZWFkeS1yZXNvbHZlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCituZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgewor
ICB2YXIgYW5vdGhlclJlc29sdmVyOworICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHIpIHsgYW5vdGhlclJlc29sdmVyID0gcjsgfSkpOworICByZXNvbHZlci5mdWxmaWxs
KCdmdWxmaWxsJyk7CisgIHJlc29sdmVyLnJlc29sdmUoJ3Jlc29sdmUnKTsKKyAgcmVzb2x2ZXIu
cmVqZWN0KCdyZWplY3QnKTsKKworICBhbm90aGVyUmVzb2x2ZXIuZnVsZmlsbCgnZm9vJyk7Cit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdmb28nKTsKKyAgZmluaXNoSlNUZXN0KCk7
Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNU
ZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtY2F0Y2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNT
IGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBzZWNvbmRQcm9t
aXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIGZpcnN0UHJvbWlzZS5jYXRjaChu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRl
ZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIGZpcnN0UHJvbWlzZS5jYXRjaCgzNykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVk
IGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZp
cnN0UHJvbWlzZSBpcyBmYWxzZQorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29u
ZFByb21pc2UgaXMgdHJ1ZQorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyByZXN1bHQgaXMg
ImJ5ZSIKK1BBU1MgZnVsZmlsbGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNo
LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitbV29ya2VyXSBUZXN0IFByb21pc2Uu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJj
ZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQg
PT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZSBpbnN0
YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBzZWNvbmRQcm9taXNlIGluc3Rh
bmNlb2YgUHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS5jYXRjaChu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRl
ZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS5j
YXRjaCgzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3Ig
dW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxm
aWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQorUEFTUyBbV29ya2VyXSB0aGlz
SW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2Vy
XSByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImJ5ZSIKK1BBU1Mg
W1dvcmtlcl0gZnVsZmlsbGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWlu
LXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
Y2F0Y2gtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtl
cnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWNhdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWNhdGNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtY2F0Y2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHJl
c29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24obmV3UmVz
b2x2ZXIpIHsKKyAgd2luZG93LnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IG5ld1Jl
c29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNlLmNhdGNoKGZ1
bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsK
KyAgc2hvdWxkQmVGYWxzZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2Un
KTsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21p
c2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgcmV0dXJuICdieWUnOworfSk7CisKK3NlY29uZFByb21p
c2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnYnllJyk7CisgIHRlc3RQYXNzZWQoJ2Z1
bGZpbGxlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFp
bGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworfSk7
CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91bGRC
ZVRydWUoJ2ZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgn
c2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2ZpcnN0
UHJvbWlzZS5jYXRjaChudWxsKScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1
bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9t
aXNlLmNhdGNoKDM3KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmlu
ZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Jlc29sdmVyLnJlamVjdCgnaGVsbG8nKTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWNoYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtY2hhaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWNoYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE5IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFT
UyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgZnVsZmlsbGVkCitQQVNT
IHJlc3VsdCBpcyAiaGVsbG8yIgorUEFTUyByZWplY3RlZAorUEFTUyByZXN1bHQgaXMgImVycm9y
IgorUEFTUyByZWplY3RlZAorUEFTUyByZXN1bHQgaXMgImVycm9yMiIKK1BBU1MgZnVsZmlsbGVk
CitQQVNTIHJlc3VsdCBpcyAicmVjb3ZlcmVkIgorUEFTUyBvcGVyYXRpb24gaXMgImFzeW5jaHJv
bm91cyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2hhaW4uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24gKHIpIHtyZXNvbHZlciA9IHI7fSk7Cit2YXIgb3BlcmF0aW9uOworCitw
cm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7ICAvLyBmdWxmaWxsZWQgLSBjb250aW51ZQor
ICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgcmV0dXJuICdoZWxs
bzInOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JyZWplY3RlZCcpOworfSkudGhl
bigpICAvLyBwYXNzIHRocm91Z2gKKy50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyAgLy8gZnVsZmls
bGVkIC0gdGhyb3cgYW4gZXhjZXB0aW9uCisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICB3
aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcs
ICdoZWxsbzInKTsKKyAgdGhyb3cgJ2Vycm9yJzsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFp
bGVkKCdyZWplY3RlZCcpOworfSkudGhlbihmdW5jdGlvbigpIHsgIC8vIHJlamVjdGVkIC0gdGhy
b3cgYW4gZXhjZXB0aW9uCisgIHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworfSwgZnVuY3Rpb24o
cmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ3JlamVjdGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2Vycm9yJyk7CisgIHRo
cm93ICdlcnJvcjInOworfSkudGhlbigpIC8vIHBhc3MgdGhyb3VnaAorLnRoZW4oZnVuY3Rpb24o
KSB7ICAvLyByZWplY3RlZCAtIHJlY292ZXIKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7Cit9
LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBhc3NlZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93
LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZXJy
b3IyJyk7CisgIHJldHVybiAncmVjb3ZlcmVkJzsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7
ICAvLyBmdWxmaWxsZWQgLSB0aGUgbGFzdAorICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAg
d2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQn
LCAncmVjb3ZlcmVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnb3BlcmF0aW9uJywgJ2Fz
eW5jaHJvbm91cycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0
RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitvcGVyYXRpb24g
PSAnc3luY2hyb25vdXMnOworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworLy8gVGhlIGNo
YWluIHNob3VsZCBiZSBleGVjdXRlZCBhc3luY2hyb25vdXNseS4KK29wZXJhdGlvbiA9ICdhc3lu
Y2hyb25vdXMnOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgdGhpc0luVGhlbkNhbGxiYWNrID09PSB0aGlyZFBy
b21pc2UgaXMgdHJ1ZQorUEFTUyByZXN1bHQgaXMgImZvb2JhciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLWV4Y2VwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
cikgeworICB3aW5kb3cudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2hl
bGxvJyk7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5j
dGlvbihyZXN1bHQpIHsKKyAgdGhyb3cgJ2Zvb2Jhcic7Cit9KTsKKwordmFyIHRoaXJkUHJvbWlz
ZSA9IHNlY29uZFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZmFpbCgnVW5leHBl
Y3RlZCBpbnZvY2F0aW9uIG9mIGZ1bGZpbGxDYWxsYmFjaycpOworfSwgZnVuY3Rpb24ocmVzdWx0
KSB7CisgIHdpbmRvdy50aGlzSW5UaGVuQ2FsbGJhY2sgPSB0aGlzOworICBzaG91bGRCZVRydWUo
J3RoaXNJblRoZW5DYWxsYmFjayA9PT0gdGhpcmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQg
PSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2Zvb2JhcicpOwor
ICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTcgQEAKK1Byb21pc2VzIC0gQWRhcHRlZCBmcm9tIGh0dHA6Ly9keHIubW96aWxs
YS5vcmcvbW96aWxsYS1jZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90ZXN0X3Byb21p
c2UuaHRtbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworVGVzdCBQcm9taXNl
IHJlc29sdmUuCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMg
NDIKKworVGVzdCBQcm9taXNlIHJlamVjdC4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2Fs
bGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSByZWplY3QuCitQQVNTIFRoZW4ucmVq
ZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgZ2MuCitQ
QVNTIFRoZW4gLSBwcm9taXNlIGlzIHN0aWxsIGFsaXZlCisKK1Rlc3QgUHJvbWlzZSBhc3luYy4K
K0dsb2JhbCBzaG91bGQgYmUgZm9vCitQQVNTIGZvbyBpcyBmb28KK0dsb2JhbCBzaG91bGQgc3Rp
bGwgYmUgZm9vCitQQVNTIGZvbyBpcyBmb28KK0dsb2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vICgy
KQorUEFTUyBmb28gaXMgZm9vCitHbG9iYWwgc2hvdWxkIGJlIGJhcgorUEFTUyBiYXIgaXMgYmFy
CisKK1Rlc3QgUHJvbWlzZSBkb3VibGUgdGhlbi4KK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVu
IGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVk
CitQQVNTIDEgaXMgMQorUEFTUyA0MiBpcyA0MgorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gZXhj
ZXB0aW9uLgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIENhdGNoIGhh
bmRsZXIgKGUuZy4gdGhlIHJlamVjdCBoYW5kbGVyKSBjYWxsZWQuCisKK1Rlc3QgUHJvbWlzZSAt
IHRoZW4gLyBjYXRjaCAvIHRoZW4uCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQK
K1BBU1MgNDIgaXMgNDIKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0
MyBpcyA0MworUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQ0IGlzIDQ0
CisKK1Rlc3QgUHJvbWlzZSAtIHJlamVjdCAvIHRoZW4gLyBjYXRjaCAvIHRoZW4uCitQQVNTIFRo
ZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorUEFTUyBUaGVuLnJlc29s
dmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMg
YmVlbiBjYWxsZWQKK1BBU1MgNDQgaXMgNDQKKworVGVzdCBQcm9taXNlIC0gcmVqZWN0IC8gdGhl
biAvIGNhdGNoIC8gdGhlbiAoMikuCitQQVNTIENhdGNoIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0
MiBpcyA0MgorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQz
CisKK1Rlc3QgUHJvbWlzZSAtIHJlamVjdCAvIHRoZW4gLyBjYXRjaCBleGNlcHRpb24gLyB0aGVu
LgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKK1BBU1Mg
Q2F0Y2ggaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCitQQVNTIFRoZW4ucmVzb2x2ZSBo
YXMgYmVlbiBjYWxsZWQKK1BBU1MgNDQgaXMgNDQKKworVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNh
dGNoIG9yZGVyaW5nIChyZXNvbHZlKS4KK01hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAyCitQ
QVNTIDIgaXMgMgorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlamVj
dCkuCitNYW55IHN0ZXBzLi4uIHNob3VsZCByZXR1cm4gMgorUEFTUyAyIGlzIDIKKworVGVzdCBQ
cm9taXNlIC0gbmVzdGVkIHByb21pc2UKK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQK
K1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitUZXN0
IFByb21pc2UgLSBuZXN0ZWQtbmVzdGVkIHByb21pc2UuCitQQVNTIE5lc3RlZCBwcm9taXNlIGlz
IGV4ZWN1dGVkCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDMgaXMg
NDMKKworVGVzdCBQcm9taXNlIC0gd3JvbmcgbmVzdGVkIHByb21pc2UuCitQQVNTIE5lc3RlZCBw
cm9taXNlIGlzIGV4ZWN1dGVkCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BB
U1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNlIC0gcHJvbWlzZSBsb29wLgorUEFTUyBOZXN0ZWQg
cHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBOZXN0ZWQtbmVzdGVkIHByb21pc2UgaXMgZXhlY3V0
ZWQKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitU
ZXN0IFByb21pc2UgLSBQcm9taXNlLnJlamVjdCgpLgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVl
biBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNvbHZl
KCkuCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKwor
VGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNvbHZlKCkgd2l0aCAgbmVzdGVkIHByb21pc2UuCitQ
QVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVl
biBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgcHJvbWlzZVN0YXRlIGlzICJwZW5k
aW5nIgorUEFTUyBwcm9taXNlU3RhdGUgaXMgImZ1bGZpbGxlZCIKK1BBU1MgcHJvbWlzZVJlc3Vs
dCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29y
a2Vycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitbV29ya2VyXSBUZXN0IFByb21pc2UuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMv
UHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0YXRl
IGlzICJwZW5kaW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQ
QVNTIFtXb3JrZXJdIHByb21pc2VTdGF0ZSBpcyAiZnVsZmlsbGVkIgorUEFTUyBbV29ya2VyXSBw
cm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZnVs
ZmlsbC1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL1Byb21pc2UtZnVs
ZmlsbC1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0gJ3BlbmRp
bmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9taXNlUmVz
dWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdy
ZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5mdWxmaWxs
KCdoZWxsbycpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdwZW5k
aW5nJyk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdwcm9taXNlU3RhdGUnLCAnZnVsZmlsbGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKCkgeworICB0ZXN0RmFpbGVkKCdwcm9taXNlIGlzIHJlamVjdGVkLicpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1pbml0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1BBU1MgcHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBw
cm9taXNlLmNvbnN0cnVjdG9yIGlzIFByb21pc2UKK1BBU1MgdGhpc0luSW5pdCBpcyBwcm9taXNl
CitQQVNTIHJlc29sdmVyIGluc3RhbmNlb2YgUHJvbWlzZVJlc29sdmVyIGlzIHRydWUKK1BBU1Mg
cmVzb2x2ZXIuY29uc3RydWN0b3IgaXMgUHJvbWlzZVJlc29sdmVyCitQQVNTIG5ldyBQcm9taXNl
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3Vt
ZW50LgorUEFTUyBuZXcgUHJvbWlzZSgzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhw
ZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIHByb21pc2UgPSBuZXcg
UHJvbWlzZShmdW5jdGlvbigpIHsgdGhyb3cgRXJyb3IoImZvbyIpOyB9KSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgcmVzdWx0Lm1lc3NhZ2UgaXMgImZvbyIKK1BBU1MgZnVsZmlsbGVk
CitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWlu
aXQtaW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACitbV29ya2VyXSBUZXN0IFByb21pc2Uu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJj
ZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZSBpbnN0
YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBwcm9taXNlLmNvbnN0cnVjdG9y
IGlzIFByb21pc2UKK1BBU1MgW1dvcmtlcl0gdGhpc0luSW5pdCBpcyBwcm9taXNlCitQQVNTIFtX
b3JrZXJdIHJlc29sdmVyIGluc3RhbmNlb2YgUHJvbWlzZVJlc29sdmVyIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gcmVzb2x2ZXIuY29uc3RydWN0b3IgaXMgUHJvbWlzZVJlc29sdmVyCitQQVNTIFtX
b3JrZXJdIG5ldyBQcm9taXNlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQg
YXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSBuZXcgUHJvbWlzZSgzNykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJn
dW1lbnQuCitQQVNTIFtXb3JrZXJdIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigpIHsg
dGhyb3cgRXJyb3IoImZvbyIpOyB9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgW1dv
cmtlcl0gcmVzdWx0Lm1lc3NhZ2UgaXMgImZvbyIKK1BBU1MgW1dvcmtlcl0gZnVsZmlsbGVkCitQ
QVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWluaXQtaW4td29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWluaXQt
aW4td29ya2Vycy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtaW5pdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1pbml0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtaW5pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K3ZhciB0aGlzSW5Jbml0OwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyKSB7CisgIHRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IHI7Cit9
KTsKKworc2hvdWxkQmVUcnVlKCdwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxk
QmUoJ3Byb21pc2UuY29uc3RydWN0b3InLCAnUHJvbWlzZScpOworc2hvdWxkQmUoJ3RoaXNJbklu
aXQnLCAncHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdyZXNvbHZlciBpbnN0YW5jZW9mIFByb21p
c2VSZXNvbHZlcicpOworc2hvdWxkQmUoJ3Jlc29sdmVyLmNvbnN0cnVjdG9yJywgJ1Byb21pc2VS
ZXNvbHZlcicpOworCitzaG91bGRUaHJvdygnbmV3IFByb21pc2UoKScsICciVHlwZUVycm9yOiBF
eHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnbmV3IFByb21p
c2UoMzcpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3Vt
ZW50IicpOworCitzaG91bGROb3RUaHJvdygncHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KCkgeyB0aHJvdyBFcnJvcigiZm9vIik7IH0pJyk7Citwcm9taXNlLnRoZW4odW5kZWZpbmVkLCBm
dW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdyZXN1bHQubWVzc2FnZScsICdmb28nKTsKK30pOworCituZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlcikgeworICByZXNvbHZlci5mdWxmaWxsKCJoZWxsbyIpOworICB0
aHJvdyBFcnJvcigiZm9vIik7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cu
cmVzdWx0ID0gcmVzdWx0OworICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBm
dW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgdGVzdEZhaWxl
ZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1y
ZWplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3Qg
UHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHByb21pc2VTdGF0
ZSBpcyAicGVuZGluZyIKK1BBU1MgcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBwcm9t
aXNlU3RhdGUgaXMgInJlamVjdGVkIgorUEFTUyBwcm9taXNlUmVzdWx0IGlzICJoZWxsbyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QtaW4td29y
a2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtcmVqZWN0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTMgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLXJlamVjdC1pbi13
b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1Mg
W1dvcmtlcl0gcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNl
U3RhdGUgaXMgInJlamVjdGVkIgorUEFTUyBbV29ya2VyXSBwcm9taXNlUmVzdWx0IGlzICJoZWxs
byIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtl
cnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWpl
Y3QtaW4td29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBz
dGFydFdvcmtlcigncmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuanMnKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJl
amVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWpl
Y3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWpl
Y3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJv
bWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7
Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9
KTsKK3ZhciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVu
ZGVmaW5lZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRl
ID0gJ2Z1bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9
IHJlc3VsdDsKK30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdw
ZW5kaW5nJyk7CisKK3Jlc29sdmVyLnJlamVjdCgnaGVsbG8nKTsKKworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCitwcm9taXNlLnRoZW4oZnVuY3Rp
b24oKSB7CisgIHRlc3RGYWlsZWQoJ3Byb21pc2UgaXMgZnVsZmlsbGVkLicpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21p
c2VTdGF0ZScsICdyZWplY3RlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VS
ZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFp
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXJlc29sdmUtY2hhaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHJlc3VsdCBpcyAiYnllIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4uaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyMSwgcmVzb2x2
ZXIyLCByZXNvbHZlcjM7Cit2YXIgcmVzb2x2ZXI0LCByZXNvbHZlcjUsIHJlc29sdmVyNjsKK3Zh
ciBwcm9taXNlMSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIxID0gcjsgfSk7
Cit2YXIgcHJvbWlzZTIgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyMiA9IHI7
IH0pOwordmFyIHByb21pc2UzID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjMg
PSByOyB9KTsKK3ZhciBwcm9taXNlNCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2
ZXI0ID0gcjsgfSk7Cit2YXIgcHJvbWlzZTUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJl
c29sdmVyNSA9IHI7IH0pOwordmFyIHByb21pc2U2ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikg
eyByZXNvbHZlcjYgPSByOyB9KTsKKworcmVzb2x2ZXIzLnJlc29sdmUocHJvbWlzZTIpOworcmVz
b2x2ZXIyLnJlc29sdmUocHJvbWlzZTEpOworcmVzb2x2ZXI2LnJlc29sdmUocHJvbWlzZTUpOwor
cmVzb2x2ZXI1LnJlc29sdmUocHJvbWlzZTQpOworCitwcm9taXNlMy50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Jlc3VsdCcsICdoZWxsbycpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3Jl
amVjdGVkJyk7Cit9KTsKKworcHJvbWlzZTYudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxl
ZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVz
dWx0JywgJ2J5ZScpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCityZXNvbHZlcjEucmVzb2x2
ZSgnaGVsbG8nKTsKK3Jlc29sdmVyNC5yZWplY3QoJ2J5ZScpOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
cmVzb2x2ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVz
dCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgdGhpc0luRnVs
ZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgcmVzdWx0IGlzICJo
ZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVz
b2x2ZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNl
LXJlc29sdmUtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMgImhl
bGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13
b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
cmVzb2x2ZS1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtl
ciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanMn
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlv
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworVGhlIHByb21pc2UgaXMgYWxyZWFkeSByZWplY3RlZCBub3cuCitQQVNTIHJlamVj
dGVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXJlc29sdmUtd2l0aC10aGVuLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhl
bi1leGNlcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIGNh
bGxiYWNrOwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgewor
ICByZXNvbHZlci5yZXNvbHZlKHt0aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVj
dENhbGxiYWNrKSB7CisgICAgdGhyb3cgJ2hlbGxvJzsKKyAgfX0sIHRydWUpOworfSk7CisKK3By
b21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgnZnVsZmlsbGVkJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ3JlamVj
dGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworZGVidWcoJ1Ro
ZSBwcm9taXNlIGlzIGFscmVhZHkgcmVqZWN0ZWQgbm93LicpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4t
ZnVsZmlsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZp
bGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgUHJv
bWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHZhbHVlLnRoZW4gaXMg
Y2FsbGVkLgorUEFTUyB0aGlzVmFsdWUgaXMgdmFsdWUKK1RoZSBwcm9taXNlIGlzIG5vdCBmdWxm
aWxsZWQgbm93LgorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhl
bi1mdWxmaWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Cit2YXIgY2FsbGJhY2s7Cit2YXIgdmFsdWUgPSB7CisgIHRoZW46IGZ1bmN0aW9u
KGZ1bGZpbGxDYWxsYmFjaywgcmVqZWN0Q2FsbGJhY2spIHsKKyAgICB0ZXN0UGFzc2VkKCd2YWx1
ZS50aGVuIGlzIGNhbGxlZC4nKTsKKyAgICB3aW5kb3cudGhpc1ZhbHVlID0gdGhpczsKKyAgICBz
aG91bGRCZSgndGhpc1ZhbHVlJywgJ3ZhbHVlJyk7CisgICAgY2FsbGJhY2sgPSBmdWxmaWxsQ2Fs
bGJhY2s7CisgIH0KK307CitmaW5pc2hKU1Rlc3QoKTsKK3ZhciBwcm9taXNlID0gbmV3IFByb21p
c2UoZnVuY3Rpb24ocikgeyByLnJlc29sdmUodmFsdWUpOyB9KTsKKworcHJvbWlzZS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgd2luZG93LnJl
c3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8n
KTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVq
ZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworZGVidWcoJ1RoZSBwcm9taXNlIGlz
IG5vdCBmdWxmaWxsZWQgbm93LicpOworCitjYWxsYmFjaygnaGVsbG8nKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0
aC10aGVuLXJlamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4t
cmVqZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitUZXN0
IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyB2YWx1ZS50aGVu
IGlzIGNhbGxlZC4KK1BBU1MgdGhpc1ZhbHVlIGlzIHZhbHVlCitUaGUgcHJvbWlzZSBpcyBub3Qg
cmVqZWN0ZWQgbm93LgorUEFTUyByZWplY3RlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRo
ZW4tcmVqZWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK3ZhciBjYWxsYmFjazsKK3ZhciB2YWx1ZSA9IHsKKyAgdGhlbjogZnVuY3Rpb24o
ZnVsZmlsbENhbGxiYWNrLCByZWplY3RDYWxsYmFjaykgeworICAgIHRlc3RQYXNzZWQoJ3ZhbHVl
LnRoZW4gaXMgY2FsbGVkLicpOworICAgIHdpbmRvdy50aGlzVmFsdWUgPSB0aGlzOworICAgIHNo
b3VsZEJlKCd0aGlzVmFsdWUnLCAndmFsdWUnKTsKKyAgICBjYWxsYmFjayA9IHJlamVjdENhbGxi
YWNrOworICB9Cit9OwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIu
cmVzb2x2ZSh2YWx1ZSk7IH0pOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Cisg
IHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9u
KHJlc3VsdCkgeworICB0ZXN0UGFzc2VkKCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0ID0g
cmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBm
aW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IHJlamVjdGVk
IG5vdy4nKTsKKworY2FsbGJhY2soJ2hlbGxvJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLnJlc29sdmUoJ2hlbGxvJyk7Cit9KTsKKwor
dmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsK
KyAgd2luZG93LnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgn
dGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1
bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIGZhaWwoJ3JlamVjdGVkJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitUZXN0IFByb21pc2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyB0aGlzSW5Jbml0ID09PSBmaXJzdFByb21p
c2UgaXMgdHJ1ZQorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2Ug
aXMgdHJ1ZQorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zaW1wbGUtZnVsZmlsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21pc2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2stZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1w
bGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFj
ay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFByb21p
c2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImhlbGxv
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2Fs
bGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2lt
cGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZ1dHVyZSA9IG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7Cit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3Qo
KTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGZ1dHVyZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmVyKSB7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgcmVzb2x2ZXIuZnVs
ZmlsbCgnaGVsbG8nKTsKKyAgfSwgMCk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3
aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcs
ICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNp
bXBsZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMiBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2Ut
c2ltcGxlLWluLXdvcmtlcnMuanMKK1BBU1MgW1dvcmtlcl0gdGhpc0luSW5pdCA9PT0gZmlyc3RQ
cm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBz
ZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4t
d29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdv
cmtlcigncmVzb3VyY2VzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4n
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7CisKK3Zh
ciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNvbHZlcikgeworICB3
aW5kb3cudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsK
KwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgd2luZG93LnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1
ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIHdpbmRvdy5y
ZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxv
Jyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9
PT0gZmlyc3RQcm9taXNlJyk7CisKK3Jlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1mdWxmaWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkCitQQVNTIHJlc3VsdCBp
cyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxm
aWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3Rh
dGljLWZ1bGZpbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworcmVzdWx0
ID0gdW5kZWZpbmVkOworCitQcm9taXNlLmZ1bGZpbGwoJ2hlbGxvJykudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9
KTsKK3Nob3VsZEJlKCdyZXN1bHQnLCAndW5kZWZpbmVkJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGlj
LXJlamVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc3RhdGljLXJlamVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1MgcmVzdWx0IGlzIHVuZGVmaW5lZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVqZWN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Jlc3VsdCA9IHVuZGVmaW5lZDsKKworUHJv
bWlzZS5yZWplY3QoJ2hlbGxvJykudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdEZhaWxl
ZCgnZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVz
dWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CitzaG91bGRCZSgncmVzdWx0
JywgJ3VuZGVmaW5lZCcpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3RhdGljLXJl
c29sdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3Qg
UHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyB1
bmRlZmluZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2Utc3RhdGljLXJlc29sdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtcmVzb2x2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CityZXN1bHQgPSB1bmRlZmluZWQ7CisKK3ZhciByZXNvbHZlcjsKK3Zh
ciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyKSB7IHJl
c29sdmVyID0gcjt9ICkpOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdp
bmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0Jywg
J2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWls
ZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3Jlc29sdmVyLnJlc29s
dmUoJ2hlbGxvJyk7CitzaG91bGRCZSgncmVzdWx0JywgJ3VuZGVmaW5lZCcpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXRoZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3Qg
UHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRoaXNJbkluaXQg
PT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFBy
b21pc2UgaXMgdHJ1ZQorUEFTUyBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSBpcyB0
cnVlCitQQVNTIGZpcnN0UHJvbWlzZS50aGVuKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudC4K
K1BBU1MgZmlyc3RQcm9taXNlLnRoZW4odW5kZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgc2Vjb25kIGFy
Z3VtZW50LgorUEFTUyBmaXJzdFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50
LgorUEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQor
UEFTUyB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFT
UyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWlu
LXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10aGVuLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1By
b21pc2UtdGhlbi1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgPT09IGZp
cnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZSBpbnN0YW5jZW9m
IFByb21pc2UgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBzZWNvbmRQcm9taXNlIGluc3RhbmNlb2Yg
UHJvbWlzZSBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS50aGVuKG51bGwpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBh
cyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlLnRoZW4odW5k
ZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlv
biBvciB1bmRlZmluZWQgYXMgYXMgc2Vjb25kIGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSBmaXJz
dFByb21pc2UudGhlbigzNykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSB0
aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlzZSBpcyBmYWxzZQorUEFTUyBbV29y
a2VyXSB0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UgaXMgdHJ1ZQorUEFT
UyBbV29ya2VyXSByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS10aGVuLWlu
LXdvcmtlcnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJh
Y2tzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3Mt
aW4td29ya2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitbV29ya2VyXSBUZXN0IFByb21pc2Uu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJj
ZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuanMKK1BBU1MgW1dv
cmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhl
bi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0
aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
Cit3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNh
bGxiYWNrcy1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxs
YmFja3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10
aGVuLXdpdGhvdXQtY2FsbGJhY2tzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByLmZ1bGZpbGwoJ2hlbGxvJyk7IH0pCisg
IC50aGVuKCkKKyAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgd2luZG93LnJlc3VsdCA9
IHJlc3VsdDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworICB9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIHdpbmRvdy50aGlzSW5Jbml0ID0gdGhpczsK
KyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlzZSA9IGZp
cnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luRnVsZmls
bENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVGYWxzZSgndGhpc0luRnVsZmlsbENhbGxiYWNr
ID09PSBmaXJzdFByb21pc2UnKTsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7
Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3No
b3VsZEJlVHJ1ZSgnZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVU
cnVlKCdzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygn
Zmlyc3RQcm9taXNlLnRoZW4obnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24g
b3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0
UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIHNlY29uZCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93
KCdmaXJzdFByb21pc2UudGhlbigzNyknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24g
b3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworCityZXNvbHZlci5mdWxmaWxs
KCdoZWxsbycpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MiBAQAorUHJvbWlzZXMgLSBUZXN0IGJhc2ljIHR5cGVzIC8gZXhjZXB0
aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUHJvbWlzZXMKKworYVBy
b21pc2UgPSBuZXcgUHJvbWlzZSguLi4pCitQQVNTIGFQcm9taXNlIGlzIGFuIGluc3RhbmNlIG9m
IFByb21pc2UKK1BBU1MgU3RyaW5nKGFQcm9taXNlKSBpcyAnW29iamVjdCBQcm9taXNlXScKK1BB
U1MgYVByb21pc2UudGhlbiBpcyBkZWZpbmVkLgorUEFTUyBhUHJvbWlzZS50aGVuIGlzIGFuIGlu
c3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIGFQcm9taXNlLnRoZW4ubGVuZ3RoIGlzIDAKK1BBU1Mg
YVByb21pc2UuY2F0Y2ggaXMgZGVmaW5lZC4KK1BBU1MgYVByb21pc2UuY2F0Y2ggaXMgYW4gaW5z
dGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgYVByb21pc2UuY2F0Y2gubGVuZ3RoIGlzIDAKKworUHJv
bWlzZSBjb25zdHJ1Y3RvcgorCitQQVNTIFByb21pc2UubGVuZ3RoIGlzIDEKK1BBU1MgbmV3IFBy
b21pc2UoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUg
YXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNlKDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBuZXcgUHJvbWlz
ZSgnaGVsbG8nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBh
cyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgbmV3IFByb21pc2UoW10pIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFT
UyBuZXcgUHJvbWlzZSh7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIG5ldyBQcm9taXNlKG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3Vt
ZW50LgorUEFTUyBuZXcgUHJvbWlzZSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBuZXcgUHJv
bWlzZShmdW5jdGlvbihyZXNvbHZlcikgeyByZXNvbHZlci5yZXNvbHZlKDEpOyB9KSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEZ1bmN0aW9uIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdQcm9taXNlKCknKS4K
KworUHJvbWlzZSBzdGF0aWNzCisKK1BBU1MgUHJvbWlzZS5mdWxmaWxsIGlzIGFuIGluc3RhbmNl
IG9mIEZ1bmN0aW9uCitQQVNTIFByb21pc2UuZnVsZmlsbC5sZW5ndGggaXMgMQorUEFTUyBQcm9t
aXNlLmZ1bGZpbGwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFz
dCBvbmUgYXJndW1lbnQuCitQQVNTIFByb21pc2UuZnVsZmlsbCgxKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgUHJvbWlzZS5yZXNvbHZlIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9u
CitQQVNTIFByb21pc2UucmVzb2x2ZS5sZW5ndGggaXMgMQorUEFTUyBQcm9taXNlLnJlc29sdmUo
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1l
bnQuCitQQVNTIFByb21pc2UucmVzb2x2ZSgxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgUHJvbWlzZS5yZWplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgUHJvbWlz
ZS5yZWplY3QubGVuZ3RoIGlzIDEKK1BBU1MgUHJvbWlzZS5yZWplY3QoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuCitQQVNTIFByb21p
c2UucmVqZWN0KDEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBQcm9taXNlLmZ1bGZp
bGwoMSkgaXMgYW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBQcm9taXNlLnJlc29sdmUoMSkg
aXMgYW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorUEFTUyBQcm9taXNlLnJlamVjdCgxKSBpcyBhbiBp
bnN0YW5jZSBvZiBQcm9taXNlCisKK1Byb21pc2VSZXNvbHZlcgorCithUmVzb2x2ZXIgaXMgZnJv
bSBuZXcgUHJvbWlzZShmdW5jdGlvbihhUmVzb2x2ZXIpIHsgLi4uIH0pCitQQVNTIGFSZXNvbHZl
ciBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlUmVzb2x2ZXIKK1BBU1MgU3RyaW5nKGFSZXNvbHZl
cikgaXMgJ1tvYmplY3QgUHJvbWlzZVJlc29sdmVyXScKK1BBU1MgYVJlc29sdmVyLmZ1bGZpbGwg
aXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgYVJlc29sdmVyLmZ1bGZpbGwubGVuZ3Ro
IGlzIDEKK1BBU1MgYVJlc29sdmVyLnJlc29sdmUgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24K
K1BBU1MgYVJlc29sdmVyLnJlc29sdmUubGVuZ3RoIGlzIDEKK1BBU1MgYVJlc29sdmVyLnJlamVj
dCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBhUmVzb2x2ZXIucmVqZWN0Lmxlbmd0
aCBpcyAxCitQQVNTIHJlc29sdmVyRnVsZmlsbCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFJlY2VpdmVyIG9mIGZ1bGZpbGwgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlci4KK1BBU1MgcmVz
b2x2ZXJSZXNvbHZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVjZWl2ZXIgb2YgcmVz
b2x2ZSBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyLgorUEFTUyByZXNvbHZlclJlamVjdCgpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFJlY2VpdmVyIG9mIHJlamVjdCBtdXN0IGJlIGEgUHJv
bWlzZVJlc29sdmVyLgorCitQcm9taXNlUmVzb2x2ZXIgY29uc3RydWN0b3IKKworUEFTUyBuZXcg
UHJvbWlzZVJlc29sdmVyKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRnVuY3Rpb24gaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBQcm9taXNlUmVzb2x2ZXIoKScpLgor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXR5cGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJQcm9taXNl
cyAtIFRlc3QgYmFzaWMgdHlwZXMgLyBleGNlcHRpb25zLiIpOworCisvLyB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKworLy8gUHJvbWlzZQorZGVidWcoIiIpOworZGVidWcoIlByb21p
c2VzIik7CitkZWJ1ZygiIik7CisKKy8vIFByb21pc2VzIHNob3VsZCBiZSBvZiB0eXBlIFByb21p
c2UuCisKK3ZhciBhUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7IHJl
c29sdmVyLnJlc29sdmUoMSk7IH0pOworCitkZWJ1ZygiYVByb21pc2UgPSBuZXcgUHJvbWlzZSgu
Li4pIikKK3Nob3VsZEJlVHlwZSgiYVByb21pc2UiLCAiUHJvbWlzZSIpOworc2hvdWxkQmUoIlN0
cmluZyhhUHJvbWlzZSkiLCAiJ1tvYmplY3QgUHJvbWlzZV0nIik7CisKK3Nob3VsZEJlRGVmaW5l
ZCgiYVByb21pc2UudGhlbiIpOworc2hvdWxkQmVUeXBlKCJhUHJvbWlzZS50aGVuIiwgIkZ1bmN0
aW9uIik7CitzaG91bGRCZSgiYVByb21pc2UudGhlbi5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmVE
ZWZpbmVkKCJhUHJvbWlzZS5jYXRjaCIpOworc2hvdWxkQmVUeXBlKCJhUHJvbWlzZS5jYXRjaCIs
ICJGdW5jdGlvbiIpOworc2hvdWxkQmUoImFQcm9taXNlLmNhdGNoLmxlbmd0aCIsICIwIik7CisK
KworLy8gUHJvbWlzZSBjb25zdHJ1Y3RvcgorZGVidWcoIiIpOworZGVidWcoIlByb21pc2UgY29u
c3RydWN0b3IiKTsKK2RlYnVnKCIiKTsKKworLy8gTmVlZCBhdCBsZWFzdCBvbmUgcGFyYW1ldGVy
Lgorc2hvdWxkQmUoIlByb21pc2UubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZFRocm93KCJuZXcgUHJv
bWlzZSgpIik7CisKKy8vIFBhcmFtZXRlciBtdXN0IGJlIGEgZnVuY3Rpb24uCitzaG91bGRUaHJv
dygibmV3IFByb21pc2UoMSkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMg
Zmlyc3QgYXJndW1lbnQnIik7CitzaG91bGRUaHJvdygibmV3IFByb21pc2UoJ2hlbGxvJykiLCAi
J1R5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQnIik7Citz
aG91bGRUaHJvdygibmV3IFByb21pc2UoW10pIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0
aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50JyIpOworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKHt9
KSIsICInVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCci
KTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZShudWxsKSIsICInVHlwZUVycm9yOiBFeHBlY3Rl
ZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCciKTsKK3Nob3VsZFRocm93KCJuZXcgUHJv
bWlzZSh1bmRlZmluZWQpIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZp
cnN0IGFyZ3VtZW50JyIpOworc2hvdWxkTm90VGhyb3coIm5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmVyKSB7IHJlc29sdmVyLnJlc29sdmUoMSk7IH0pIik7CisKKy8vIENhbid0IGJlIGNhbGxl
ZCBhcyBhIGZ1bmN0aW9uCitzaG91bGRUaHJvdygiUHJvbWlzZSgpIik7CisKKworLy8gUHJvbWlz
ZSBzdGF0aWNzCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZSBzdGF0aWNzIik7CitkZWJ1Zygi
Iik7CisKKworLy8gTmVlZCBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyLgorc2hvdWxkQmVUeXBlKCJQ
cm9taXNlLmZ1bGZpbGwiLCAiRnVuY3Rpb24iKTsKK3Nob3VsZEJlKCJQcm9taXNlLmZ1bGZpbGwu
bGVuZ3RoIiwgIjEiKTsKK3Nob3VsZFRocm93KCJQcm9taXNlLmZ1bGZpbGwoKSIsICInVHlwZUVy
cm9yOiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQnIik7CitzaG91bGROb3RUaHJvdygi
UHJvbWlzZS5mdWxmaWxsKDEpIik7CisKK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5yZXNvbHZlIiwg
IkZ1bmN0aW9uIik7CitzaG91bGRCZSgiUHJvbWlzZS5yZXNvbHZlLmxlbmd0aCIsICIxIik7Citz
aG91bGRUaHJvdygiUHJvbWlzZS5yZXNvbHZlKCkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50JyIpOworc2hvdWxkTm90VGhyb3coIlByb21pc2UucmVzb2x2ZSgx
KSIpOworCitzaG91bGRCZVR5cGUoIlByb21pc2UucmVqZWN0IiwgIkZ1bmN0aW9uIik7CitzaG91
bGRCZSgiUHJvbWlzZS5yZWplY3QubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZFRocm93KCJQcm9taXNl
LnJlamVjdCgpIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCci
KTsKK3Nob3VsZE5vdFRocm93KCJQcm9taXNlLnJlamVjdCgxKSIpOworCisvLyBTaG91bGQgcmV0
dXJuIFByb21pc2Ugb2JqZWN0cy4KK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5mdWxmaWxsKDEpIiwg
IlByb21pc2UiKTsKK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5yZXNvbHZlKDEpIiwgIlByb21pc2Ui
KTsKK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5yZWplY3QoMSkiLCAiUHJvbWlzZSIpOworCisKKwor
Ly8gUHJvbWlzZVJlc29sdmVyCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVyIik7
CitkZWJ1ZygiIik7CisKK3ZhciBhUmVzb2x2ZXI7Cit2YXIgcmVzb2x2ZXJGdWxmaWxsOwordmFy
IHJlc29sdmVyUmVzb2x2ZTsKK3ZhciByZXNvbHZlclJlamVjdDsKKworbmV3IFByb21pc2UoZnVu
Y3Rpb24ocikgeworICAgIGFSZXNvbHZlciA9IHI7CisKKyAgICAvLyBUaGUgcmVzb2x2ZXIgc2hv
dWxkIGJlIG9mIHR5cGUgUHJvbWlzZVJlc29sdmVyLgorICAgIGRlYnVnKCJhUmVzb2x2ZXIgaXMg
ZnJvbSBuZXcgUHJvbWlzZShmdW5jdGlvbihhUmVzb2x2ZXIpIHsgLi4uIH0pIikKKyAgICBzaG91
bGRCZVR5cGUoImFSZXNvbHZlciIsICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBzaG91bGRCZSgi
U3RyaW5nKGFSZXNvbHZlcikiLCAiJ1tvYmplY3QgUHJvbWlzZVJlc29sdmVyXSciKTsKKyAgICBz
aG91bGRCZVR5cGUoImFSZXNvbHZlci5mdWxmaWxsIiwgIkZ1bmN0aW9uIik7CisgICAgc2hvdWxk
QmUoImFSZXNvbHZlci5mdWxmaWxsLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmVUeXBlKCJh
UmVzb2x2ZXIucmVzb2x2ZSIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIu
cmVzb2x2ZS5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVyLnJlamVj
dCIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIucmVqZWN0Lmxlbmd0aCIs
ICIxIik7CisKKyAgICAvLyBSZXNvbHZlcnMgZnVuY3Rpb25zIG11c3QgYmUgY2FsbGVkIG9uIHRo
ZSByZXNvbHZlci4KKyAgICByZXNvbHZlckZ1bGZpbGwgPSBhUmVzb2x2ZXIuZnVsZmlsbDsKKyAg
ICBzaG91bGRUaHJvdygicmVzb2x2ZXJGdWxmaWxsKCkiLCAiJ1R5cGVFcnJvcjogUmVjZWl2ZXIg
b2YgZnVsZmlsbCBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyJyIpOworICAgIHJlc29sdmVyUmVz
b2x2ZSA9IGFSZXNvbHZlci5yZXNvbHZlOworICAgIHNob3VsZFRocm93KCJyZXNvbHZlclJlc29s
dmUoKSIsICInVHlwZUVycm9yOiBSZWNlaXZlciBvZiByZXNvbHZlIG11c3QgYmUgYSBQcm9taXNl
UmVzb2x2ZXInIik7CisgICAgcmVzb2x2ZXJSZWplY3QgPSBhUmVzb2x2ZXIucmVqZWN0OworICAg
IHNob3VsZFRocm93KCJyZXNvbHZlclJlamVjdCgpIiwgIidUeXBlRXJyb3I6IFJlY2VpdmVyIG9m
IHJlamVjdCBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyJyIpOworfSk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJQcm9taXNlUmVzb2x2ZXIgY29uc3RydWN0b3IiKTsKK2RlYnVnKCIiKTsKKworc2hv
dWxkVGhyb3coIm5ldyBQcm9taXNlUmVzb2x2ZXIoKSIpOworCitkZWJ1ZygiIik7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCisvLyBBZGFwdGVkIGZyb20gaHR0
cDovL2R4ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwvc291cmNlL2RvbS9wcm9taXNlL3Rl
c3RzL3Rlc3RfcHJvbWlzZS5odG1sIHdoaWNoIHN0YXRlZDoKKy8vICAgIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworCitkZXNjcmlwdGlvbigiUHJvbWlz
ZXMgLSBBZGFwdGVkIGZyb20gaHR0cDovL2R4ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwv
c291cmNlL2RvbS9wcm9taXNlL3Rlc3RzL3Rlc3RfcHJvbWlzZS5odG1sLiIpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHRlc3QoX2EsIF9iKQoreworICAgIGlm
IChpc1Jlc3VsdENvcnJlY3QoX2EsIF9iKSkKKyAgICAgICAgdGVzdFBhc3NlZChzdHJpbmdpZnko
X2EpICsgIiBpcyAiICsgc3RyaW5naWZ5KF9iKSk7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFp
bGVkKHN0cmluZ2lmeShfYSkgKyAiIHNob3VsZCBiZSAiICsgc3RyaW5naWZ5KF9iKSk7Cit9CisK
K2Z1bmN0aW9uIHByb21pc2VSZXNvbHZlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIHJlc29s
dmUuIikKKyAgCisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIp
IHsKKyAgICByZXNvbHZlci5yZXNvbHZlKDQyKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7
CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRl
c3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24oKSB7CisgICAgdGVz
dEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgcnVuVGVzdCgpOwor
ICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVJlamVjdCgpIHsKKyAgZGVidWcoIlRlc3QgUHJv
bWlzZSByZWplY3QuIik7CisgIAorICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVqZWN0KDQyKTsKKyAgfSkudGhlbihmdW5jdGlv
bih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIp
OworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQo
IlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAg
IHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VFeGNlcHRpb24oKSB7Cisg
IGRlYnVnKCJUZXN0IFByb21pc2UgcmVqZWN0LiIpOworCisgIHZhciBwcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICB0aHJvdyA0MjsKKyAgfSkudGhlbihmdW5j
dGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxl
ZCIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNz
ZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOwor
ICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VHQygpIHsKKyAgZGVi
dWcoIlRlc3QgUHJvbWlzZSBnYy4iKTsKKyAgCisgIHZhciByZXNvbHZlcjsKKyAgdmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgcmVzb2x2ZXIgPSByOworICB9KS50
aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuIC0gcHJvbWlzZSBpcyBz
dGlsbCBhbGl2ZSIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7CisKKyAgcHJvbWlzZSA9IG51bGw7
CisKKyAgZ2MoKTsKKworICByZXNvbHZlci5yZXNvbHZlKDQyKTsKK30KKworZnVuY3Rpb24gcHJv
bWlzZUFzeW5jKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIGFzeW5jLiIpOworCisgIHZhciBn
bG9iYWwgPSAiZm9vIjsKKyAgdmFyIGYgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAg
ZGVidWcoIkdsb2JhbCBzaG91bGQgYmUgZm9vIik7CisgICAgdGVzdChnbG9iYWwsICdmb28nKTsK
KworICAgIHIucmVzb2x2ZSg0Mik7CisKKyAgICBkZWJ1ZygiR2xvYmFsIHNob3VsZCBzdGlsbCBi
ZSBmb28iKTsKKyAgICB0ZXN0KGdsb2JhbCwgJ2ZvbycpOworCisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIGJlIGJhciIpOworICAgICAgdGVz
dChnbG9iYWwsICdiYXInKTsKKyAgICAgIHJ1blRlc3QoKTsKKyAgICB9LCAwKTsKKyAgfSkudGhl
bihmdW5jdGlvbigpIHsKKyAgICBnbG9iYWwgPSAiYmFyIjsKKyAgfSk7CisKKyAgZGVidWcoIkds
b2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vICgyKSIpOworICB0ZXN0KGdsb2JhbCwgJ2ZvbycpOwor
fQorCitmdW5jdGlvbiBwcm9taXNlRG91YmxlVGhlbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlz
ZSBkb3VibGUgdGhlbi4iKTsKKworICB2YXIgc3RlcHMgPSAwOworICB2YXIgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZSg0Mik7
CisgIH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3Nl
ZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOwor
ICAgIHN0ZXBzKys7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVu
LnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVk
Iik7CisgICAgdGVzdChzdGVwcywgMSk7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVz
dCgpOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3Qg
aGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlVGhlbkV4Y2Vw
dGlvbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHRoZW4gLyBleGNlcHRpb24uIik7CisK
KyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJl
c29sdmVyLnJlc29sdmUoNDIpOworICB9KTsKKworICBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hh
dCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAg
ICB0aHJvdyAiYm9vaCI7CisgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKKyAgICB0ZXN0UGFzc2Vk
KCJDYXRjaCBoYW5kbGVyIChlLmcuIHRoZSByZWplY3QgaGFuZGxlcikgY2FsbGVkLiIpOworICAg
IHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VUaGVuQ2F0Y2hUaGVuKCkg
eworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNhdGNoIC8gdGhlbi4iKTsKKworICB2
YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2
ZXIucmVzb2x2ZSg0Mik7CisgIH0pOworCisgIHZhciBwcm9taXNlMiA9IHByb21pc2UudGhlbihm
dW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNh
bGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJldHVybiB3aGF0ICsgMTsKKyAgfSwg
ZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNh
bGxlZCIpOworICB9KTsKKworICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0
ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0
LCA0Myk7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAg
dGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pLmNhdGNoKGZ1
bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICB9
KS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFz
IGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9
LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4g
Y2FsbGVkIik7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhl
bigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHJlamVjdCAvIHRoZW4gLyBjYXRjaCAvIHRo
ZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikg
eworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7CisgIH0pOworCisgIHZhciBwcm9taXNlMiA9IHBy
b21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZl
IGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3Nl
ZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7Cisg
ICAgcmV0dXJuIHdoYXQgKyAxOworICB9KTsKKworICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uKHdo
YXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7Cisg
ICAgdGVzdCh3aGF0LCA0Myk7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS5jYXRjaChmdW5j
dGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7Cisg
IH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBo
YXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQ0KTsKKyAgICBydW5UZXN0KCk7Cisg
IH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhlbjIoKSB7CisgIGRl
YnVnKCJUZXN0IFByb21pc2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuICgyKS4iKTsK
KworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAg
cmVzb2x2ZXIucmVqZWN0KDQyKTsKKyAgfSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdo
YXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7Cisg
ICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS5jYXRjaChmdW5j
dGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7Cisg
ICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS50aGVuKGZ1bmN0
aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVk
Iik7CisgICAgdGVzdCh3aGF0LCA0Myk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVu
Y3Rpb24gcHJvbWlzZVJlamVjdFRoZW5DYXRjaEV4Y2VwdGlvblRoZW4oKSB7CisgIGRlYnVnKCJU
ZXN0IFByb21pc2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggZXhjZXB0aW9uIC8gdGhlbi4iKTsK
KworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAg
cmVzb2x2ZXIucmVqZWN0KDQyKTsKKyAgfSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdo
YXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7Cisg
IH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICB0aHJvdyh3aGF0ICsgMSk7Cisg
IH0pLmNhdGNoKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJDYXRjaCBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQzKTsKKyAgICByZXR1cm4gd2hhdCArIDE7Cisg
IH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBo
YXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQ0KTsKKyAgICBydW5UZXN0KCk7Cisg
IH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlVGhlbkNhdGNoT3JkZXJpbmdSZXNvbHZlKCkgewor
ICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gdGhlbiAvIGNhdGNoIG9yZGVyaW5nIChyZXNvbHZlKS4i
KTsKKworICB2YXIgZ2xvYmFsID0gMDsKKyAgdmFyIGYgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihy
KSB7CisgICAgci5yZXNvbHZlKDQyKTsKKyAgfSk7CisKKyAgZi50aGVuKGZ1bmN0aW9uKCkgewor
ICAgIGYudGhlbihmdW5jdGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYu
Y2F0Y2goZnVuY3Rpb24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgZGVidWcoIk1hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAyIik7
CisgICAgICB0ZXN0KGdsb2JhbCwgMik7CisgICAgICBydW5UZXN0KCk7CisgICAgfSwgMCk7Cisg
IH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlVGhlbkNhdGNoT3JkZXJpbmdSZWplY3QoKSB7Cisg
IGRlYnVnKCJUZXN0IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggb3JkZXJpbmcgKHJlamVjdCkuIik7
CisKKyAgdmFyIGdsb2JhbCA9IDA7CisgIHZhciBmID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikg
eworICAgIHIucmVqZWN0KDQyKTsKKyAgfSkKKworICBmLnRoZW4oZnVuY3Rpb24oKSB7fSwgZnVu
Y3Rpb24oKSB7CisgICAgZi50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgZ2xvYmFsKys7CisgICAg
fSk7CisgICAgZi5jYXRjaChmdW5jdGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOwor
ICAgIGYudGhlbihmdW5jdGlvbigpIHt9LCBmdW5jdGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOwor
ICAgIH0pOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBkZWJ1ZygiTWFueSBz
dGVwcy4uLiBzaG91bGQgcmV0dXJuIDIiKTsKKyAgICAgIHRlc3QoZ2xvYmFsLCAyKTsKKyAgICAg
IHJ1blRlc3QoKTsKKyAgICB9LCAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VOZXN0
ZWRQcm9taXNlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gbmVzdGVkIHByb21pc2UiKTsK
KworICBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29s
dmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgICAgdGVzdFBhc3NlZCgiTmVzdGVkIHBy
b21pc2UgaXMgZXhlY3V0ZWQiKTsKKyAgICAgIHIucmVzb2x2ZSg0Mik7CisgICAgfSkpOworICB9
KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhh
cyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3QodmFsdWUsIDQyKTsKKyAgICBydW5UZXN0KCk7Cisg
IH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlTmVzdGVkTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVi
dWcoIlRlc3QgUHJvbWlzZSAtIG5lc3RlZC1uZXN0ZWQgcHJvbWlzZS4iKTsKKworICBuZXcgUHJv
bWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21p
c2UoZnVuY3Rpb24ocikgeworICAgICAgdGVzdFBhc3NlZCgiTmVzdGVkIHByb21pc2UgaXMgZXhl
Y3V0ZWQiKTsKKyAgICAgIHIucmVzb2x2ZSg0Mik7CisgICAgfSkudGhlbihmdW5jdGlvbih3aGF0
KSB7IHJldHVybiB3aGF0ICsgMTsgfSkpOworICB9KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7Cisg
ICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qo
dmFsdWUsIDQzKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNl
V3JvbmdOZXN0ZWRQcm9taXNlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gd3JvbmcgbmVz
dGVkIHByb21pc2UuIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAg
ICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRlc3RQ
YXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUoNDIp
OworICAgIH0pKTsKKyAgICByZXNvbHZlci5yZWplY3QoNDIpOworICB9KS50aGVuKGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIp
OworICAgIHRlc3QodmFsdWUsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0aW9uKHZh
bHVlKSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7Cisg
IH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlTG9vcCgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlz
ZSAtIHByb21pc2UgbG9vcC4iKTsKKworICBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikg
eworICAgIHJlc29sdmVyLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgICAg
dGVzdFBhc3NlZCgiTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQiKTsKKyAgICAgIHIucmVzb2x2
ZShuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZC1u
ZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZCIpOworICAgICAgICByLnJlc29sdmUoNDIpOworICAg
ICAgfSkpOworICAgIH0pKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQ
YXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0
Mik7CisgICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RGYWls
ZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24g
cHJvbWlzZVJlamVjdENvbnN0cnVjdG9yKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gUHJv
bWlzZS5yZWplY3QoKS4iKTsKKworICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVqZWN0KDQyKS50
aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlc29sdmUgaGFzIGJl
ZW4gY2FsbGVkIik7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVu
LnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5U
ZXN0KCk7CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVzb2x2ZUNvbnN0cnVjdG9yKCkg
eworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNvbHZlKCkuIik7CisKKyAgdmFy
IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoNDIpLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAg
IHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdo
YXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWls
ZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24g
cHJvbWlzZVJlc29sdmVDb25zdHJ1Y3Rvck5lc3RlZFByb21pc2UoKSB7CisgIGRlYnVnKCJUZXN0
IFByb21pc2UgLSBQcm9taXNlLnJlc29sdmUoKSB3aXRoICBuZXN0ZWQgcHJvbWlzZS4iKTsKKwor
ICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7
CisgICAgdGVzdFBhc3NlZCgiTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQiKTsKKyAgICByLnJl
c29sdmUoNDIpOworICB9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJTZWNvbmQgYXJn
dW1lbnQgdG8gUHJvbWlzZSBjb25zdHJ1Y3RvciBjYWxsZWQuIik7CisgIH0pKS50aGVuKGZ1bmN0
aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVk
Iik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlvbigp
IHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7
Cit9CisKK3ZhciB0ZXN0cyA9IFsKKyAgICBwcm9taXNlUmVzb2x2ZSwKKyAgICBwcm9taXNlUmVq
ZWN0LAorICAgIHByb21pc2VFeGNlcHRpb24sCisgICAgcHJvbWlzZUdDLAorICAgIHByb21pc2VB
c3luYywKKyAgICBwcm9taXNlRG91YmxlVGhlbiwKKyAgICBwcm9taXNlVGhlbkV4Y2VwdGlvbiwK
KyAgICBwcm9taXNlVGhlbkNhdGNoVGhlbiwKKyAgICBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhl
biwKKyAgICBwcm9taXNlUmVqZWN0VGhlbkNhdGNoVGhlbjIsCisgICAgcHJvbWlzZVJlamVjdFRo
ZW5DYXRjaEV4Y2VwdGlvblRoZW4sCisgICAgcHJvbWlzZVRoZW5DYXRjaE9yZGVyaW5nUmVzb2x2
ZSwKKyAgICBwcm9taXNlVGhlbkNhdGNoT3JkZXJpbmdSZWplY3QsCisgICAgcHJvbWlzZU5lc3Rl
ZFByb21pc2UsCisgICAgcHJvbWlzZU5lc3RlZE5lc3RlZFByb21pc2UsCisgICAgcHJvbWlzZVdy
b25nTmVzdGVkUHJvbWlzZSwKKyAgICBwcm9taXNlTG9vcCwKKyAgICBwcm9taXNlUmVqZWN0Q29u
c3RydWN0b3IsIAorICAgIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3IsCisgICAgcHJvbWlzZVJl
c29sdmVDb25zdHJ1Y3Rvck5lc3RlZFByb21pc2UsCitdOworCitmdW5jdGlvbiBydW5UZXN0KCkg
eworICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHJldHVy
bjsKKyAgfQorCisgIGRlYnVnKCIiKTsKKyAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICB0
ZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1jYXRj
aC1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDMgQEAKK2ltcG9ydFNjcmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRp
b24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CisKK2dsb2JhbC5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5l
dyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50aGlzSW5Jbml0ID0g
dGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vjb25kUHJvbWlz
ZSA9IGZpcnN0UHJvbWlzZS5jYXRjaChmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnRoaXNJ
bkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxD
YWxsYmFjayA9PT0gZmlyc3RQcm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmls
bENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIHJldHVybiAn
YnllJzsKK30pOworCitzZWNvbmRQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGds
b2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0Jywg
J2J5ZScpOworICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9
LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmluaXNoSlNUZXN0
KCk7Cit9LCBmdW5jdGlvbigpIHsKK30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09
IGZpcnN0UHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQ
cm9taXNlJyk7CitzaG91bGRCZVRydWUoJ3NlY29uZFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNl
Jyk7CisKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UuY2F0Y2gobnVsbCknLCAnIlR5cGVFcnJv
cjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50Iicp
Oworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS5jYXRjaCgzNyknLCAnIlR5cGVFcnJvcjogRXhw
ZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOworCity
ZXNvbHZlci5yZWplY3QoJ2hlbGxvJyk7CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVz
b3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1mdWxm
aWxsLWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0
U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNl
LicpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJv
bWlzZVN0YXRlID0gJ3BlbmRpbmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citw
cm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxs
ZWQnOworICBwcm9taXNlUmVzdWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7Cisg
IHByb21pc2VTdGF0ZSA9ICdyZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9
KTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOwor
CityZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3By
b21pc2VTdGF0ZScsICdwZW5kaW5nJyk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbigpIHsKKyAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAnZnVsZmlsbGVkJyk7CisgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVJlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdwcm9taXNlIGlzIHJlamVj
dGVkLicpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWluaXQt
aW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACitpbXBvcnRTY3Jp
cHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworZ2xvYmFsLmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit2
YXIgdGhpc0luSW5pdDsKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocikgeworICB0aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSByOworfSk7
CisKK3Nob3VsZEJlVHJ1ZSgncHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJl
KCdwcm9taXNlLmNvbnN0cnVjdG9yJywgJ1Byb21pc2UnKTsKK3Nob3VsZEJlKCd0aGlzSW5Jbml0
JywgJ3Byb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgncmVzb2x2ZXIgaW5zdGFuY2VvZiBQcm9taXNl
UmVzb2x2ZXInKTsKK3Nob3VsZEJlKCdyZXNvbHZlci5jb25zdHJ1Y3RvcicsICdQcm9taXNlUmVz
b2x2ZXInKTsKKworc2hvdWxkVGhyb3coJ25ldyBQcm9taXNlKCknLCAnIlR5cGVFcnJvcjogRXhw
ZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IicpOworc2hvdWxkVGhyb3coJ25ldyBQcm9taXNl
KDM3KScsICciVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVu
dCInKTsKKworc2hvdWxkTm90VGhyb3coJ3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigp
IHsgdGhyb3cgRXJyb3IoImZvbyIpOyB9KScpOworcHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgZnVu
Y3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0Lm1lc3NhZ2UnLCAnZm9vJyk7Cit9KTsKKworbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgiaGVsbG8iKTsKKyAgdGhy
b3cgRXJyb3IoImZvbyIpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnJl
c3VsdCA9IHJlc3VsdDsKKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVu
Y3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RGYWlsZWQo
J3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlamVjdC1pbi13
b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMv
UHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMy
IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdU
ZXN0IFByb21pc2UuJyk7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2ZXI7
Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIgPSByOyB9
KTsKK3ZhciBwcm9taXNlU3RhdGUgPSAncGVuZGluZyc7Cit2YXIgcHJvbWlzZVJlc3VsdCA9IHVu
ZGVmaW5lZDsKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRl
ID0gJ2Z1bGZpbGxlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9LCBmdW5jdGlvbihy
ZXN1bHQpIHsKKyAgcHJvbWlzZVN0YXRlID0gJ3JlamVjdGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9
IHJlc3VsdDsKK30pOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VTdGF0ZScsICdw
ZW5kaW5nJyk7CisKK3Jlc29sdmVyLnJlamVjdCgnaGVsbG8nKTsKKworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCitwcm9taXNlLnRoZW4oZnVuY3Rp
b24oKSB7CisgIHRlc3RGYWlsZWQoJ3Byb21pc2UgaXMgZnVsZmlsbGVkLicpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21p
c2VTdGF0ZScsICdyZWplY3RlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VS
ZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1p
bi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMSBAQAoraW1wb3J0U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlLicpOworCit2YXIgZ2xvYmFsID0gdGhpczsKK2dsb2JhbC5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKwordmFyIGZpcnN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmVyKSB7CisgIHJlc29sdmVyLnJlc29sdmUoJ2hlbGxvJyk7Cit9KTsKKwordmFyIHNl
Y29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xv
YmFsLnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0lu
RnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIGZhaWwoJ3JlamVjdGVkJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Q
cm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXNpbXBsZS1pbi13b3Jr
ZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKK2ltcG9ydFNjcmlwdHMoJy4v
anMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFy
IGdsb2JhbCA9IHRoaXM7CisKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJl
c29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24obmV3UmVz
b2x2ZXIpIHsKKyAgZ2xvYmFsLnRoaXNJbkluaXQgPSB0aGlzOworICByZXNvbHZlciA9IG5ld1Jl
c29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9taXNlLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlzOwor
ICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZScp
OworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jl
c3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitzaG91bGRCZVRydWUo
J3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworCityZXNvbHZlci5mdWxmaWxsKCdoZWxs
bycpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLWlu
LXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMv
UHJvbWlzZS10aGVuLWluLXdvcmtlcnMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisK
K2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworCitn
bG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0
UHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50
aGlzSW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIg
c2Vjb25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBn
bG9iYWwudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVGYWxzZSgndGhp
c0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2UnKTsKKyAgc2hvdWxkQmVUcnVlKCd0
aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgZ2xvYmFsLnJlc3Vs
dCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsK
KyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBm
aXJzdFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgnZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJv
bWlzZScpOworc2hvdWxkQmVUcnVlKCdzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScp
OworCitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLnRoZW4obnVsbCknLCAnIlR5cGVFcnJvcjog
RXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOwor
c2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCknLCAnIlR5cGVF
cnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIHNlY29uZCBhcmd1bWVu
dCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbigzNyknLCAnIlR5cGVFcnJvcjog
RXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50IicpOwor
CityZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhl
bi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWlu
LXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0U2NyaXB0
cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOwor
Cit2YXIgZ2xvYmFsID0gdGhpczsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitu
ZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHIuZnVsZmlsbCgnaGVsbG8nKTsgfSkKKyAgLnRoZW4o
KQorICAudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgICAgZmlu
aXNoSlNUZXN0KCk7CisgIH0pOworCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209604</attachid>
            <date>2013-08-25 14:10:35 -0700</date>
            <delta_ts>2013-08-26 10:36:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120260-20130825141040.patch</filename>
            <type>text/plain</type>
            <size>237862</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcyAt
IGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNwcm9taXNlcy4KKyAgICAgICAgLSBEZXNwaXRl
IFByb21pc2VzIGJlaW5nIGRlZmluZWQgaW4gdGhlIERPTSwgdGhlIGltcGxlbWVudGF0aW9uIGlz
IGJlaW5nIHB1dCBpbiBKU0MKKyAgICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIFByb21p
c2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVmaW5lZCBpbiBFQ01BU2NyaXB0LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgVXBkYXRlIGpzYydzIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHRvIHN0
dWIgb3V0IHRoZSBuZXcgUXVldWVUYXNrVG9FdmVudExvb3AgY2FsbGJhY2suIFRoaXMgbWVhbidz
CisgICAgICAgIHlvdSBjYW4ndCBxdWl0ZSB1c2UgUHJvbWlzZXMgd2l0aCB3aXRoIHRoZSBjb21t
YW5kIGxpbmUgdG9vbCB5ZXQuCisgICAgCisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
Lmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlND
OjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBzdXBwb3J0
aW5nIGNvZGUgZm9yIHRoZSBuZXcgc3RhdGljIGxvb2t1cCB0YWJsZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgIEFkZCAzIG5ldyBpZGVudGlmaWVy
cywgIlByb21pc2UiLCAiUHJvbWlzZVJlc29sdmVyIiwgYW5kICJ0aGVuIi4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIEFkZCBzdXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVy
J3MgY29uc3RydWN0b3JzIGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpUYXNrQ29udGV4dDo6flRhc2tDb250ZXh0KToK
KyAgICAgICAgQWRkIGEgbmV3IGNhbGxiYWNrIHRvIHRoZSBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSB0byBwb3N0IGEgdGFzayBvbiB0aGUgZW1iZWRkZXIncyBydW5sb29wLgorCisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnByb21pc2VSZXNvbHZlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojpwcm9taXNlQ2FsbGJhY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSk6CisgICAgICAgIEFkZCBz
dXBwb3J0aW5nIGNvZGUgUHJvbWlzZSBhbmQgUHJvbWlzZVJlc29sdmVyJ3MgY29uc3RydWN0b3Jz
IGFuZCBzdHJ1Y3R1cmVzLgorCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1By
b21pc2VDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFByb21p
c2UgaW1wbGVtZW50YXRpb24uCisKIDIwMTMtMDgtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b0pTVmFsdWUgc2hv
dWxkIGFsbW9zdCBjZXJ0YWlubHkgbm90IHVzZSBqc051bWJlcigpIHNpbmNlIHRoYXQgYXR0ZW1w
dHMgaW50IGNvbnZlcnNpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2UuY3BwCisgICAgcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAKKyAgICBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCisgICAgcnVudGltZS9KU1Byb21p
c2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAg
IHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTUsNiAr
NDIyLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHAKKyAgICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgYWxsIDogXAogICAgIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpT
R2xvYmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggXAorICAg
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAg
ICAgTmFtZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDkgQEAgTFVU
X0ZJTEVTICs9IFwKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcCBc
CisgICAgcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTmFt
ZVByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5o
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTWF0aE9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTmFtZVByb3RvdHlw
ZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggXApAQCAtODExLDYgKzgxNCwyMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ2FsbGJh
Y2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNv
bHZlckNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBAIFNP
VVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
SlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTUHJvbWlzZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlQ2FsbGJhY2suY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyLmNwcCBcCisg
ICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgXAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAgXAogICAgIHJ1bnRp
bWUvSlNTY29wZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE1NDU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNyArMjU5LDcgQEAgcHJvdGVjdGVkOgogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9i
YWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogCiBj
b25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NB
Y2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNiArNDY4LDEzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU09iamVjdC5jcHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU1Byb21pc2UuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNQcm9taXNlQ2FsbGJhY2suY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUHJvdG90eXBlLmNwcCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyLmNwcCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3Ry
dWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3BwIiAvPg0KQEAgLTU0Myw2ICs1NTAsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQ
cm90b3R5cGUubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU09OT2JqZWN0Lmx1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5sdXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcTGV4ZXIubHV0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXExMSW50QXNzZW1ibHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTnVtYmVyQ29uc3RydWN0b3IubHV0
LmgiIC8+DQpAQCAtODgwLDYgKzg5MCwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU09OT2JqZWN0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU09iamVjdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b21pc2VDYWxsYmFjay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTUHJvbWlzZVByb3RvdHlwZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNQcm9taXNlUmVzb2x2ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1By
b3h5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgi
IC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NDU3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNiArNjQ5LDIwIEBACiAJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
ICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggKi87IH07CisJCTdDMTVGNjVEMTdDMTk5Q0Uw
MDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9t
aXNlQ2FsbGJhY2suY3BwICovOyB9OworCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQ
cm9taXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTVGNjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICov
OyB9OworCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMw
MDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwICovOyB9OworCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi87IH07CisJ
CTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFGMTdC
RUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8q
IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI4
RTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuY3BwICovOyB9OworCQk3QzNC
QTI5NTE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0JBMjhGMTdDMDM5NTYwMDcyRERD
OSAvKiBKU1Byb21pc2VSZXNvbHZlci5oICovOyB9OworCQk3QzNCQTI5NjE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MDE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDM0JBMjk3MTdDMDM5
NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MTE3QzAzOTU2MDA3MkRE
QzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk3QzNCQTI5ODE3
QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQkEyOTIxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJN0MzQkEy
OTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCQTI5MzE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJN0VGRjAwNjQw
RUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAx
Miw4ICsxMDI2LDYgQEAKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyog
V2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzE4
QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07Ci0JCUJDMThDNTI2MEUxNkZDQTcwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmx1dC5oICovOyB9OwotCQlCQzE4QzUyQTBFMTZGQ0MyMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDNTI5MEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oICovOyB9OwogCQlC
QzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0
NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9Owog
CQlCQzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2Qzkg
LyogQXJndW1lbnRzLmggKi87IH07CkBAIC0xNzc5LDYgKzE3OTEsMjMgQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEUx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQkEyOEYxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJl
c29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0JBMjkwMTdDMDM5NTYwMDcy
RERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5MTE3QzAzOTU2MDA3MkREQzkgLyog
SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDM0JBMjkyMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VSZXNvbHZlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCQTI5QTE3QzAzQkUxMDA3
MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVy
ZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VGRjAwNjMwRUMwNUE5
QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTIxLDggKzIxNTAs
NiBAQAogCQlCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYw
IC8qIE1hdGhPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMThDNTJCMEUx
NkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTYsNyArMjE4Myw2IEBACiAJCUJDNzk1MjM0MEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJvb2xlYW5Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzc5NTIzNTBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0Nl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDZWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM4MTQ5QUYxMkY4OUY1MzAwN0IyQzMyIC8q
IEhlYWRlckRldGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFk
ZXJEZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT05PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjUsMTggKzI4
OTEsMTggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MzQkEyOUEx
N0MwM0JFMTAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywK
IAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywK
LQkJCQlCQzgxNDlBRjEyRjg5RjUzMDA3QjJDMzIgLyogSGVhZGVyRGV0ZWN0aW9uLmggKi8sCiAJ
CQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCisJCQkJ
N0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAq
LywKIAkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8sCi0JCQkJ
QkMxOEM1MjkwRTE2RkNDMjAwQjM0NDYwIC8qIE1hdGhPYmplY3QubHV0LmggKi8sCiAJCQkJQkMy
NjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8sCiAJ
CQkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLywKLQkJ
CQlCQzE4QzUyNTBFMTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovLAog
CQkJCTVENTM3MjdEMEUxQzU1RUMwMDIxRTU0OSAvKiBUcmFjaW5nRHRyYWNlLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMzEwMiw2ICszMTI4LDIwIEBACiAJ
CQkJQkMyMkEzOTkwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmggKi8sCiAJCQkJQTdGOTkz
NUUwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwICovLAogCQkJCUE3Rjk5MzVEMEZE
NzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmggKi8sCisJCQkJN0MxODRFMTgxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8sCisJCQkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovLAorCQkJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8sCisJCQkJN0MxNUY2NUMxN0MxOTlDRTAwNzk0RDQwIC8qIEpT
UHJvbWlzZUNhbGxiYWNrLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0Eg
LyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJN0MzQkEyOEUxN0MwMzk1NjAw
NzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyLmNwcCAqLywKKwkJCQk3QzNCQTI4RjE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXIuaCAqLywKKwkJCQk3QzNCQTI5MDE3QzAzOTU2
MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJN0Mz
QkEyOTExN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3QzNCQTI5MjE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTdDM0JBMjkzMTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5oICovLAogCQkJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4
RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovLAogCQkJCTg2MjU1M0NFMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKQEAgLTM3NjcsNiArMzgwNyw3IEBACiAJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zODM0LDYgKzM4NzUsNyBAQAogCQkJCUE3RDlBMjk4MTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZD
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTExLDYgKzM5NTMsNyBAQAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTkxN0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zOTc1LDYgKzQwMTgsNyBAQAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2
RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0JBMjk1MTdD
MDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggaW4gSGVhZGVycyAqLywKQEAgLTQxMzUsNyArNDE3OSw2IEBACiAJCQkJQzIxMTIyRTMx
NUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDMThDNTJBMEUxNkZDQzIwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0Lmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhF
MjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MjAwLDExICs0MjQzLDE0IEBACiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3Rv
dHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMTg0RTFC
MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2
NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFBy
b3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzQkEyOTcx
N0MwMzk1NjAwNzJEREM5IC8qIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDIwMkMyMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyRDYwRTE3MDcwODAwMkM3RTgyIC8qIFJlZ0V4
cENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCNDExMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjE1LDYgKzQyNjEsNyBA
QAogCQkJCUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdCMiAvKiBSZWplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJl
cGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBE
QjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNDEsNyArNDI4
OCw2IEBACiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5n
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzUyNjBFMTZGQ0E3MDBC
MzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMx
M0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDcyOCw2ICs0Nzc0LDcgQEAKIAkJCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZH
RGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyOTgxRkRDMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDM0JBMjk4MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VS
ZXNvbHZlclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVF
MDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NDc0OSw2ICs0Nzk2LDcgQEAKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQx
NTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZH
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyog
REZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENGMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDc2OCw2ICs0ODE2
LDcgQEAKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlERDIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
M0JBMjk2MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC00Nzk3LDYgKzQ4NDYsNyBAQAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJC
NzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzE4NEUxRTE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9t
aXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExDQXJndW1lbnRHZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBB
MjcxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTQ4NTgsNiArNDkwOCw3IEBACiAJCQkJMTQwQjdEMUQwREM2OUFGNzAwOUM0MkI4
IC8qIEpTQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDM0JBMjk0MTdDMDM5NTYwMDcyRERDOSAvKiBKU1Byb21pc2VSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDky
Nyw2ICs0OTc4LDcgQEAKIAkJCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRF
MUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDk4MSw2ICs1MDMzLDcgQEAKIAkJ
CQkxNDc0QzMzQzE2QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTg0RTIyMTdCRUUyNDAwMDdDQjYzQSAv
KiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEw
N0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNC
MTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25z
dHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZt
KCkucmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
Y2FsbEZyYW1lLT52bSgpLnJlZ0V4cFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5zdHJpbmdDb25zdHJ1Y3RvclRhYmxlOyB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VQcm90b3R5cGVUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnByb21pc2VQcm90b3R5
cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgp
LnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGU7IH0K
IAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVhdGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJh
c2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAg
ICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMoKSB7IHJldHVybiB0aGlzOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKICAgICBtYWNybyhO
YU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKICAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNy
byhQcm9taXNlKSBcCisgICAgbWFjcm8oUHJvbWlzZVJlc29sdmVyKSBcCiAgICAgbWFjcm8oUmFu
Z2VFcnJvcikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVnRXhw
KSBcCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN1
YmFycmF5KSBcCiAgICAgbWFjcm8odGVzdCkgXAorICAgIG1hY3JvKHRoZW4pIFwKICAgICBtYWNy
byh0b0V4cG9uZW50aWFsKSBcCiAgICAgbWFjcm8odG9GaXhlZCkgXAogICAgIG1hY3JvKHRvSVNP
U3RyaW5nKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDEzIEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAi
SlNQcm9taXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk5LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
eyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0Vu
YWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIDAgfTsKIAogLyogU291cmNlIGZvciBK
U0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxlCkBAIC0yOTcsNiAr
MzA0LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBt
X2Vycm9yUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIEVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9lcnJvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpKTsKIAorICAgIG1fcHJvbWlz
ZVByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgSlNQcm9taXNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgbV9wcm9taXNlU3Ry
dWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT52bSgpLCB0aGlzLCBtX3Byb21pc2VQcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fcHJv
bWlzZVJlc29sdmVyUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CisgICAgbV9wcm9taXNlUmVzb2x2ZXJTdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhp
cywgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb21pc2VDYWxs
YmFja1N0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLnNldChleGVjLT52bSgp
LCB0aGlzLCBKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgCiAgICAgLy8gQ29u
c3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zMDYsNiArMzIxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIEpTQ2VsbCogYm9vbGVhbkNvbnN0cnVjdG9yID0g
Qm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgQm9vbGVhbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBudW1iZXJDb25z
dHJ1Y3RvciA9IE51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgTnVtYmVyQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogZGF0
ZUNvbnN0cnVjdG9yID0gRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgRGF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgSlNDZWxsKiBwcm9t
aXNlQ29uc3RydWN0b3IgPSBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMs
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgSlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVy
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKIAogICAgIG1fcmVn
RXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCkpKTsKIApAQCAtMzI5LDYgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2RhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZGF0ZUNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9yZWdFeHBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3RvciwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAgIG1f
ZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgbV9lcnJvckNvbnN0cnVjdG9yLmdldCgp
LCBEb250RW51bSk7CisgICAgbV9wcm9taXNlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHBy
b21pc2VDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzQ1LDYg
KzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuU3ludGF4RXJyb3IsIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5UeXBlRXJyb3IsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuVVJJRXJyb3IsIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlLCBwcm9taXNlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuUHJvbWlzZVJlc29sdmVyLCBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5z
dHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24u
Z2V0KCksIERvbnRFbnVtKTsKQEAgLTU2NCw2ICs1ODUsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGF0ZVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvdHlw
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwpAQCAtNTk0LDcgKzYxNywxMSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Byb21pc2VSZXNvbHZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlKTsKKwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclN0cnVjdHVyZSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIAog
I2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiAj
aW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwpAQCAtNTgsNiAr
NTksOCBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKK2NsYXNzIEpT
UHJvbWlzZVByb3RvdHlwZTsKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xh
c3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I7CkBAIC03MCw3ICs3MywxNCBAQCBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNr
Tm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CiAKIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2
PiBFeGVjU3RhdGVTdGFjazsKLSAgICAKKworY2xhc3MgVGFza0NvbnRleHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxUYXNrQ29udGV4dD4geworcHVibGljOgorICAgIHZpcnR1YWwgflRhc2tDb250ZXh0
KCkKKyAgICB7CisgICAgfQorfTsKKwogc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIGJvb2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9u
UHRyIGFsbG93c0FjY2Vzc0Zyb207CkBAIC04Niw2ICs5NiwxMCBAQCBzdHJ1Y3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgewogCiAgICAgdHlwZWRlZiBib29sICgqSmF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZEZ1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIEphdmFT
Y3JpcHRFeHBlcmltZW50c0VuYWJsZWRGdW5jdGlvblB0ciBqYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkOworCisgICAgdHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFj
a0Z1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHR5cGVkZWYgdm9p
ZCAoKlF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiwgUXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPFRh
c2tDb250ZXh0Pik7CisgICAgUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRh
c2tUb0V2ZW50TG9vcDsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewpAQCAtMTM0LDYgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAg
ICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4gbV9kYXRlUHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFy
cmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNQcm9taXNlUHJvdG90eXBlPiBtX3Byb21pc2VQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVy
PEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlPiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsK
IAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7
CkBAIC0xNjcsNyArMTgzLDExIEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cmluZ09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9wcm9taXNlU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVJlc29sdmVyU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZUNhbGxiYWNrU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvbWlz
ZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZTsKKwogICAgIFdyaXRlQmFycmllcjxKU0FycmF5QnVm
ZmVyUHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAgICAgCkBAIC0zMTIsNiArMzMyLDgg
QEAgcHVibGljOgogICAgIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGVQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAg
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpT
UHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3Ry
dWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CkBAIC0zNTksNyArMzgxLDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IHByb21pc2VSZXNvbHZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29s
dmVyU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBwcm9taXNlQ2FsbGJhY2tTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQorCiAg
ICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBh
cnJheUJ1ZmZlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTUHJvbWlzZVRhc2tDb250ZXh0IDogcHVibGljIFRhc2tDb250ZXh0IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU1Byb21pc2VUYXNrQ29udGV4dD4gY3JlYXRlKFZNJiB2bSwg
SlNQcm9taXNlKiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBK
U1Byb21pc2VUYXNrQ29udGV4dCh2bSwgcHJvbWlzZSkpOworICAgIH0KKworICAgIEpTUHJvbWlz
ZSYgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuICptX3Byb21pc2UuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBKU1Byb21pc2VUYXNrQ29udGV4dChWTSYgdm0sIEpTUHJvbWlzZSogcHJvbWlzZSkK
KyAgICB7CisgICAgICAgIG1fcHJvbWlzZS5zZXQodm0sIHByb21pc2UpOworICAgIH0KKworICAg
IFN0cm9uZzxKU1Byb21pc2U+IG1fcHJvbWlzZTsKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1By
b21pc2U6OnNfaW5mbyA9IHsgIlByb21pc2UiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTUHJvbWlzZSkgfTsKKworSlNQcm9taXNlKiBKU1Byb21pc2U6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTUHJvbWlzZSogcHJvbWlz
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4odm0uaGVhcCkpIEpTUHJv
bWlzZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm9taXNlLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0pTUHJvbWlzZSogSlNQcm9taXNlOjpjcmVhdGVXaXRo
UmVzb2x2ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpT
UHJvbWlzZSogcHJvbWlzZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZT4o
dm0uaGVhcCkpIEpTUHJvbWlzZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkp
OworICAgIHByb21pc2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgIEpTUHJvbWlzZVJlc29s
dmVyKiByZXNvbHZlciA9IEpTUHJvbWlzZVJlc29sdmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+cHJvbWlzZVJlc29sdmVyU3RydWN0dXJlKCksIHByb21pc2UpOworICAgIHByb21pc2UtPnNl
dFJlc29sdmVyKHZtLCByZXNvbHZlcik7CisKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworU3Ry
dWN0dXJlKiBKU1Byb21pc2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlOjpKU1Byb21pc2Uo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3N0YXRlKFBlbmRpbmcpCit7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBKU1Byb21p
c2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTUHJvbWlzZSo+
KGNlbGwpLT5KU1Byb21pc2U6On5KU1Byb21pc2UoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1Byb21pc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVzb2x2ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Jlc3VsdCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPm1fZnVsZmlsbENhbGxiYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZnVsZmlsbENhbGxiYWNrc1tpXSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX3JlamVjdENhbGxiYWNrcy5zaXplKCk7ICsraSkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVqZWN0Q2FsbGJhY2tzW2ld
KTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNldFJlc29sdmVyKFZNJiB2bSwgSlNQcm9taXNlUmVz
b2x2ZXIqIHJlc29sdmVyKQoreworICAgIG1fcmVzb2x2ZXIuc2V0KHZtLCB0aGlzLCByZXNvbHZl
cik7Cit9CisKK0pTUHJvbWlzZVJlc29sdmVyKiBKU1Byb21pc2U6OnJlc29sdmVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsKK30KKwordm9pZCBKU1Byb21pc2U6OnNl
dFJlc3VsdChWTSYgdm0sIEpTVmFsdWUgcmVzdWx0KQoreworICAgIG1fcmVzdWx0LnNldCh2bSwg
dGhpcywgcmVzdWx0KTsKK30KKworSlNWYWx1ZSBKU1Byb21pc2U6OnJlc3VsdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVzdWx0LmdldCgpOworfQorCit2b2lkIEpTUHJvbWlzZTo6c2V0U3Rh
dGUoSlNQcm9taXNlOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBQZW5k
aW5nKTsKKyAgICBtX3N0YXRlID0gc3RhdGU7Cit9CisKK0pTUHJvbWlzZTo6U3RhdGUgSlNQcm9t
aXNlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjphcHBlbmRDYWxsYmFja3MoRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdWxmaWxsQ2FsbGJhY2ssIEludGVybmFsRnVuY3Rpb24qIHJlamVjdENhbGxiYWNrKQorewor
ICAgIC8vIDEuIEFwcGVuZCBmdWxmaWxsQ2FsbGJhY2sgdG8gcHJvbWlzZSdzIGZ1bGZpbGwgY2Fs
bGJhY2tzLgorICAgIG1fZnVsZmlsbENhbGxiYWNrcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMtPnZtKCksIHRoaXMsIGZ1bGZpbGxDYWxsYmFjaykpOworICAgIAor
ICAgIC8vIDIuIEFwcGVuZCByZWplY3RDYWxsYmFjayB0byBwcm9taXNlJyByZWplY3QgY2FsbGJh
Y2tzLgorICAgIG1fcmVqZWN0Q2FsbGJhY2tzLmFwcGVuZChXcml0ZUJhcnJpZXI8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYy0+dm0oKSwgdGhpcywgcmVqZWN0Q2FsbGJhY2spKTsKKworICAgIC8vIDMu
IElmIHByb21pc2UncyBzdGF0ZSBpcyBmdWxmaWxsZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNz
IHByb21pc2UncyBmdWxmaWxsIGNhbGxiYWNrcyB3aXRoIHByb21pc2UncyByZXN1bHQuCisgICAg
aWYgKG1fc3RhdGUgPT0gRnVsZmlsbGVkKSB7CisgICAgICAgIHF1ZXVlVGFza1RvUHJvY2Vzc0Z1
bGZpbGxDYWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0
LiBJZiBwcm9taXNlJ3Mgc3RhdGUgaXMgcmVqZWN0ZWQsIHF1ZXVlIGEgdGFzayB0byBwcm9jZXNz
IHByb21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggcHJvbWlzZSdzIHJlc3VsdC4KKyAgICBp
ZiAobV9zdGF0ZSA9PSBSZWplY3RlZCkgeworICAgICAgICBxdWV1ZVRhc2tUb1Byb2Nlc3NSZWpl
Y3RDYWxsYmFja3MoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpxdWV1ZVRhc2tUb1Byb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNz
RnVsZmlsbENhbGxiYWNrc0ZvclRhc2ssIEpTUHJvbWlzZVRhc2tDb250ZXh0OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgdGhpcykpOworICAgIGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUjog
RXZlbnQgbG9vcCBub3Qgc3VwcG9ydGVkLiIpOworfQorCit2b2lkIEpTUHJvbWlzZTo6cXVldWVU
YXNrVG9Qcm9jZXNzUmVqZWN0Q2FsbGJhY2tzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVu
dExvb3ApCisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBwcm9jZXNzUmVqZWN0Q2FsbGJhY2tz
Rm9yVGFzaywgSlNQcm9taXNlVGFza0NvbnRleHQ6OmNyZWF0ZShleGVjLT52bSgpLCB0aGlzKSk7
CisgICAgZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBz
dXBwb3J0ZWQuIik7Cit9CisKK3ZvaWQgSlNQcm9taXNlOjpwcm9jZXNzRnVsZmlsbENhbGxiYWNr
c0ZvclRhc2soRXhlY1N0YXRlKiBleGVjLCBUYXNrQ29udGV4dCogdGFza0NvbnRleHQpCit7Cisg
ICAgSlNQcm9taXNlVGFza0NvbnRleHQqIHByb21pc2VUYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0
PEpTUHJvbWlzZVRhc2tDb250ZXh0Kj4odGFza0NvbnRleHQpOworICAgIEpTUHJvbWlzZSYgcHJv
bWlzZSA9IHByb21pc2VUYXNrQ29udGV4dC0+cHJvbWlzZSgpOworCisgICAgcHJvbWlzZS5wcm9j
ZXNzRnVsZmlsbENhbGxiYWNrc1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLnJlc3VsdCgpKTsKK30K
Kwordm9pZCBKU1Byb21pc2U6OnByb2Nlc3NSZWplY3RDYWxsYmFja3NGb3JUYXNrKEV4ZWNTdGF0
ZSogZXhlYywgVGFza0NvbnRleHQqIHRhc2tDb250ZXh0KQoreworICAgIEpTUHJvbWlzZVRhc2tD
b250ZXh0KiBwcm9taXNlVGFza0NvbnRleHQgPSBzdGF0aWNfY2FzdDxKU1Byb21pc2VUYXNrQ29u
dGV4dCo+KHRhc2tDb250ZXh0KTsKKyAgICBKU1Byb21pc2UmIHByb21pc2UgPSBwcm9taXNlVGFz
a0NvbnRleHQtPnByb21pc2UoKTsKKworICAgIHByb21pc2UucHJvY2Vzc1JlamVjdENhbGxiYWNr
c1dpdGhWYWx1ZShleGVjLCBwcm9taXNlLnJlc3VsdCgpKTsKK30KKwordm9pZCBKU1Byb21pc2U6
OnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBGdWxmaWxsZWQpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bGZpbGxDYWxsYmFja3Muc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IG1fZnVsZmlsbENhbGxiYWNrc1tpXS5nZXQoKTsKKwor
ICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBK
U0M6OmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwo
ZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAg
ICB9CisgICAgCisgICAgbV9mdWxmaWxsQ2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlOjpwcm9jZXNzUmVqZWN0Q2FsbGJhY2tzV2l0aFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBSZWplY3RlZCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVqZWN0Q2FsbGJhY2tzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEpTVmFsdWUgY2FsbGJhY2sgPSBtX3JlamVjdENhbGxiYWNrc1tpXS5nZXQoKTsK
KworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBKU0M6OmdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAgICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNh
bGwoZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsK
KyAgICB9CisgICAgCisgICAgbV9yZWplY3RDYWxsYmFja3MuY2xlYXIoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTUHJvbWlzZV9oCisjZGVmaW5lIEpTUHJvbWlzZV9oCisKKyNpbmNsdWRlICJKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUmVz
b2x2ZXI7CitjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworY2xhc3MgVGFza0NvbnRleHQ7CisKK2Ns
YXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJv
bWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2UqIGNyZWF0ZVdpdGhSZXNvbHZlcihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIHNldFJlc29sdmVyKFZNJiwgSlNQcm9taXNl
UmVzb2x2ZXIqKTsKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIoKSBjb25zdDsKKwor
ICAgIGVudW0gU3RhdGUgeworICAgICAgICBQZW5kaW5nLAorICAgICAgICBGdWxmaWxsZWQsCisg
ICAgICAgIFJlamVjdGVkLAorICAgIH07CisKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsKKyAg
ICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRSZXN1bHQoVk0mLCBKU1ZhbHVl
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCgpIGNvbnN0OworCisgICAgdm9pZCBhcHBlbmRDYWxsYmFj
a3MoRXhlY1N0YXRlKiwgSW50ZXJuYWxGdW5jdGlvbiogZnVsZmlsbENhbGxiYWNrLCBJbnRlcm5h
bEZ1bmN0aW9uKiByZWplY3RDYWxsYmFjayk7CisKKyAgICB2b2lkIHF1ZXVlVGFza1RvUHJvY2Vz
c0Z1bGZpbGxDYWxsYmFja3MoRXhlY1N0YXRlKik7CisgICAgdm9pZCBxdWV1ZVRhc2tUb1Byb2Nl
c3NSZWplY3RDYWxsYmFja3MoRXhlY1N0YXRlKik7CisgICAgdm9pZCBwcm9jZXNzRnVsZmlsbENh
bGxiYWNrc1dpdGhWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICB2b2lkIHByb2Nlc3NS
ZWplY3RDYWxsYmFja3NXaXRoVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKKworcHJpdmF0ZToKKyAgICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUq
KTsKKworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzRm9yVGFzayhFeGVj
U3RhdGUqLCBUYXNrQ29udGV4dCopOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NSZWplY3RDYWxs
YmFja3NGb3JUYXNrKEV4ZWNTdGF0ZSosIFRhc2tDb250ZXh0Kik7CisKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4g
bV9yZXNvbHZlcjsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9yZXN1bHQ7CisgICAgVmVj
dG9yPFdyaXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPiA+IG1fZnVsZmlsbENhbGxiYWNrczsK
KyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEludGVybmFsRnVuY3Rpb24+ID4gbV9yZWplY3RDYWxs
YmFja3M7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNQcm9taXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNQcm9taXNlQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5o
IgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZUNhbGxiYWNrOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNl
Q2FsbGJhY2spIH07CisKK0pTUHJvbWlzZUNhbGxiYWNrKiBKU1Byb21pc2VDYWxsYmFjazo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyKiByZXNvbHZlciwgQWxnb3JpdGhtIGFs
Z29yaXRobSkKK3sKKyAgICBKU1Byb21pc2VDYWxsYmFjayogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb21pc2VDYWxsYmFjaz4oKmV4ZWMtPmhlYXAoKSkpIEpT
UHJvbWlzZUNhbGxiYWNrKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhbGdvcml0aG0pOworICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZXNvbHZlcik7CisgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0pTUHJvbWlzZUNhbGxiYWNrOjpKU1Byb21pc2VDYWxsYmFjayhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQWxnb3JpdGhtIGFsZ29y
aXRobSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX2FsZ29yaXRobShhbGdvcml0aG0pCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlQ2FsbGJh
Y2s6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlUmVzb2x2ZXIqIHJl
c29sdmVyKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNl
Q2FsbGJhY2siKTsKKyAgICBtX3Jlc29sdmVyLnNldChleGVjLT52bSgpLCB0aGlzLCByZXNvbHZl
cik7Cit9CisKK3ZvaWQgSlNQcm9taXNlQ2FsbGJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1Byb21pc2VDYWxsYmFjayogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VDYWxsYmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBDT01QSUxFX0FTU0VS
VChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworCisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3Jlc29sdmVyKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Byb21pc2VDYWxsYmFjazo6Y2FsbFByb21pc2VDYWxsYmFjayhFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHByb21pc2VDYWxsYmFjayA9IGpzQ2Fz
dDxKU1Byb21pc2VDYWxsYmFjayo+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1Byb21pc2VSZXNv
bHZlciogcmVzb2x2ZXIgPSBwcm9taXNlQ2FsbGJhY2stPm1fcmVzb2x2ZXIuZ2V0KCk7CisKKyAg
ICAvLyAxLiBMZXQgdmFsdWUgYmUgdGhlIGZpcnN0IGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkLCBh
bmQgdW5kZWZpbmVkIG90aGVyd2lzZS4KKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisKKyAgICAvLyAyLiBSdW4gcmVzb2x2ZXIncyBhbGdvcml0aG0gd2l0aCB2YWx1ZSBh
bmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgc2V0LgorICAgIHN3aXRjaCAocHJvbWlzZUNhbGxiYWNr
LT5tX2FsZ29yaXRobSkgeworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZpbGw6Cisg
ICAgICAgIHJlc29sdmVyLT5mdWxmaWxsKGV4ZWMsIHZhbHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6
UmVzb2x2ZVN5bmNocm9ub3VzbHkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSlNQcm9t
aXNlQ2FsbGJhY2s6OlJlc29sdmU6CisgICAgICAgIHJlc29sdmVyLT5yZXNvbHZlKGV4ZWMsIHZh
bHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6UmVzb2x2ZVN5bmNocm9ub3VzbHkpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdDoKKyAgICAgICAgcmVz
b2x2ZXItPnJlamVjdChleGVjLCB2YWx1ZSwgSlNQcm9taXNlUmVzb2x2ZXI6OlJlc29sdmVTeW5j
aHJvbm91c2x5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlQ2FsbGJhY2s6
OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUHJvbWlzZUNhbGxiYWNrOworICAgIHJldHVybiBDYWxs
VHlwZUhvc3Q7Cit9CisKKworCisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2s6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2spIH07CisKK0pTUHJvbWlzZVdy
YXBwZXJDYWxsYmFjayogSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyLCBKU1ZhbHVlIGNhbGxiYWNrKQoreworICAg
IEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjayogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2s+KCpleGVjLT5oZWFwKCkpKSBKU1By
b21pc2VXcmFwcGVyQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCByZXNvbHZlciwgY2FsbGJhY2spOworICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VXcmFwcGVyQ2FsbGJh
Y2s6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpKU1Byb21pc2VX
cmFwcGVyQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2ZXIsIEpTVmFsdWUgY2Fs
bGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2VX
cmFwcGVyQ2FsbGJhY2siKTsKKyAgICBtX3Jlc29sdmVyLnNldChleGVjLT52bSgpLCB0aGlzLCBy
ZXNvbHZlcik7CisgICAgbV9jYWxsYmFjay5zZXQoZXhlYy0+dm0oKSwgdGhpcywgY2FsbGJhY2sp
OworfQorCit2b2lkIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZVdyYXBwZXJD
YWxsYmFjayogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb21pc2VXcmFwcGVyQ2FsbGJhY2sqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NF
UlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlcik7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2spOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Y2FsbFByb21pc2VXcmFw
cGVyQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZVdyYXBwZXJDYWxs
YmFjayogcHJvbWlzZVdyYXBwZXJDYWxsYmFjayA9IGpzQ2FzdDxKU1Byb21pc2VXcmFwcGVyQ2Fs
bGJhY2sqPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2
ZXIgPSBwcm9taXNlV3JhcHBlckNhbGxiYWNrLT5tX3Jlc29sdmVyLmdldCgpOworICAgIEpTVmFs
dWUgY2FsbGJhY2sgPSBwcm9taXNlV3JhcHBlckNhbGxiYWNrLT5tX2NhbGxiYWNrLmdldCgpOwor
CisgICAgLy8gMS4gTGV0IGFyZ3VtZW50IGJlIHRoZSBmaXJzdCBhcmd1bWVudCB0aGF0IGlzIHBh
c3NlZCwgYW5kIHVuZGVmaW5lZCBvdGhlcndpc2UuCisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4
ZWMtPmFyZ3VtZW50KDApOworCisgICAgLy8gMi4gU2V0IGNhbGxiYWNrJ3MgY2FsbGJhY2sgdGhp
cyB2YWx1ZSB0byByZXNvbHZlcidzIGFzc29jaWF0ZWQgcHJvbWlzZS4KKyAgICAvLyAzLiBMZXQg
dmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBpbnZva2luZyBjYWxsYmFjayB3aXRoIGFyZ3VtZW50IGFz
IGFyZ3VtZW50LgorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAgIEFTU0VSVChjYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgY2FsbGJh
Y2tBcmd1bWVudHM7CisgICAgY2FsbGJhY2tBcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHJlc29sdmVyLT5wcm9taXNlKCksIGNhbGxiYWNrQXJndW1lbnRzKTsKKworICAgIC8v
IDQuIElmIGludm9raW5nIGNhbGxiYWNrIHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQgYW5k
IHJ1biByZXNvbHZlcidzIHJlamVjdAorICAgIC8vICAgIHdpdGggdGhlIHRocm93biBleGNlcHRp
b24gYXMgYXJndW1lbnQgYW5kIHRoZSBzeW5jaHJvbm91cyBmbGFnIHNldC4KKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5l
eGNlcHRpb24oKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKworICAgICAgICBy
ZXNvbHZlci0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbiwgSlNQcm9taXNlUmVzb2x2ZXI6OlJlc29s
dmVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBPdGhlcndpc2UsIHJ1biByZXNvbHZlcidzIHJl
c29sdmUgd2l0aCB2YWx1ZSBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgc2V0LgorICAgIHJlc29s
dmVyLT5yZXNvbHZlKGV4ZWMsIHZhbHVlLCBKU1Byb21pc2VSZXNvbHZlcjo6UmVzb2x2ZVN5bmNo
cm9ub3VzbHkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworQ2FsbFR5cGUgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNrOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbFByb21pc2VXcmFwcGVyQ2FsbGJhY2s7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNhbGxiYWNr
X2gKKyNkZWZpbmUgSlNQcm9taXNlQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXI7CisK
K2NsYXNzIEpTUHJvbWlzZUNhbGxiYWNrIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBBbGdv
cml0aG0geworICAgICAgICBGdWxmaWxsLAorICAgICAgICBSZXNvbHZlLAorICAgICAgICBSZWpl
Y3QsCisgICAgfTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VDYWxsYmFjayogY3JlYXRlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUmVzb2x2ZXIqLCBB
bGdvcml0aG0pOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6
CisgICAgSlNQcm9taXNlQ2FsbGJhY2soSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBbGdv
cml0aG0pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNQcm9taXNlUmVz
b2x2ZXIqKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCisgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2VDYWxsYmFjayhFeGVj
U3RhdGUqKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4gbV9yZXNvbHZlcjsK
KyAgICBBbGdvcml0aG0gbV9hbGdvcml0aG07Cit9OworCitjbGFzcyBKU1Byb21pc2VXcmFwcGVy
Q2FsbGJhY2sgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9taXNlV3JhcHBlckNh
bGxiYWNrKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBK
U1Byb21pc2VSZXNvbHZlciosIEpTVmFsdWUgY2FsbGJhY2spOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlV3JhcHBlckNhbGxiYWNr
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqLCBKU1Byb21pc2VSZXNvbHZlciosIEpTVmFsdWUgY2FsbGJhY2spOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJvbWlzZVdyYXBwZXJDYWxsYmFjayhFeGVjU3RhdGUqKTsK
KyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKwor
ICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlcj4gbV9yZXNvbHZlcjsKKyAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gbV9jYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gSlNQcm9taXNlQ2FsbGJhY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJK
U1Byb21pc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQVNTRVJUX0hBU19U
UklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlQ29uc3RydWN0b3IpOworCisvLyBzdGF0aWMgUHJv
bWlzZSBmdWxmaWxsKGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsKEV4ZWNTdGF0ZSopOworLy8gc3Rh
dGljIFByb21pc2UgcmVzb2x2ZShhbnkgdmFsdWUpOyAvLyBzYW1lIGFzIGFueSh2YWx1ZSkKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVu
Y1Jlc29sdmUoRXhlY1N0YXRlKik7CisvLyBzdGF0aWMgUHJvbWlzZSByZWplY3QoYW55IHZhbHVl
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JlamVjdChFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNQ
cm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Byb21pc2VDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBK
U1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHByb21pc2VDb25zdHJ1Y3RvclRhYmxl
CisgIGZ1bGZpbGwgICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNGdWxmaWxsICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVzb2x2ZSAgICAgICAgIEpTUHJvbWlzZUNv
bnN0cnVjdG9yRnVuY1Jlc29sdmUgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBy
ZWplY3QgICAgICAgICAgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVqZWN0ICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitKU1Byb21pc2VDb25zdHJ1Y3Rvciog
SlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VQcm90b3R5
cGUqIHByb21pc2VQcm90b3R5cGUpCit7CisgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb21pc2VQcm90
b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6SlNQ
cm9taXNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKSAKK3sKK30KKwordm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgIlByb21pc2UiKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjLT5h
cmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisKKyAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CisKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1
bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpOworICAgIAorICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCisg
ICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhl
Yy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsKKworICAgIC8vIDIuIExldCByZXNvbHZlciBiZSBwcm9t
aXNlJ3MgYXNzb2NpYXRlZCByZXNvbHZlci4KKyAgICBKU1Byb21pc2VSZXNvbHZlciogcmVzb2x2
ZXIgPSBwcm9taXNlLT5yZXNvbHZlcigpOworCisgICAgLy8gMy4gU2V0IGluaXQncyBjYWxsYmFj
ayB0aGlzIHZhbHVlIHRvIHByb21pc2UuCisgICAgLy8gNC4gSW52b2tlIGluaXQgd2l0aCByZXNv
bHZlciBwYXNzZWQgYXMgcGFyYW1ldGVyLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGluaXRB
cmd1bWVudHM7CisgICAgaW5pdEFyZ3VtZW50cy5hcHBlbmQocmVzb2x2ZXIpOworICAgIGNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgcHJvbWlzZSwgaW5pdEFyZ3VtZW50
cyk7CisKKyAgICAvLyA1LiBJZiBpbml0IHRocmV3IGFuIGV4Y2VwdGlvbiwgY2F0Y2ggaXQsIGFu
ZCB0aGVuLCBpZiByZXNvbHZlcidzIHJlc29sdmVkIGZsYWcKKyAgICAvLyAgICBpcyB1bnNldCwg
cnVuIHJlc29sdmVyJ3MgcmVqZWN0IHdpdGggdGhlIHRocm93biBleGNlcHRpb24gYXMgYXJndW1l
bnQuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTVmFsdWUgZXhj
ZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9u
KCk7CisKKyAgICAgICAgcmVzb2x2ZXItPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhjZXB0
aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQor
CitDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RQcm9taXNlOworICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJikKK3sKKyAgICByZXR1cm4gQ2FsbFR5cGVOb25lOworfQor
Citib29sIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRl
cm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnByb21pc2VDb25zdHJ1Y3RvclRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0
cnVjdG9yRnVuY0Z1bGZpbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJl
c29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZXIo
KS0+ZnVsZmlsbChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
UHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jlc29sdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50
IikpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgp
LT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6
Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgcHJvbWlz
ZS0+cmVzb2x2ZXIoKS0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1JlamVjdChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBv
bmUgYXJndW1lbnQiKSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0g
SlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICBwcm9taXNlLT5yZXNvbHZlcigpLT5yZWplY3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTUHJvbWlzZUNvbnN0cnVjdG9yX2gK
KyNkZWZpbmUgSlNQcm9taXNlQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwor
CitjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2VDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxG
dW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU1Byb21pc2VDb25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5o
IgorI2luY2x1ZGUgIkpTUHJvbWlzZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNQcm9taXNlUmVz
b2x2ZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1Byb21pc2VQcm90b3R5cGUpOwor
CisvLyBQcm9taXNlIHRoZW4oW1RyZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55
Q2FsbGJhY2sgZnVsZmlsbENhbGxiYWNrLCBbVHJlYXRVbmRlZmluZWRBcz1NaXNzaW5nXSBvcHRp
b25hbCBBbnlDYWxsYmFjayByZWplY3RDYWxsYmFjayk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jVGhlbihFeGVjU3RhdGUqKTsKKy8v
IFByb21pc2UgY2F0Y2goW1RyZWF0VW5kZWZpbmVkQXM9TWlzc2luZ10gb3B0aW9uYWwgQW55Q2Fs
bGJhY2sgcmVqZWN0Q2FsbGJhY2spOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNQcm9taXNlUHJvdG90eXBlRnVuY0NhdGNoKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNs
dWRlICJKU1Byb21pc2VQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSlNQcm9taXNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUHJvdG90
eXBlIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpwcm9taXNlUHJv
dG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9taXNlUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHByb21pc2VQ
cm90b3R5cGVUYWJsZQorICB0aGVuICAgICAgICAgSlNQcm9taXNlUHJvdG90eXBlRnVuY1RoZW4g
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBjYXRjaCAgICAgICAgSlNQcm9taXNl
UHJvdG90eXBlRnVuY0NhdGNoICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAor
Ki8KKworSlNQcm9taXNlUHJvdG90eXBlKiBKU1Byb21pc2VQcm90b3R5cGU6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgSlNQcm9taXNlUHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb21pc2VQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBKU1Byb21pc2VQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNQcm9taXNlUHJvdG90eXBlOjpKU1Byb21pc2VQcm90
b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9u
RmluYWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTUHJvbWlz
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworfQorCitib29sIEpTUHJv
bWlzZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6cHJvbWlzZVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNQcm9taXNlUHJv
dG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworc3RhdGljIEludGVy
bmFsRnVuY3Rpb24qIHdyYXBDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY2FsbGJhY2ssIEpTUHJvbWlzZVJlc29sdmVyKiByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgaWYg
KCFjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gSlNQcm9taXNlV3JhcHBl
ckNhbGxiYWNrOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21p
c2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSwgcmVzb2x2ZXIsIGNhbGxiYWNrKTsKKyAgICBy
ZXR1cm4gSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKCksIHJlc29sdmVyLCBhbGdvcml0aG0p
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVByb3RvdHlwZUZ1
bmNUaGVuKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Byb21pc2UqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTUHJvbWlzZSo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRo
aXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJSZWNlaXZlciBvZiB0aGVuIG11c3QgYmUgYSBQcm9taXNlIikpOworCisgICAg
SlNWYWx1ZSBmdWxmaWxsQ2FsbGJhY2sgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWZ1
bGZpbGxDYWxsYmFjay5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bGZpbGxDYWxsYmFj
aywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCIpKTsK
KyAgICB9CisgICAgCisgICAgSlNWYWx1ZSByZWplY3RDYWxsYmFjayA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIGlmICghcmVqZWN0Q2FsbGJhY2suaXNVbmRlZmluZWQoKSkgeworICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShyZWplY3RDYWxsYmFjaywgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBzZWNv
bmQgYXJndW1lbnQiKSk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyAxLiBMZXQgcHJvbWlz
ZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6
Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisKKyAgICAvLyAy
LiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0ZWQgcmVzb2x2ZXIuCisgICAgSlNQ
cm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZS0+cmVzb2x2ZXIoKTsKKworICAgIC8v
IDMuIExldCBmdWxmaWxsV3JhcHBlciBiZSBhIHByb21pc2Ugd3JhcHBlciBjYWxsYmFjayBmb3Ig
cmVzb2x2ZXIgYW5kIGZ1bGZpbGxDYWxsYmFjayBpZiBmdWxmaWxsQ2FsbGJhY2sgaXMKKyAgICAv
LyAgICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQg
aXRzIGZ1bGZpbGwgYWxnb3JpdGhtIG90aGVyd2lzZS4KKyAgICBJbnRlcm5hbEZ1bmN0aW9uKiBm
dWxmaWxsV3JhcHBlciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3QsIGZ1bGZpbGxD
YWxsYmFjaywgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpGdWxmaWxsKTsKKworICAgIC8v
IDQuIExldCByZWplY3RXcmFwcGVyIGJlIGEgcHJvbWlzZSB3cmFwcGVyIGNhbGxiYWNrIGZvciBy
ZXNvbHZlciBhbmQgcmVqZWN0Q2FsbGJhY2sgaWYgcmVqZWN0Q2FsbGJhY2sgaXMKKyAgICAvLyAg
ICBub3Qgb21pdHRlZCBhbmQgYSBwcm9taXNlIGNhbGxiYWNrIGZvciByZXNvbHZlciBhbmQgaXRz
IHJlamVjdCBhbGdvcml0aG0gb3RoZXJ3aXNlLgorICAgIEludGVybmFsRnVuY3Rpb24qIHJlamVj
dFdyYXBwZXIgPSB3cmFwQ2FsbGJhY2soZXhlYywgZ2xvYmFsT2JqZWN0LCByZWplY3RDYWxsYmFj
aywgcmVzb2x2ZXIsIEpTUHJvbWlzZUNhbGxiYWNrOjpSZWplY3QpOworCisgICAgLy8gNS4gQXBw
ZW5kIGZ1bGZpbGxXcmFwcGVyIGFuZCByZWplY3RXcmFwcGVyIHRvIHRoZSBjb250ZXh0IG9iamVj
dC4KKyAgICB0aGlzT2JqZWN0LT5hcHBlbmRDYWxsYmFja3MoZXhlYywgZnVsZmlsbFdyYXBwZXIs
IHJlamVjdFdyYXBwZXIpOworCisgICAgLy8gNi4gUmV0dXJuIHByb21pc2UuCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Byb21pc2VQcm90b3R5cGVGdW5jQ2F0Y2goRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTUHJvbWlzZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlKj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIGNhdGNoIG11
c3QgYmUgYSBQcm9taXNlIikpOworICAgIAorICAgIEpTVmFsdWUgcmVqZWN0Q2FsbGJhY2sgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXJlamVjdENhbGxiYWNrLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEocmVqZWN0Q2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmlu
ZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQiKSk7CisgICAgfQorCisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyAx
LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgorICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7
CisKKyAgICAvLyAyLiBMZXQgcmVzb2x2ZXIgYmUgcHJvbWlzZSdzIGFzc29jaWF0ZWQgcmVzb2x2
ZXIuCisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHJlc29sdmVyID0gcHJvbWlzZS0+cmVzb2x2ZXIo
KTsKKworICAgIC8vIDMuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBuZXcgcHJvbWlzZSBjYWxs
YmFjayBmb3IgcmVzb2x2ZXIgYW5kIGl0cyBmdWxmaWxsIGFsZ29yaXRobS4KKyAgICBJbnRlcm5h
bEZ1bmN0aW9uKiBmdWxmaWxsV3JhcHBlciA9IEpTUHJvbWlzZUNhbGxiYWNrOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgp
LCByZXNvbHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OkZ1bGZpbGwpOworCisgICAgLy8gNC4gTGV0
IHJlamVjdFdyYXBwZXIgYmUgYSBwcm9taXNlIHdyYXBwZXIgY2FsbGJhY2sgZm9yIHJlc29sdmVy
IGFuZCByZWplY3RDYWxsYmFjayBpZiByZWplY3RDYWxsYmFjayBpcworICAgIC8vICAgIG5vdCBv
bWl0dGVkIGFuZCBhIHByb21pc2UgY2FsbGJhY2sgZm9yIHJlc29sdmVyIGFuZCBpdHMgcmVqZWN0
IGFsZ29yaXRobSBvdGhlcndpc2UuCisgICAgSW50ZXJuYWxGdW5jdGlvbiogcmVqZWN0V3JhcHBl
ciA9IHdyYXBDYWxsYmFjayhleGVjLCBnbG9iYWxPYmplY3QsIHJlamVjdENhbGxiYWNrLCByZXNv
bHZlciwgSlNQcm9taXNlQ2FsbGJhY2s6OlJlamVjdCk7CisKKyAgICAvLyA1LiBBcHBlbmQgZnVs
ZmlsbFdyYXBwZXIgYW5kIHJlamVjdFdyYXBwZXIgdG8gdGhlIGNvbnRleHQgb2JqZWN0LgorICAg
IHRoaXNPYmplY3QtPmFwcGVuZENhbGxiYWNrcyhleGVjLCBmdWxmaWxsV3JhcHBlciwgcmVqZWN0
V3JhcHBlcik7CisKKyAgICAvLyA2LiBSZXR1cm4gcHJvbWlzZS4KKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHByb21pc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNQcm9taXNlUHJvdG90eXBlX2gKKyNkZWZpbmUgSlNQcm9taXNlUHJvdG90eXBlX2gK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1By
b21pc2VQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSlNQcm9taXNlUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgSlNQcm9taXNlUHJv
dG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZVBy
b3RvdHlwZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
UHJvbWlzZVJlc29sdmVyLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZUNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVy
OjpzX2luZm8gPSB7ICJQcm9taXNlUmVzb2x2ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTUHJvbWlzZVJlc29sdmVyKSB9OworCitKU1Byb21pc2VSZXNvbHZl
ciogSlNQcm9taXNlUmVzb2x2ZXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Byb21pc2UqIHByb21pc2UpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvbWlzZVJlc29sdmVyPih2bS5oZWFwKSkg
SlNQcm9taXNlUmVzb2x2ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgcHJvbWlzZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBK
U1Byb21pc2VSZXNvbHZlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VSZXNvbHZlcjo6SlNQ
cm9taXNlUmVzb2x2ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9u
RmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1faXNSZXNvbHZlZChmYWxzZSkKK3sK
K30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1By
b21pc2UqIHByb21pc2UpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBtX3Byb21pc2Uuc2V0KHZtLCB0aGlzLCBwcm9t
aXNlKTsKK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJvbWlzZVJlc29sdmVyKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2UpOworfQorCitKU1Byb21pc2UqIEpTUHJvbWlzZVJl
c29sdmVyOjpwcm9taXNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9taXNlLmdldCgpOwor
fQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpmdWxmaWxsSWZOb3RSZXNvbHZlZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2ZWQpIHsKKyAg
ICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgZnVsZmlsbChleGVjLCB2YWx1ZSk7
CisgICAgfQorfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZXNvbHZlSWZOb3RSZXNvbHZl
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFtX2lzUmVzb2x2
ZWQpIHsKKyAgICAgICAgbV9pc1Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzb2x2ZShleGVj
LCB2YWx1ZSk7CisgICAgfQorfQorCit2b2lkIEpTUHJvbWlzZVJlc29sdmVyOjpyZWplY3RJZk5v
dFJlc29sdmVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIW1f
aXNSZXNvbHZlZCkgeworICAgICAgICBtX2lzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICByZWpl
Y3QoZXhlYywgdmFsdWUpOworICAgIH0KK30KKwordm9pZCBKU1Byb21pc2VSZXNvbHZlcjo6ZnVs
ZmlsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlc29sdmVyTW9kZSBtb2RlKQor
eworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0IG9iamVjdCdzIGFzc29jaWF0
ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0YXRlIHRvIGZ1bGZpbGxlZC4K
KyAgICBtX3Byb21pc2UtPnNldFN0YXRlKEpTUHJvbWlzZTo6RnVsZmlsbGVkKTsKKworICAgIC8v
IDMuIFNldCBwcm9taXNlJ3MgcmVzdWx0IHRvIHZhbHVlLgorICAgIG1fcHJvbWlzZS0+c2V0UmVz
dWx0KGV4ZWMtPnZtKCksIHZhbHVlKTsKKworICAgIC8vIDQuIElmIHRoZSBzeW5jaHJvbm91cyBm
bGFnIGlzIHNldCwgcHJvY2VzcyBwcm9taXNlJ3MgZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1
ZS4KKyAgICBpZiAobW9kZSA9PSBSZXNvbHZlU3luY2hyb25vdXNseSkgeworICAgICAgICBtX3By
b21pc2UtPnByb2Nlc3NGdWxmaWxsQ2FsbGJhY2tzV2l0aFZhbHVlKGV4ZWMsIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyA1LiBPdGhlcndpc2UsIHRoZSBzeW5j
aHJvbm91cyBmbGFnIGlzIHVuc2V0LCBxdWV1ZSBhIHRhc2sgdG8gcHJvY2VzcyBwcm9taXNlJ3Mg
ZnVsZmlsbCBjYWxsYmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBtX3Byb21pc2UtPnF1ZXVlVGFza1Rv
UHJvY2Vzc0Z1bGZpbGxDYWxsYmFja3MoZXhlYyk7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVzb2x2
ZXI6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBSZXNvbHZlck1vZGUg
bW9kZSkKK3sKKyAgICAvLyAxLiBMZXQgdGhlbiBiZSBudWxsLgorICAgIEpTVmFsdWUgdGhlbiA9
IGpzTnVsbCgpOworICAgIAorICAgIC8vIDIuIElmIHZhbHVlIGlzIGEgSmF2YVNjcmlwdCBPYmpl
Y3QsIHNldCB0aGVuIHRvIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgSmF2YVNjcmlwdCBbW0dl
dF1dIGludGVybmFsCisgICAgLy8gICAgbWV0aG9kIG9mIHZhbHVlIHdpdGggcHJvcGVydHkgbmFt
ZSB0aGVuLgorICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRoZW4gPSB2YWx1
ZS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRoZW4pOworCisgICAgICAgIC8vIDMu
IElmIGNhbGxpbmcgdGhlIFtbR2V0XV0gaW50ZXJuYWwgbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlv
biwgY2F0Y2ggaXQgYW5kIHJ1biByZWplY3Qgd2l0aCB0aGUgdGhyb3duCisgICAgICAgIC8vICAg
IGV4Y2VwdGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0LCBhbmQgdGhlbiB0ZXJt
aW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewor
ICAgICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAg
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgICAgIHJlamVjdChleGVj
LCBleGNlcHRpb24sIG1vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gNC4gSWYgSmF2YVNjcmlwdCBJc0NhbGxhYmxlKHRoZW4pIGlzIHRydWUsIHJ1biB0
aGVzZSBzdWJzdGVwcyBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHM6CisgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEodGhlbiwgY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVO
b25lKSB7CisgICAgICAgICAgICAvLyA0LjEuIExldCBmdWxmaWxsQ2FsbGJhY2sgYmUgYSBwcm9t
aXNlIGNhbGxiYWNrIGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZXNvbHZlIGFsZ29y
aXRobS4KKyAgICAgICAgICAgIEpTUHJvbWlzZUNhbGxiYWNrKiBmdWxmaWxsQ2FsbGJhY2sgPSBK
U1Byb21pc2VDYWxsYmFjazo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBnbG9iYWxPYmpl
Y3QoKS0+cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlKCksIHRoaXMsIEpTUHJvbWlzZUNhbGxiYWNr
OjpSZXNvbHZlKTsKKworICAgICAgICAgICAgLy8gNC4yLiBMZXQgcmVqZWN0Q2FsbGJhY2sgYmUg
YSBwcm9taXNlIGNhbGxiYWNrIGZvciB0aGUgY29udGV4dCBvYmplY3QgYW5kIGl0cyByZWplY3Qg
YWxnb3JpdGhtLgorICAgICAgICAgICAgSlNQcm9taXNlQ2FsbGJhY2sqIHJlamVjdENhbGxiYWNr
ID0gSlNQcm9taXNlQ2FsbGJhY2s6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgZ2xvYmFs
T2JqZWN0KCktPnByb21pc2VDYWxsYmFja1N0cnVjdHVyZSgpLCB0aGlzLCBKU1Byb21pc2VDYWxs
YmFjazo6UmVqZWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gNC4zLiBDYWxsIHRo
ZSBKYXZhU2NyaXB0IFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiB0aGVuIHdpdGggdGhpcyB2
YWx1ZSB2YWx1ZSBhbmQgZnVsZmlsbENhbGxiYWNrCisgICAgICAgICAgICAvLyAgICAgIGFuZCBy
ZWplY3RDYWxsYmFjayBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciB0aGVuQXJndW1lbnRzOworICAgICAgICAgICAgdGhlbkFyZ3VtZW50cy5hcHBlbmQoZnVs
ZmlsbENhbGxiYWNrKTsKKyAgICAgICAgICAgIHRoZW5Bcmd1bWVudHMuYXBwZW5kKHJlamVjdENh
bGxiYWNrKTsKKyAgICAgICAgICAgIGNhbGwoZXhlYywgdGhlbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB2YWx1ZSwgdGhlbkFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgIC8vIDQuNCBJZiBjYWxsaW5n
IHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QgdGhyZXcgYW4gZXhjZXB0aW9uLCBjYXRjaCBp
dCBhbmQgcnVuIGNvbnRleHQgb2JqZWN0J3MKKyAgICAgICAgICAgIC8vICAgICByZWplY3Qgd2l0
aCB0aGUgdGhyb3duIGV4Y2VwdGlvbiBhbmQgdGhlIHN5bmNocm9ub3VzIGZsYWcgaWYgc2V0Lgor
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAg
SlNWYWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBl
eGVjLT5jbGVhckV4Y2VwdGlvbigpOworCisgICAgICAgICAgICAgICAgcmVqZWN0KGV4ZWMsIGV4
Y2VwdGlvbiwgbW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gNS4gUnVuIGNv
bnRleHQgb2JqZWN0J3MgZnVsZmlsbCB3aXRoIHZhbHVlIGFuZCB0aGUgc3luY2hyb25vdXMgZmxh
ZyBpZiBzZXQuCisgICAgZnVsZmlsbChleGVjLCB2YWx1ZSwgbW9kZSk7Cit9CisKK3ZvaWQgSlNQ
cm9taXNlUmVzb2x2ZXI6OnJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJl
c29sdmVyTW9kZSBtb2RlKQoreworICAgIC8vIDEuIExldCBwcm9taXNlIGJlIHRoZSBjb250ZXh0
IG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvbWlzZS4KKyAgICAvLyAyLiBTZXQgcHJvbWlzZSdzIHN0
YXRlIHRvIHJlamVjdGVkLgorICAgIG1fcHJvbWlzZS0+c2V0U3RhdGUoSlNQcm9taXNlOjpSZWpl
Y3RlZCk7CisKKyAgICAvLyAzLiBTZXQgcHJvbWlzZSdzIHJlc3VsdCB0byB2YWx1ZS4KKyAgICBt
X3Byb21pc2UtPnNldFJlc3VsdChleGVjLT52bSgpLCB2YWx1ZSk7CisKKyAgICAvLyA0LiBJZiB0
aGUgc3luY2hyb25vdXMgZmxhZyBpcyBzZXQsIHByb2Nlc3MgcHJvbWlzZSdzIHJlamVjdCBjYWxs
YmFja3Mgd2l0aCB2YWx1ZS4KKyAgICBpZiAobW9kZSA9PSBSZXNvbHZlU3luY2hyb25vdXNseSkg
eworICAgICAgICBtX3Byb21pc2UtPnByb2Nlc3NSZWplY3RDYWxsYmFja3NXaXRoVmFsdWUoZXhl
YywgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIDUuIE90aGVy
d2lzZSwgdGhlIHN5bmNocm9ub3VzIGZsYWcgaXMgdW5zZXQsIHF1ZXVlIGEgdGFzayB0byBwcm9j
ZXNzIHByb21pc2UncyByZWplY3QgY2FsbGJhY2tzIHdpdGggdmFsdWUuCisgICAgbV9wcm9taXNl
LT5xdWV1ZVRhc2tUb1Byb2Nlc3NSZWplY3RDYWxsYmFja3MoZXhlYyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VSZXNvbHZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlcl9oCisjZGVmaW5lIEpT
UHJvbWlzZVJlc29sdmVyX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU1Byb21pc2U7CisKK2NsYXNzIEpTUHJvbWlzZVJlc29sdmVyIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworCisgICAgc3RhdGljIEpTUHJvbWlzZVJlc29sdmVyKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBKU1Byb21pc2UqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgSlNQcm9taXNlKiBwcm9taXNlKCkgY29uc3Q7CisKKyAgICB2b2lkIGZ1bGZpbGxJ
Zk5vdFJlc29sdmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHZvaWQgcmVzb2x2ZUlmTm90
UmVzb2x2ZWQoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgdm9pZCByZWplY3RJZk5vdFJlc29s
dmVkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworCisgICAgZW51bSBSZXNvbHZlck1vZGUgeworICAg
ICAgICBSZXNvbHZlU3luY2hyb25vdXNseSwKKyAgICAgICAgUmVzb2x2ZUFzeW5jaHJvbm91c2x5
LAorICAgIH07CisKKyAgICB2b2lkIGZ1bGZpbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgUmVzb2x2
ZXJNb2RlID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsKKyAgICB2b2lkIHJlc29sdmUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUmVzb2x2ZXJNb2RlID0gUmVzb2x2ZUFzeW5jaHJvbm91c2x5KTsKKyAg
ICB2b2lkIHJlamVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBSZXNvbHZlck1vZGUgPSBSZXNvbHZl
QXN5bmNocm9ub3VzbHkpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTUHJvbWlzZSopOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisK
K3ByaXZhdGU6CisgICAgSlNQcm9taXNlUmVzb2x2ZXIoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IFdyaXRlQmFycmllcjxKU1Byb21pc2U+IG1fcHJvbWlzZTsKKyAgICBib29sIG1faXNSZXNvbHZl
ZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNQcm9taXNlUmVzb2x2
ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2
ZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaCIK
KworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
TG9va3VwLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcikgfTsKKworSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3RvciogSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQor
eworICAgIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9taXNlUHJv
dG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNQcm9t
aXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU1Byb21pc2VSZXNvbHZl
ckNvbnN0cnVjdG9yOjpKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5j
dGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgCit7Cit9CisKK3ZvaWQgSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Byb21p
c2VSZXNvbHZlclByb3RvdHlwZSogcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksICJQcm9taXNlUmVzb2x2ZXIiKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKK30KKworQ29uc3RydWN0VHlwZSBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKQorewor
ICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKK30KKworQ2FsbFR5cGUgSlNQcm9taXNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKQoreworICAg
IHJldHVybiBDYWxsVHlwZU5vbmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJl
c29sdmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvcl9oCisKKyNp
bmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKKworY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBKU1Byb21pc2VSZXNvbHZlckNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSosIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CisK
K3ByaXZhdGU6CisgICAgSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNQcm9taXNlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZSk7CisKKy8vIHZvaWQgZnVsZmlsbChvcHRpb25hbCBhbnkg
dmFsdWUpOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlUmVz
b2x2ZXJQcm90b3R5cGVGdW5jRnVsZmlsbChFeGVjU3RhdGUqKTsKKy8vIHZvaWQgcmVzb2x2ZShv
cHRpb25hbCBhbnkgdmFsdWUpOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZShFeGVjU3RhdGUqKTsKKy8vIHZv
aWQgcmVqZWN0KG9wdGlvbmFsIGFueSB2YWx1ZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZWplY3QoRXhlY1N0YXRl
Kik7CisKK30KKworI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUiLCAmQmFzZTo6c19p
bmZvLCAwLCBFeGVjU3RhdGU6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2Ug
Zm9yIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlVGFibGUKKyAgZnVsZmlsbCAgICAgICAgIEpTUHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlRnVuY0Z1bGZpbGwgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNv
bHZlICAgICAgICAgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZSAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlamVjdCAgICAgICAgICBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZUZ1bmNSZWplY3QgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKiBKU1Byb21pc2VSZXNvbHZl
clByb3RvdHlwZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGU+KCpleGVjLT5oZWFwKCkpKSBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZShleGVjLCBzdHJ1
Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgc3RydWN0dXJlKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOjpKU1Byb21p
c2VSZXNvbHZlclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52
bSgpKTsKK30KKworYm9vbCBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNG
dW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cHJvbWlzZVJlc29sdmVyUHJv
dG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSo+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVGdW5jRnVsZmlsbChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNQcm9taXNlUmVzb2x2ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTUHJvbWlzZVJlc29sdmVyKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09i
amVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlY2VpdmVyIG9mIGZ1bGZpbGwgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsK
KworICAgIHRoaXNPYmplY3QtPmZ1bGZpbGxJZk5vdFJlc29sdmVkKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
RnVuY1Jlc29sdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2VSZXNvbHZlcio+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBvZiByZXNvbHZlIG11c3Qg
YmUgYSBQcm9taXNlUmVzb2x2ZXIiKSk7CisKKyAgICB0aGlzT2JqZWN0LT5yZXNvbHZlSWZOb3RS
ZXNvbHZlZChleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Byb21pc2VSZXNvbHZlclByb3RvdHlwZUZ1bmNSZWplY3QoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTUHJvbWlzZVJlc29sdmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Byb21p
c2VSZXNvbHZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJS
ZWNlaXZlciBvZiByZWplY3QgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlciIpKTsKKworICAgIHRo
aXNPYmplY3QtPnJlamVjdElmTm90UmVzb2x2ZWQoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZV9oCisjZGVmaW5lIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90
eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRp
YyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCitwcml2
YXRlOgorICAgIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSw5IEBAIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwVGFibGU7CiBleHRlcm4gY29u
c3QgSGFzaFRhYmxlIHJlZ0V4cENvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRh
YmxlIHJlZ0V4cFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBzdHJpbmdD
b25zdHJ1Y3RvclRhYmxlOworZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUHJvdG90eXBl
VGFibGU7CitleHRlcm4gY29uc3QgSGFzaFRhYmxlIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOwor
ZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsKIAog
Ly8gTm90ZTogUGxhdGZvcm0uaCB3aWxsIGVuZm9yY2UgdGhhdCBFTkFCTEUoQVNTRU1CTEVSKSBp
cyB0cnVlIGlmIGVpdGhlcgogLy8gRU5BQkxFKEpJVCkgb3IgRU5BQkxFKFlBUlJfSklUKSBvciBi
b3RoIGFyZSBlbmFibGVkLiBUaGUgY29kZSBiZWxvdwpAQCAtMTYxLDYgKzE2NCw5IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHJlZ0V4cENvbnN0cnVj
dG9yVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkp
CiAgICAgLCByZWdFeHBQcm90b3R5cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdF
eHBQcm90b3R5cGVUYWJsZSkpCiAgICAgLCBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8
SGFzaFRhYmxlPihKU0M6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKQorICAgICwgcHJvbWlzZVBy
b3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnByb21pc2VQcm90b3R5cGVUYWJs
ZSkpCisgICAgLCBwcm9taXNlQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
Ojpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSkpCisgICAgLCBwcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVU
YWJsZSkpCiAgICAgLCBpZGVudGlmaWVyVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJl
YWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmllclRhYmxl
KCkpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKSkKICAg
ICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCkBAIC0zMTAsNiArMzE2LDkg
QEAgVk06On5WTSgpCiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsK
ICAgICByZWdFeHBQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdDb25z
dHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIHByb21pc2VQcm90b3R5cGVUYWJsZS0+
ZGVsZXRlVGFibGUoKTsKKyAgICBwcm9taXNlQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUo
KTsKKyAgICBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKIAog
ICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihhcnJheUNvbnN0cnVjdG9yVGFi
bGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4oYXJyYXlQcm90b3R5
cGVUYWJsZSkpOwpAQCAtMzI4LDYgKzMzNyw5IEBAIFZNOjp+Vk0oKQogICAgIGZhc3REZWxldGUo
Y29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFz
dERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7CiAg
ICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFi
bGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJvbWlzZVByb3Rv
dHlwZVRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21p
c2VDb25zdHJ1Y3RvclRhYmxlKSk7CisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJs
ZSo+KHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKSk7CiAKICAgICBkZWxldGUgZW1wdHlM
aXN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE1NDU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzNSw2ICsyMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHJl
Z0V4cFByb3RvdHlwZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ0NvbnN0
cnVjdG9yVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvbWlzZVByb3RvdHlwZVRh
YmxlOworICAgICAgICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOwor
ICAgICAgICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOwog
ICAgICAgICAKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwog
ICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA4LTI0ICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFByb21pc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyNjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW5p
dGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcyAtIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNwcm9taXNlcy4KKyAgICAgICAgLSBEZXNwaXRlIFByb21pc2VzIGJlaW5nIGRlZmluZWQg
aW4gdGhlIERPTSwgdGhlIGltcGxlbWVudGF0aW9uIGlzIGJlaW5nIHB1dCBpbiBKU0MKKyAgICAg
ICAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIFByb21pc2VzIGV2ZW50dWFsbHkgYmVpbmcgZGVm
aW5lZCBpbiBFQ01BU2NyaXB0LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2pzL1Byb21pc2UtYWxy
ZWFkeS1mdWxmaWxsZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWFscmVh
ZHktcmVqZWN0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWFscmVhZHkt
cmVzb2x2ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdv
cmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1jaGFpbi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2UtZXhjZXB0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJv
bWlzZS1mdWxmaWxsLWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9t
aXNlLWZ1bGZpbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4t
d29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtaW5pdC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXJlamVjdC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1By
b21pc2Utc3RhdGljLWZ1bGZpbGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNl
LXN0YXRpYy1yZWplY3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1yZXNvbHZlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvanMvUHJvbWlzZS10aGVuLWluLXdv
cmtlcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1j
YWxsYmFja3MtaW4td29ya2Vycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2Ut
dGhlbi13aXRob3V0LWNhbGxiYWNrcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21p
c2UtdGhlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL1Byb21pc2UtdHlwZXMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9qcy9Qcm9taXNlLmh0bWwKKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21h
a2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0dsb2JhbE9iamVjdENhbGxiYWNrOjp+SlNHbG9iYWxPYmplY3RDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjYWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OkpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjpKU0dsb2JhbE9iamVjdFRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6SlNHbG9iYWxPYmplY3RUYXNrOjp+SlNHbG9iYWxPYmpl
Y3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0VGFzazo6cGVyZm9ybVRh
c2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTR2xvYmFsT2JqZWN0VGFzazo6Y3JlYXRlKToKKyAgICAg
ICAgQWRkIGEgbmV3IHRhc2sgdHlwZSB0byBiZSB1c2VkIHdpdGggdGhlIEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlJ3MgbmV3IFF1ZXVlVGFza1RvRXZlbnRMb29wIGNhbGxiYWNrLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICBJbXBsZW1lbnQgdGhlIEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIGNhbGxiYWNrLCBRdWV1ZVRhc2tUb0V2ZW50TG9vcC4gCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaDoKKyAgICAgICAgQWxsIHVzaW5n
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBhcyBhIHNpbXBsZSBSQUlJIG9iamVjdC4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6YWxsb3dzQWNjZXNz
RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6
OnN1cHBvcnRzUmljaFNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVu
dExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6
CisgICAgICAgIEFkZCBhIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIGFuZCBpbXBsZW1lbnQgUXVl
dWVUYXNrVG9FdmVudExvb3AuIEZvcndhcmQgdGhlIG90aGVyIGNhbGxiYWNrcworICAgICAgICB0
byBKU0dsb2JhbE9iamVjdCBzbyB0aGV5IHJldGFpbiB0aGVpciBleGlzdGluZyBiZWhhdmlvci4K
KwogMjAxMy0wOC0yNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBKYXZhU2NyaXB0IGJpbmRpbmcgZm9yIENsaXBib2FyZDo6dHlwZXMgbW9yZSBub3JtYWwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU0NTc4KQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjMz
Miw2ICsyMzMyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdFRhc2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdFRhc2suaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01J
bXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24g
MTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDYgKzEwMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01JbXBsZW1l
bnRhdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlD
dXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAg
XApAQCAtMTM1Myw2ICsxMzU0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIFwKICAgICBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdFRhc2suaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogICAg
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxNTQ1NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUz
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisgICAgYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3RUYXNrLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25D
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1
NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MTM4LDYgKzE2MTM4LDIwIEBACiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3RU
YXNrLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDY3Nyw2ICsyMDY5MSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RpY3Rpb25hcnkuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NQmluZGluZy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNE
T01XaW5kb3dCYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU0RPTVdpbmRvd0N1c3RvbS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcSlNET01XaW5kb3dTaGVsbC5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMTU0NTc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC00NDgyLDYgKzQ0ODIsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01JbXBsZW1l
bnRhdGlvbkN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTE1NzgsNiArMTE1ODEsOSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuaCI+CiAgICAgICA8Rmls
dGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdFRhc2suaCI+CisgICAg
ICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0Vycm9ySGFuZGxlci5oIj4KICAgICAg
IDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkzNSw2ICsxOTM1LDggQEAKIAkJN0FGRDRB
OEIxMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAv
KiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2
RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNT
VkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKKwkJN0MyQkREM0QxN0M3Rjk4QzAwMzhGRjE1IC8q
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcCAqLzsgfTsKKwkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9N
R2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3Zlcmxh
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUy
MkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CiAJCTdD
NTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkExN0I3
NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgKi87IH07CiAJCTdD
NTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZCMTdCNzRC
NjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCAqLzsgfTsKQEAgLTgzMzAs
NiArODMzMiw4IEBACiAJCTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMy
NzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNE
T01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAv
KiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzUyMkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NTk4LDEyICsxODYwMiwxMiBAQAogCQkJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBD
b25zdHJ1Y3RvcnMgKi8sCiAJCQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAq
LywKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAor
CQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJ
CQkJNDlCMzc2MEExNUM2QzY4NDAwNTkxMzFEIC8qIEFycmF5VmFsdWUuY3BwICovLAogCQkJCTQ5
QjM3NjBCMTVDNkM2ODQwMDU5MTMxRCAvKiBBcnJheVZhbHVlLmggKi8sCiAJCQkJOTczQUEzRjIx
NUQwODhGMDAwRTM4QTg1IC8qIEJpbmRpbmdTdGF0ZS5jcHAgKi8sCiAJCQkJOTczQUEzRjMxNUQw
ODhGMDAwRTM4QTg1IC8qIEJpbmRpbmdTdGF0ZS5oICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkw
MDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oICovLAotCQkJCTkzRjhCMzA2
MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJMzEyRDY3QjAx
NTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwICovLAogCQkJCTMxNjAyM0VGMTUzMkM0
MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQkM1M0RBNjExMTQzMTRCRDAwMEQ4
MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgKi8sCkBAIC0xODYyMiw2ICsxODYyNiw4
IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAog
CQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8s
CiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8s
CisJCQkJN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAgKi8sCisJCQkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0
VGFzay5oICovLAogCQkJCUJDNjkzMjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jh
c2UuY3BwICovLAogCQkJCUJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jh
c2UuaCAqLywKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVs
bC5jcHAgKi8sCkBAIC0yMzcxNyw2ICsyMzcyMyw3IEBACiAJCQkJNDlFOTExRDAwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEQjFC
QzZBMTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0
VGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3QjQ5MTYxNkE5QjA5NDAwMUM4ODM5IC8qIFRy
YW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExRDIwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODU0RkU3MzcwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjI4MCw2ICsyNjI4Nyw3IEBACiAJCQkJQkMwQjM1ODcxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1
bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBMzA5QUMxNTYxQzk5QjAwQkJEOEU1IC8q
IFJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBCMzU4MzE0QzRGOTU0MDA1NUUy
MkEgLyogUnVuTG9vcE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDMkJERDNEMTdDN0Y5OEMw
MDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE1NjlEMjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5jcHAiCiAjaW5j
bHVkZSAiSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3QuY3BwIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAiCiAjaW5jbHVkZSAi
SlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01NaW1lVHlwZUFy
cmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0VGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxP
YmplY3RUYXNrLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01DYWxsYmFjay5oIgorI2luY2x1ZGUg
IkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5o
PgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbE9iamVj
dENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjcmVhdGUoSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1Rv
RXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNr
Q29udGV4dD4gdGFza0NvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2soZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblB0ciwgdGFza0Nv
bnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdENhbGxiYWNrKCkK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBjYWxsKCkKKyAgICB7CisgICAgICAgIGlmICghY2Fu
SW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8
SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sobV9nbG9iYWxPYmplY3QtPnZtKCkpOworCisgICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisKKyAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IG1fZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgICAgIC8vIFdlIHdpbGwgZmFpbCB0byBnZXQgdGhlIGNvbnRleHQgaWYgdGhl
IGZyYW1lIGhhcyBiZWVuIGRldGFjaGVkLgorICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gV2hlbiBvbiB0aGUgbWFpbiB0aHJlYWQgKGUuZy4g
dGhlIGRvY3VtZW50J3MgdGhyZWFkKSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8KKyAgICAgICAg
Ly8gcHVzaCB0aGUgY3VycmVudCd0IEV4ZWNTdGF0ZSBvbiB0byB0aGUgSlNNYWluVGhyZWFkRXhl
Y1N0YXRlIHN0YWNrLgorICAgICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAg
ICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOworICAgICAg
ICAgICAgbV9mdW5jdGlvblB0cihleGVjLCBtX3Rhc2tDb250ZXh0LmdldCgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX2Z1bmN0aW9uUHRyKGV4ZWMsIG1fdGFza0NvbnRleHQuZ2V0
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbE9iamVjdENhbGxiYWNrKEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1
ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQ
dHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQorICAgICAgICA6IEFjdGl2ZURPTUNhbGxiYWNr
KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0KQorICAgICAgICAsIG1f
ZnVuY3Rpb25QdHIoZnVuY3Rpb25QdHIpCisgICAgICAgICwgbV90YXNrQ29udGV4dCh0YXNrQ29u
dGV4dCkKKyAgICB7CisgICAgfQorCisgICAgU3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2ds
b2JhbE9iamVjdDsKKyAgICBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVu
dExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIG1fZnVuY3Rpb25QdHI7CisgICAgUmVmUHRyPFRhc2tD
b250ZXh0PiBtX3Rhc2tDb250ZXh0OworfTsKKworSlNHbG9iYWxPYmplY3RUYXNrOjpKU0dsb2Jh
bE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5j
dGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCisgICAgOiBtX2Nh
bGxiYWNrKEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uUHRyLCB0YXNrQ29udGV4dCkpCit7Cit9CisKK0pTR2xvYmFsT2JqZWN0VGFzazo6fkpTR2xv
YmFsT2JqZWN0VGFzaygpCit7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RUYXNrOjpwZXJmb3Jt
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3sKKyAgICBtX2NhbGxiYWNrLT5jYWxsKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNET01HbG9i
YWxPYmplY3RUYXNrX2gKKyNkZWZpbmUgSlNET01HbG9iYWxPYmplY3RUYXNrX2gKKworI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2s7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxKU0dsb2JhbE9i
amVjdFRhc2s+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6Okds
b2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rp
b25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4gdGFza0NvbnRl
eHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEpTR2xvYmFsT2JqZWN0VGFz
ayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0VGFzaygpOworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxP
YmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPEpT
Qzo6VGFza0NvbnRleHQ+KTsKKworICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBt
X2NhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNE
T01HbG9iYWxPYmplY3RUYXNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMTU0NTc4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNO
b2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNTAsNyArNTEsNyBAQCBzdGF0aWMgYm9v
bCBzaG91bGRBbGxvd0FjY2Vzc0Zyb20oY29uc3QgCiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdp
bmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKIAotY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdEV4cGVyaW1lbnRzRW5hYmxlZCB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxs
b3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZv
LCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCwg
JnF1ZXVlVGFza1RvRXZlbnRMb29wIH07CiAKIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dC
YXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3
aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgc2hlbGwtPndvcmxkKCksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KQpAQCAtMTYzLDYgKzE2NCwxMiBAQCBib29sIEpTRE9NV2luZG93QmFzZTo6amF2YVNjcmlwdEV4
cGVyaW1lCiAgICAgcmV0dXJuIGZyYW1lLT5zZXR0aW5ncygpLmphdmFTY3JpcHRFeHBlcmltZW50
c0VuYWJsZWQoKTsKIH0KIAordm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRM
b29wKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
OjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBh
c3NSZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQoreworICAgIGNvbnN0IEpTRE9NV2lu
ZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+
KG9iamVjdCk7CisgICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01XaW5kb3dCYXNlKil0aGlzT2Jq
ZWN0LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKK30KKwogdm9pZCBKU0RPTVdpbmRvd0Jh
c2U6OndpbGxSZW1vdmVGcm9tV2luZG93U2hlbGwoKQogewogICAgIHNldEN1cnJlbnRFdmVudCgw
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1
cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9v
bCBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKworICAgICAgICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0V2ZW50TG9vcChjb25zdCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNr
VG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPEpTQzo6VGFza0NvbnRl
eHQ+KTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogc2hlbGwoKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oCShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZSwgdGhp
c1ZhbHVlLCBleGNlcHRpb24pOwogICAgIH07CiAKLXByb3RlY3RlZDoKICAgICBleHBsaWNpdCBK
U01haW5UaHJlYWRFeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9w
cmV2aW91c1N0YXRlKHNfbWFpblRocmVhZFN0YXRlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJ
KHJldmlzaW9uIDE1NDU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgiCiAKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC00Niw4ICs0NywxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmpl
Y3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZSkgfTsKIAorY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9t
LCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50
ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCwgJnF1ZXVlVGFza1Rv
RXZlbnRMb29wIH07CisKIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0
cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKLSAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKHZtKSkKKyAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCiAg
ICAgLCBtX2ltcGwoaW1wbCkKIHsKIH0KQEAgLTY4LDYgKzcxLDM4IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIEpTV29ya2VyR2xvYmFsU2MKICAgICByZXR1cm4gbV9pbXBsLmdldCgpOwogfQog
CisKK2Jvb2wgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3Qg
SlNHbG9iYWxPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBK
U0dsb2JhbE9iamVjdDo6YWxsb3dzQWNjZXNzRnJvbShvYmplY3QsIGV4ZWMpOworfQorCitib29s
IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQ
cm9maWxpbmcob2JqZWN0KTsKK30KKworYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c3Vw
cG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQoreworICAg
IHJldHVybiBKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhvYmplY3QpOwor
fQorCitib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQo
Y29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNHbG9iYWxPYmpl
Y3Q6OnNob3VsZEludGVycnVwdFNjcmlwdChvYmplY3QpOworfQorCitib29sIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpqYXZhU2NyaXB0
RXhwZXJpbWVudHNFbmFibGVkKG9iamVjdCk7Cit9CisKK3ZvaWQgSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3Qs
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVu
Y3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0
KQoreworICAgIGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPihvYmplY3QpOworICAgIHRo
aXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soSlNHbG9iYWxPYmpl
Y3RUYXNrOjpjcmVhdGUoKEpTRE9NR2xvYmFsT2JqZWN0Kil0aGlzT2JqZWN0LCBmdW5jdGlvblB0
ciwgdGFza0NvbnRleHQpKTsKK30KKwogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCiB7
CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgd29ya2VyR2xvYmFsU2NvcGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5o
CShyZXZpc2lvbiAxNTQ1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KIAorICAgICAg
ICBzdGF0aWMgY29uc3QgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlOworCisgICAgICAgIHN0YXRpYyBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBib29sIGphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAg
ICBzdGF0aWMgdm9pZCBxdWV1ZVRhc2tUb0V2ZW50TG9vcChjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BD
YWxsYmFja0Z1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPEpTQzo6VGFza0NvbnRleHQ+KTsKKwogICAg
IHByb3RlY3RlZDoKICAgICAgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYsIEpT
Qzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4pOwogICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDU3OCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDEzLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjAyNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdHMgYWRhcHRlZCBmcm9tIHRoZSBNb3ppbGxhIGFuZCBCbGlu
ayBwcm9qZWN0cy4KKworICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxl
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1hbHJlYWR5
LWZ1bGZpbGxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtYWxyZWFk
eS1yZWplY3RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1hbHJlYWR5LXJlamVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlz
ZS1hbHJlYWR5LXJlc29sdmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9Qcm9taXNlLWNhdGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Q
cm9taXNlLWNhdGNoLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL1Byb21pc2UtY2F0Y2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9t
aXNlLWNoYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LWNoYWluLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtZXhjZXB0aW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtl
cnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLWluaXQtaW4td29ya2Vycy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtaW5pdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVqZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZWplY3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNl
cHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtcmVz
b2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVj
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LXdpdGgtdGhlbi1yZWplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNl
LXJlc29sdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVs
ZmlsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1w
bGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS1zaW1wbGUtZnVsZmlsbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc3RhdGljLWZ1bGZpbGwuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2Utc3RhdGljLXJlc29sdmUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vy
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNh
bGxiYWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10
aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2Fs
bGJhY2tzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10aGVuLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10eXBlcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvUHJvbWlzZS10eXBlcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL1Byb21pc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNv
dXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2pzL3Jlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5qczogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanM6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMu
anM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1p
bi13b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNl
LXNpbXBsZS1pbi13b3JrZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNl
cy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9y
ZXNvdXJjZXMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuanM6IEFk
ZGVkLgorCiAyMDEzLTA4LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRmxvYXRUeXBlZEFycmF5QWRhcHRvcjo6dG9KU1ZhbHVlIHNob3VsZCBhbG1vc3QgY2Vy
dGFpbmx5IG5vdCB1c2UganNOdW1iZXIoKSBzaW5jZSB0aGF0IGF0dGVtcHRzIGludCBjb252ZXJz
aW9ucwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
YWxyZWFkeS1mdWxmaWxsZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyAiZm9vIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LWZ1bGZpbGxlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktZnVsZmlsbGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZXIpIHsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnZm9vJyk7CisgIHJlc29sdmVyLmZ1bGZpbGwoJ2Z1
bGZpbGwnKTsKKyAgcmVzb2x2ZXIucmVzb2x2ZSgncmVzb2x2ZScpOworICByZXNvbHZlci5yZWpl
Y3QoJ3JlamVjdCcpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3Vs
dCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZm9vJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVk
Jyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVqZWN0ZWQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJl
amVjdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1hbHJlYWR5LXJlamVjdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CitQQVNTIHJlc3VsdCBpcyAiZm9vIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJl
YWR5LXJlamVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWFscmVhZHktcmVqZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlamVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2
ZXIucmVqZWN0KCdmb28nKTsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnZnVsZmlsbCcpOworICByZXNv
bHZlci5yZXNvbHZlKCdyZXNvbHZlJyk7CisgIHJlc29sdmVyLnJlamVjdCgncmVqZWN0Jyk7Cit9
KS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNo
SlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3Vs
dDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnZm9vJyk7CisgIGZpbmlzaEpT
VGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVzb2x2ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5
LXJlc29sdmVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rl
c3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBp
cyAiZm9vIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1hbHJlYWR5LXJlc29sdmVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWFscmVhZHktcmVz
b2x2ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1h
bHJlYWR5LXJlc29sdmVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgdmFyIGFub3RoZXJSZXNvbHZlcjsK
KyAgcmVzb2x2ZXIucmVzb2x2ZShuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IGFub3RoZXJSZXNv
bHZlciA9IHI7IH0pKTsKKyAgcmVzb2x2ZXIuZnVsZmlsbCgnZnVsZmlsbCcpOworICByZXNvbHZl
ci5yZXNvbHZlKCdyZXNvbHZlJyk7CisgIHJlc29sdmVyLnJlamVjdCgncmVqZWN0Jyk7CisKKyAg
YW5vdGhlclJlc29sdmVyLmZ1bGZpbGwoJ2ZvbycpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdy
ZXN1bHQnLCAnZm9vJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRl
c3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0
Y2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWNhdGNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitU
ZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyB0aGlzSW5J
bml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1ZQorUEFTUyBmaXJzdFByb21pc2UgaW5zdGFuY2Vv
ZiBQcm9taXNlIGlzIHRydWUKK1BBU1Mgc2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2Ug
aXMgdHJ1ZQorUEFTUyBmaXJzdFByb21pc2UuY2F0Y2gobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3Vt
ZW50LgorUEFTUyBmaXJzdFByb21pc2UuY2F0Y2goMzcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudC4K
K1BBU1MgdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFByb21pc2UgaXMgZmFsc2UKK1BB
U1MgdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1Mg
cmVzdWx0IGlzICJoZWxsbyIKK1BBU1MgcmVzdWx0IGlzICJieWUiCitQQVNTIGZ1bGZpbGxlZAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtY2F0Y2gtaW4td29y
a2Vycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1By
b21pc2UtY2F0Y2gtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxOSBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29y
a2Vycy5qcworUEFTUyBbV29ya2VyXSB0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1
ZQorUEFTUyBbV29ya2VyXSBmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gc2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSBmaXJzdFByb21pc2UuY2F0Y2gobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3Vt
ZW50LgorUEFTUyBbV29ya2VyXSBmaXJzdFByb21pc2UuY2F0Y2goMzcpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBh
cmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBmaXJzdFBy
b21pc2UgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBz
ZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BB
U1MgW1dvcmtlcl0gcmVzdWx0IGlzICJieWUiCitQQVNTIFtXb3JrZXJdIGZ1bGZpbGxlZAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLWluLXdvcmtlcnMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC1pbi13b3Jr
ZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0YXJ0V29ya2Vy
KCdyZXNvdXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jYXRjaC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNhdGNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIHdpbmRvdy50aGlz
SW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vj
b25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS5jYXRjaChmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2lu
ZG93LnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJ
bkZ1bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQcm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhp
c0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7CisgIHdpbmRvdy5yZXN1bHQg
PSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7Cisg
IHJldHVybiAnYnllJzsKK30pOworCitzZWNvbmRQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cmVzdWx0JywgJ2J5ZScpOworICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgZmluaXNoSlNU
ZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKK30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJ
bkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworc2hvdWxkQmVUcnVlKCdmaXJzdFByb21pc2UgaW5z
dGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZVRydWUoJ3NlY29uZFByb21pc2UgaW5zdGFuY2Vv
ZiBQcm9taXNlJyk7CisKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UuY2F0Y2gobnVsbCknLCAn
IlR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFy
Z3VtZW50IicpOworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS5jYXRjaCgzNyknLCAnIlR5cGVF
cnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIGZpcnN0IGFyZ3VtZW50
IicpOworCityZXNvbHZlci5yZWplY3QoJ2hlbGxvJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWNoYWluLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1jaGFpbi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBQcm9taXNlLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgZnVsZmlsbGVkCitQQVNTIHJlc3Vs
dCBpcyAiaGVsbG8iCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvMiIKK1BB
U1MgcmVqZWN0ZWQKK1BBU1MgcmVzdWx0IGlzICJlcnJvciIKK1BBU1MgcmVqZWN0ZWQKK1BBU1Mg
cmVzdWx0IGlzICJlcnJvcjIiCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgInJlY292
ZXJlZCIKK1BBU1Mgb3BlcmF0aW9uIGlzICJhc3luY2hyb25vdXMiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLWNoYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLWNoYWluLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtY2hhaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2
YXIgcmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyKSB7cmVz
b2x2ZXIgPSByO30pOwordmFyIG9wZXJhdGlvbjsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeyAgLy8gZnVsZmlsbGVkIC0gY29udGludWUKKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVk
Jyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cmVzdWx0JywgJ2hlbGxvJyk7CisgIHJldHVybiAnaGVsbG8yJzsKK30sIGZ1bmN0aW9uKCkgewor
ICB0ZXN0RmFpbGVkKCdycmVqZWN0ZWQnKTsKK30pLnRoZW4oKSAgLy8gcGFzcyB0aHJvdWdoCisu
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsgIC8vIGZ1bGZpbGxlZCAtIHRocm93IGFuIGV4Y2VwdGlv
bgorICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8yJyk7CisgIHRocm93ICdl
cnJvcic7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKK30pLnRo
ZW4oZnVuY3Rpb24oKSB7ICAvLyByZWplY3RlZCAtIHRocm93IGFuIGV4Y2VwdGlvbgorICB0ZXN0
RmFpbGVkKCdmdWxmaWxsZWQnKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0UGFzc2Vk
KCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Jlc3VsdCcsICdlcnJvcicpOworICB0aHJvdyAnZXJyb3IyJzsKK30pLnRoZW4o
KSAvLyBwYXNzIHRocm91Z2gKKy50aGVuKGZ1bmN0aW9uKCkgeyAgLy8gcmVqZWN0ZWQgLSByZWNv
dmVyCisgIHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7Cisg
IHRlc3RQYXNzZWQoJ3JlamVjdGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2Vycm9yMicpOworICByZXR1cm4gJ3JlY292
ZXJlZCc7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyAgLy8gZnVsZmlsbGVkIC0gdGhlIGxh
c3QKKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7
CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ3JlY292ZXJlZCcpOworICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ29wZXJhdGlvbicsICdhc3luY2hyb25vdXMnKTsKKyAgZmluaXNo
SlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsKKyAg
ZmluaXNoSlNUZXN0KCk7Cit9KTsKKworb3BlcmF0aW9uID0gJ3N5bmNocm9ub3VzJzsKK3Jlc29s
dmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisKKy8vIFRoZSBjaGFpbiBzaG91bGQgYmUgZXhlY3V0ZWQg
YXN5bmNocm9ub3VzbHkuCitvcGVyYXRpb24gPSAnYXN5bmNocm9ub3VzJzsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
ZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIHRoaXNJblRoZW5DYWxsYmFjayA9PT0gdGhpcmRQcm9taXNlIGlzIHRydWUKK1BBU1MgcmVz
dWx0IGlzICJmb29iYXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWV4Y2VwdGlvbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNlcHRpb24u
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1leGNlcHRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJv
bWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZmlyc3RQcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgd2luZG93LnRoaXNJbklu
aXQgPSB0aGlzOworICByZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworfSk7CisKK3ZhciBzZWNv
bmRQcm9taXNlID0gZmlyc3RQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRocm93
ICdmb29iYXInOworfSk7CisKK3ZhciB0aGlyZFByb21pc2UgPSBzZWNvbmRQcm9taXNlLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIGZhaWwoJ1VuZXhwZWN0ZWQgaW52b2NhdGlvbiBvZiBmdWxm
aWxsQ2FsbGJhY2snKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cudGhpc0luVGhl
bkNhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5UaGVuQ2FsbGJhY2sgPT09
IHRoaXJkUHJvbWlzZScpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdmb29iYXInKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsK
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACitQcm9taXNl
cyAtIEFkYXB0ZWQgZnJvbSBodHRwOi8vZHhyLm1vemlsbGEub3JnL21vemlsbGEtY2VudHJhbC9z
b3VyY2UvZG9tL3Byb21pc2UvdGVzdHMvdGVzdF9wcm9taXNlLmh0bWwuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCisKK1Rlc3QgUHJvbWlzZSByZXNvbHZlLgorUEFTUyBUaGVuLnJl
c29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSByZWpl
Y3QuCitQQVNTIFRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MiBpcyA0MgorCitU
ZXN0IFByb21pc2UgcmVqZWN0LgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQKK1BB
U1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNlIGdjLgorUEFTUyBUaGVuIC0gcHJvbWlzZSBpcyBz
dGlsbCBhbGl2ZQorCitUZXN0IFByb21pc2UgYXN5bmMuCitHbG9iYWwgc2hvdWxkIGJlIGZvbwor
UEFTUyBmb28gaXMgZm9vCitHbG9iYWwgc2hvdWxkIHN0aWxsIGJlIGZvbworUEFTUyBmb28gaXMg
Zm9vCitHbG9iYWwgc2hvdWxkIHN0aWxsIGJlIGZvbyAoMikKK1BBU1MgZm9vIGlzIGZvbworR2xv
YmFsIHNob3VsZCBiZSBiYXIKK1BBU1MgYmFyIGlzIGJhcgorCitUZXN0IFByb21pc2UgZG91Ymxl
IHRoZW4uCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIK
K1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyAxIGlzIDEKK1BBU1MgNDIg
aXMgNDIKKworVGVzdCBQcm9taXNlIC0gdGhlbiAvIGV4Y2VwdGlvbi4KK1BBU1MgVGhlbi5yZXNv
bHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyBDYXRjaCBoYW5kbGVyIChlLmcuIHRoZSByZWplY3Qg
aGFuZGxlcikgY2FsbGVkLgorCitUZXN0IFByb21pc2UgLSB0aGVuIC8gY2F0Y2ggLyB0aGVuLgor
UEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIFRo
ZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDMgaXMgNDMKK1BBU1MgVGhlbi5yZXNv
bHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0NCBpcyA0NAorCitUZXN0IFByb21pc2UgLSByZWpl
Y3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuLgorUEFTUyBUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxs
ZWQKK1BBU1MgNDIgaXMgNDIKK1BBU1MgVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZAorUEFT
UyA0MyBpcyA0MworUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQ0IGlz
IDQ0CisKK1Rlc3QgUHJvbWlzZSAtIHJlamVjdCAvIHRoZW4gLyBjYXRjaCAvIHRoZW4gKDIpLgor
UEFTUyBDYXRjaCBoYXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKK1BBU1MgVGhlbi5yZXNv
bHZlIGhhcyBiZWVuIGNhbGxlZAorUEFTUyA0MyBpcyA0MworCitUZXN0IFByb21pc2UgLSByZWpl
Y3QgLyB0aGVuIC8gY2F0Y2ggZXhjZXB0aW9uIC8gdGhlbi4KK1BBU1MgVGhlbi5yZWplY3QgaGFz
IGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCitQQVNTIENhdGNoIGhhcyBiZWVuIGNhbGxlZAor
UEFTUyA0MyBpcyA0MworUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQ0
IGlzIDQ0CisKK1Rlc3QgUHJvbWlzZSAtIHRoZW4gLyBjYXRjaCBvcmRlcmluZyAocmVzb2x2ZSku
CitNYW55IHN0ZXBzLi4uIHNob3VsZCByZXR1cm4gMgorUEFTUyAyIGlzIDIKKworVGVzdCBQcm9t
aXNlIC0gdGhlbiAvIGNhdGNoIG9yZGVyaW5nIChyZWplY3QpLgorTWFueSBzdGVwcy4uLiBzaG91
bGQgcmV0dXJuIDIKK1BBU1MgMiBpcyAyCisKK1Rlc3QgUHJvbWlzZSAtIG5lc3RlZCBwcm9taXNl
CitQQVNTIE5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkCitQQVNTIFRoZW4ucmVzb2x2ZSBoYXMg
YmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNlIC0gbmVzdGVkLW5lc3Rl
ZCBwcm9taXNlLgorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFTUyBUaGVuLnJl
c29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQzIGlzIDQzCisKK1Rlc3QgUHJvbWlzZSAtIHdy
b25nIG5lc3RlZCBwcm9taXNlLgorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBleGVjdXRlZAorUEFT
UyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJv
bWlzZSAtIHByb21pc2UgbG9vcC4KK1BBU1MgTmVzdGVkIHByb21pc2UgaXMgZXhlY3V0ZWQKK1BB
U1MgTmVzdGVkLW5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkCitQQVNTIFRoZW4ucmVzb2x2ZSBo
YXMgYmVlbiBjYWxsZWQKK1BBU1MgNDIgaXMgNDIKKworVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5y
ZWplY3QoKS4KK1BBU1MgVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQy
CisKK1Rlc3QgUHJvbWlzZSAtIFByb21pc2UucmVzb2x2ZSgpLgorUEFTUyBUaGVuLnJlc29sdmUg
aGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQyCisKK1Rlc3QgUHJvbWlzZSAtIFByb21pc2Uu
cmVzb2x2ZSgpIHdpdGggIG5lc3RlZCBwcm9taXNlLgorUEFTUyBOZXN0ZWQgcHJvbWlzZSBpcyBl
eGVjdXRlZAorUEFTUyBUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkCitQQVNTIDQyIGlzIDQy
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitUZXN0IFByb21pc2Uu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBwcm9taXNlU3RhdGUgaXMgInBl
bmRpbmciCitQQVNTIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgcHJvbWlzZVN0YXRl
IGlzICJmdWxmaWxsZWQiCitQQVNTIHByb21pc2VSZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtlcnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LWZ1bGZpbGwtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMyBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3Jr
ZXJzLmpzCitQQVNTIFtXb3JrZXJdIHByb21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgW1dv
cmtlcl0gcHJvbWlzZVN0YXRlIGlzICJwZW5kaW5nIgorUEFTUyBbV29ya2VyXSBwcm9taXNlU3Rh
dGUgaXMgImZ1bGZpbGxlZCIKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVJlc3VsdCBpcyAiaGVsbG8i
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxmaWxsLWluLXdvcmtl
cnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1mdWxm
aWxsLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0g
c3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5qcycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
ZnVsZmlsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1m
dWxmaWxsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
ZnVsZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVz
dCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNv
bHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlciA9
IHI7IH0pOwordmFyIHByb21pc2VTdGF0ZSA9ICdwZW5kaW5nJzsKK3ZhciBwcm9taXNlUmVzdWx0
ID0gdW5kZWZpbmVkOworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNl
U3RhdGUgPSAnZnVsZmlsbGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9IHJlc3VsdDsKK30sIGZ1bmN0
aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAncmVqZWN0ZWQnOworICBwcm9taXNlUmVz
dWx0ID0gcmVzdWx0OworfSk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRl
JywgJ3BlbmRpbmcnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCitwcm9taXNlLnRoZW4o
ZnVuY3Rpb24oKSB7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywgJ2Z1
bGZpbGxlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Byb21pc2VSZXN1bHQnLCAnaGVs
bG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgn
cHJvbWlzZSBpcyByZWplY3RlZC4nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWlu
aXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLWluaXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK1Rl
c3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHByb21pc2Ug
aW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1MgcHJvbWlzZS5jb25zdHJ1Y3RvciBpcyBQ
cm9taXNlCitQQVNTIHRoaXNJbkluaXQgaXMgcHJvbWlzZQorUEFTUyByZXNvbHZlciBpbnN0YW5j
ZW9mIFByb21pc2VSZXNvbHZlciBpcyB0cnVlCitQQVNTIHJlc29sdmVyLmNvbnN0cnVjdG9yIGlz
IFByb21pc2VSZXNvbHZlcgorUEFTUyBuZXcgUHJvbWlzZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4KK1BBU1MgbmV3IFByb21pc2Uo
MzcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZp
cnN0IGFyZ3VtZW50LgorUEFTUyBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRo
cm93IEVycm9yKCJmb28iKTsgfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHJlc3Vs
dC5tZXNzYWdlIGlzICJmb28iCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxv
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWluLXdv
cmtlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLWluaXQtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMCBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2UtaW5pdC1pbi13b3Jr
ZXJzLmpzCitQQVNTIFtXb3JrZXJdIHByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gcHJvbWlzZS5jb25zdHJ1Y3RvciBpcyBQcm9taXNlCitQQVNTIFtXb3Jr
ZXJdIHRoaXNJbkluaXQgaXMgcHJvbWlzZQorUEFTUyBbV29ya2VyXSByZXNvbHZlciBpbnN0YW5j
ZW9mIFByb21pc2VSZXNvbHZlciBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHJlc29sdmVyLmNvbnN0
cnVjdG9yIGlzIFByb21pc2VSZXNvbHZlcgorUEFTUyBbV29ya2VyXSBuZXcgUHJvbWlzZSgpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4K
K1BBU1MgW1dvcmtlcl0gbmV3IFByb21pc2UoMzcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50LgorUEFTUyBbV29ya2VyXSBw
cm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsgfSkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFtXb3JrZXJdIHJlc3VsdC5tZXNzYWdlIGlz
ICJmb28iCitQQVNTIFtXb3JrZXJdIGZ1bGZpbGxlZAorUEFTUyBbV29ya2VyXSByZXN1bHQgaXMg
ImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC1pbi13b3Jr
ZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5p
dC1pbi13b3JrZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3dvcmtlciA9IHN0
YXJ0V29ya2VyKCdyZXNvdXJjZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanMnKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtaW5pdC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLWluaXQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit2YXIgdGhpc0luSW5pdDsKK3ZhciBy
ZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICB0aGlz
SW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSByOworfSk7CisKK3Nob3VsZEJlVHJ1ZSgncHJv
bWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlKCdwcm9taXNlLmNvbnN0cnVjdG9y
JywgJ1Byb21pc2UnKTsKK3Nob3VsZEJlKCd0aGlzSW5Jbml0JywgJ3Byb21pc2UnKTsKK3Nob3Vs
ZEJlVHJ1ZSgncmVzb2x2ZXIgaW5zdGFuY2VvZiBQcm9taXNlUmVzb2x2ZXInKTsKK3Nob3VsZEJl
KCdyZXNvbHZlci5jb25zdHJ1Y3RvcicsICdQcm9taXNlUmVzb2x2ZXInKTsKKworc2hvdWxkVGhy
b3coJ25ldyBQcm9taXNlKCknLCAnIlR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFy
Z3VtZW50IicpOworc2hvdWxkVGhyb3coJ25ldyBQcm9taXNlKDM3KScsICciVHlwZUVycm9yOiBF
eHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKKworc2hvdWxkTm90VGhy
b3coJ3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbigpIHsgdGhyb3cgRXJyb3IoImZvbyIp
OyB9KScpOworcHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdp
bmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0Lm1l
c3NhZ2UnLCAnZm9vJyk7Cit9KTsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsK
KyAgcmVzb2x2ZXIuZnVsZmlsbCgiaGVsbG8iKTsKKyAgdGhyb3cgRXJyb3IoImZvbyIpOworfSku
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgdGVz
dFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0Jywg
J2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdp
bmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlz
aEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIHBy
b21pc2VTdGF0ZSBpcyAicGVuZGluZyIKK1BBU1MgcHJvbWlzZVN0YXRlIGlzICJyZWplY3RlZCIK
K1BBU1MgcHJvbWlzZVJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXJlamVjdC1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitbV29ya2VyXSBU
ZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29y
a2VyOiByZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcworUEFTUyBbV29ya2Vy
XSBwcm9taXNlU3RhdGUgaXMgInBlbmRpbmciCitQQVNTIFtXb3JrZXJdIHByb21pc2VTdGF0ZSBp
cyAicGVuZGluZyIKK1BBU1MgW1dvcmtlcl0gcHJvbWlzZVN0YXRlIGlzICJyZWplY3RlZCIKK1BB
U1MgW1dvcmtlcl0gcHJvbWlzZVJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtlcnMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Q
cm9taXNlLXJlamVjdC1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZWplY3QuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0g
J3BlbmRpbmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9t
aXNlUmVzdWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0
ZSA9ICdyZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5y
ZWplY3QoJ2hlbGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywg
J3BlbmRpbmcnKTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdw
cm9taXNlIGlzIGZ1bGZpbGxlZC4nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncmVqZWN0ZWQnKTsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtY2hhaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLWNoYWluLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZl
LWNoYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0
IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMg
ImhlbGxvIgorUEFTUyByZXN1bHQgaXMgImJ5ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS1jaGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLWNoYWluLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1jaGFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjEsIHJlc29sdmVyMiwgcmVzb2x2ZXIzOwordmFyIHJl
c29sdmVyNCwgcmVzb2x2ZXI1LCByZXNvbHZlcjY7Cit2YXIgcHJvbWlzZTEgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyKSB7IHJlc29sdmVyMSA9IHI7IH0pOwordmFyIHByb21pc2UyID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjIgPSByOyB9KTsKK3ZhciBwcm9taXNlMyA9IG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXIzID0gcjsgfSk7Cit2YXIgcHJvbWlzZTQg
PSBuZXcgUHJvbWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyNCA9IHI7IH0pOwordmFyIHByb21p
c2U1ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByZXNvbHZlcjUgPSByOyB9KTsKK3ZhciBw
cm9taXNlNiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZXI2ID0gcjsgfSk7CisK
K3Jlc29sdmVyMy5yZXNvbHZlKHByb21pc2UyKTsKK3Jlc29sdmVyMi5yZXNvbHZlKHByb21pc2Ux
KTsKK3Jlc29sdmVyNi5yZXNvbHZlKHByb21pc2U1KTsKK3Jlc29sdmVyNS5yZXNvbHZlKHByb21p
c2U0KTsKKworcHJvbWlzZTMudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3Vs
dCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsK
K30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworfSk7CisKK3Byb21p
c2U2LnRoZW4oZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVz
dWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdieWUnKTsKKyAgZmluaXNo
SlNUZXN0KCk7Cit9KTsKKworcmVzb2x2ZXIxLnJlc29sdmUoJ2hlbGxvJyk7CityZXNvbHZlcjQu
cmVqZWN0KCdieWUnKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgUHJvbWlzZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25k
UHJvbWlzZSBpcyB0cnVlCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2
ZS1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBA
CitbV29ya2VyXSBUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
U3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvUHJvbWlzZS1yZXNvbHZlLWluLXdvcmtlcnMuanMK
K1BBU1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlz
IHRydWUKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3Vy
Y2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1l
eGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorVGVz
dCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1RoZSBwcm9taXNlIGlz
IGFscmVhZHkgcmVqZWN0ZWQgbm93LgorUEFTUyByZWplY3RlZAorUEFTUyByZXN1bHQgaXMgImhl
bGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1leGNl
cHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtcmVz
b2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZXhjZXB0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBjYWxsYmFjazsKK3ZhciBwcm9taXNlID0g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgcmVzb2x2ZXIucmVzb2x2ZSh7dGhl
bjogZnVuY3Rpb24oZnVsZmlsbENhbGxiYWNrLCByZWplY3RDYWxsYmFjaykgeworICAgIHRocm93
ICdoZWxsbyc7CisgIH19LCB0cnVlKTsKK30pOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7
CisgIHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKHJlc3VsdCkgeworICB0ZXN0UGFzc2VkKCdyZWplY3RlZCcpOworICB3aW5kb3cucmVzdWx0
ID0gcmVzdWx0CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7Cisg
IGZpbmlzaEpTVGVzdCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJl
amVjdGVkIG5vdy4nKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhl
bi1mdWxmaWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1mdWxmaWxsLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyB2YWx1ZS50aGVuIGlzIGNhbGxlZC4KK1BBU1MgdGhpc1ZhbHVl
IGlzIHZhbHVlCitUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVkIG5vdy4KK1BBU1MgZnVsZmls
bGVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXJlc29sdmUtd2l0aC10aGVuLWZ1bGZpbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UtcmVzb2x2ZS13aXRoLXRoZW4tZnVsZmlsbC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLWZ1
bGZpbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
UHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIGNhbGxiYWNr
OwordmFyIHZhbHVlID0geworICB0aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVj
dENhbGxiYWNrKSB7CisgICAgdGVzdFBhc3NlZCgndmFsdWUudGhlbiBpcyBjYWxsZWQuJyk7Cisg
ICAgd2luZG93LnRoaXNWYWx1ZSA9IHRoaXM7CisgICAgc2hvdWxkQmUoJ3RoaXNWYWx1ZScsICd2
YWx1ZScpOworICAgIGNhbGxiYWNrID0gZnVsZmlsbENhbGxiYWNrOworICB9Cit9OworZmluaXNo
SlNUZXN0KCk7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsgci5yZXNv
bHZlKHZhbHVlKTsgfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVz
dFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOwor
fSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVz
dCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVkIG5vdy4nKTsK
KworY2FsbGJhY2soJ2hlbGxvJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdpdGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1yZXNvbHZlLXdp
dGgtdGhlbi1yZWplY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1MgdmFsdWUudGhlbiBpcyBjYWxsZWQuCitQQVNTIHRoaXNW
YWx1ZSBpcyB2YWx1ZQorVGhlIHByb21pc2UgaXMgbm90IHJlamVjdGVkIG5vdy4KK1BBU1MgcmVq
ZWN0ZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtcmVzb2x2ZS13aXRoLXRoZW4tcmVqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJlamVjdC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXJlc29sdmUtd2l0aC10aGVuLXJl
amVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQ
cm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgY2FsbGJhY2s7
Cit2YXIgdmFsdWUgPSB7CisgIHRoZW46IGZ1bmN0aW9uKGZ1bGZpbGxDYWxsYmFjaywgcmVqZWN0
Q2FsbGJhY2spIHsKKyAgICB0ZXN0UGFzc2VkKCd2YWx1ZS50aGVuIGlzIGNhbGxlZC4nKTsKKyAg
ICB3aW5kb3cudGhpc1ZhbHVlID0gdGhpczsKKyAgICBzaG91bGRCZSgndGhpc1ZhbHVlJywgJ3Zh
bHVlJyk7CisgICAgY2FsbGJhY2sgPSByZWplY3RDYWxsYmFjazsKKyAgfQorfTsKK3ZhciBwcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeyByLnJlc29sdmUodmFsdWUpOyB9KTsKKwor
cHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB0ZXN0RmFpbGVkKCdmdWxmaWxsZWQn
KTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBhc3Nl
ZCgncmVqZWN0ZWQnKTsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKwor
ZGVidWcoJ1RoZSBwcm9taXNlIGlzIG5vdCByZWplY3RlZCBub3cuJyk7CisKK2NhbGxiYWNrKCdo
ZWxsbycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS1yZXNvbHZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2UtcmVzb2x2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICBy
ZXNvbHZlci5yZXNvbHZlKCdoZWxsbycpOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmly
c3RQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy50aGlzSW5GdWxmaWxs
Q2FsbGJhY2sgPSB0aGlzOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9
PT0gc2Vjb25kUHJvbWlzZScpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30s
IGZ1bmN0aW9uKCkgeworICBmYWlsKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zaW1wbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS1zaW1wbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1MgdGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlIGlzIHRydWUKK1BBU1MgdGhpc0lu
RnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgcmVzdWx0IGlz
ICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1w
bGUtZnVsZmlsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
c2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxi
YWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zaW1wbGUtZnVsZmlsbC1pbnNpZGUtY2FsbGJhY2stZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc2ltcGxlLWZ1bGZpbGwtaW5zaWRlLWNhbGxiYWNrLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNpbXBsZS1mdWxmaWxsLWluc2lkZS1jYWxs
YmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXNp
bXBsZS1mdWxmaWxsLWluc2lkZS1jYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKK3ZhciBmdXR1cmUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikg
eworICByZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdy
ZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWZ1bGZp
bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxl
LWZ1bGZpbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1zaW1wbGUtZnVsZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K3ZhciBmdXR1cmUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICAgIHJlc29sdmVyLmZ1bGZpbGwoJ2hlbGxvJyk7CisgIH0sIDAp
OworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgd2luZG93LnJlc3VsdCA9IHJlc3VsdDsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNU
ZXN0KCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxl
LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
K1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitT
dGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLmpzCitQ
QVNTIFtXb3JrZXJdIHRoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZSBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIHRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJvbWlzZSBpcyB0cnVlCitQ
QVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXNpbXBsZS1pbi13b3JrZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9Qcm9taXNlLXNpbXBsZS1pbi13b3JrZXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLWluLXdvcmtlcnMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9Qcm9taXNl
LXNpbXBsZS1pbi13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zaW1wbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc2ltcGxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOworCit2YXIgZmlyc3RQcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24obmV3UmVzb2x2ZXIpIHsKKyAgd2luZG93LnRoaXNJbkluaXQgPSB0aGlz
OworICByZXNvbHZlciA9IG5ld1Jlc29sdmVyOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0g
Zmlyc3RQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy50aGlzSW5GdWxm
aWxsQ2FsbGJhY2sgPSB0aGlzOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFj
ayA9PT0gc2Vjb25kUHJvbWlzZScpOworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OworICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsK
K30pOworCitzaG91bGRCZVRydWUoJ3RoaXNJbkluaXQgPT09IGZpcnN0UHJvbWlzZScpOworCity
ZXNvbHZlci5mdWxmaWxsKCdoZWxsbycpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxs
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS1zdGF0aWMtZnVsZmlsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
cmVzdWx0IGlzIHVuZGVmaW5lZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS1zdGF0aWMtZnVsZmlsbC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1mdWxmaWxsLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Jlc3VsdCA9IHVuZGVmaW5lZDsKKworUHJvbWlz
ZS5mdWxmaWxsKCdoZWxsbycpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHdpbmRvdy5yZXN1
bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RGYWlsZWQo
J3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CitzaG91bGRCZSgncmVzdWx0Jywg
J3VuZGVmaW5lZCcpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3QtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZWplY3Qt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgUHJvbWlz
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHJlc3VsdCBpcyB1bmRlZmlu
ZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Ut
c3RhdGljLXJlamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS1zdGF0aWMtcmVqZWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL1Byb21pc2Utc3RhdGljLXJlamVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CityZXN1bHQgPSB1bmRlZmluZWQ7CisKK1Byb21pc2UucmVqZWN0KCdoZWxsbycpLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RGYWlsZWQoJ2Z1bGZpbGxlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVz
dWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworc2hvdWxkQmUoJ3Jlc3VsdCcsICd1bmRlZmluZWQnKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRp
Yy1yZXNvbHZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L1Byb21pc2Utc3RhdGljLXJlc29sdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkCitQQVNTIHJlc3VsdCBp
cyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNvbHZlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXN0YXRpYy1yZXNv
bHZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2Utc3Rh
dGljLXJlc29sdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworcmVzdWx0
ID0gdW5kZWZpbmVkOworCit2YXIgcmVzb2x2ZXI7Cit2YXIgcHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZShuZXcgUHJvbWlzZShmdW5jdGlvbiAocikgeyByZXNvbHZlciA9IHI7fSApKTsKKworcHJv
bWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0Owor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rl
c3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCityZXNvbHZlci5yZXNvbHZlKCdoZWxsbycpOworc2hvdWxkQmUo
J3Jlc3VsdCcsICd1bmRlZmluZWQnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitUZXN0IFByb21pc2UuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyB0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1
ZQorUEFTUyBmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1Mgc2Vj
b25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBmaXJzdFByb21pc2Uu
dGhlbihudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBv
ciB1bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQQVNTIGZpcnN0UHJvbWlzZS50aGVu
KHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVu
Y3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIHNlY29uZCBhcmd1bWVudC4KK1BBU1MgZmlyc3RQcm9t
aXNlLnRoZW4oMzcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9u
IG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgdGhpc0luRnVsZmlsbENh
bGxiYWNrID09PSBmaXJzdFByb21pc2UgaXMgZmFsc2UKK1BBU1MgdGhpc0luRnVsZmlsbENhbGxi
YWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTggQEAKK1tXb3JrZXJdIFRlc3QgUHJvbWlzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9Qcm9taXNlLXRoZW4taW4td29ya2Vycy5q
cworUEFTUyBbV29ya2VyXSB0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UgaXMgdHJ1ZQorUEFT
UyBbV29ya2VyXSBmaXJzdFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlIGlzIHRydWUKK1BBU1Mg
W1dvcmtlcl0gc2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSBmaXJzdFByb21pc2UudGhlbihudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBFeHBlY3RlZCBmdW5jdGlvbiBvciB1bmRlZmluZWQgYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQ
QVNTIFtXb3JrZXJdIGZpcnN0UHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gb3IgdW5kZWZpbmVkIGFzIGFzIHNl
Y29uZCBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gZmlyc3RQcm9taXNlLnRoZW4oMzcpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBh
cyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxiYWNrID09
PSBmaXJzdFByb21pc2UgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gdGhpc0luRnVsZmlsbENhbGxi
YWNrID09PSBzZWNvbmRQcm9taXNlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmVzdWx0IGlzICJo
ZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4taW4td29ya2Vy
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4t
aW4td29ya2Vycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3b3JrZXIgPSBzdGFy
dFdvcmtlcigncmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpzJyk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdp
dGhvdXQtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxi
YWNrcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitUZXN0IFBy
b21pc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyByZXN1bHQgaXMgImhl
bGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tz
LWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91
dC1jYWxsYmFja3MtaW4td29ya2Vycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMCBAQAorW1dvcmtlcl0gVGVzdCBQcm9taXNlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL1Byb21pc2UtdGhlbi13aXRob3V0
LWNhbGxiYWNrcy1pbi13b3JrZXJzLmpzCitQQVNTIFtXb3JrZXJdIHJlc3VsdCBpcyAiaGVsbG8i
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4t
d29ya2Vycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10
aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLWluLXdvcmtl
cnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIo
J3Jlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcycp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvUHJvbWlzZS10aGVuLXdpdGhvdXQtY2FsbGJhY2tzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNl
LicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK25ldyBQcm9taXNlKGZ1bmN0
aW9uKHIpIHsgci5mdWxmaWxsKCdoZWxsbycpOyB9KQorICAudGhlbigpCisgIC50aGVuKGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
fSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9Q
cm9taXNlLXRoZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtdGhlbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9taXNl
LXRoZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
UHJvbWlzZS4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzb2x2
ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdSZXNvbHZl
cikgeworICB3aW5kb3cudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3UmVzb2x2
ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgd2luZG93LnRoaXNJbkZ1bGZpbGxDYWxsYmFjayA9IHRoaXM7CisgIHNo
b3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gZmlyc3RQcm9taXNlJyk7Cisg
IHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09PSBzZWNvbmRQcm9taXNlJyk7
CisgIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVz
dWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3Nob3VsZEJlVHJ1ZSgn
dGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91bGRCZVRydWUoJ2ZpcnN0UHJvbWlz
ZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgnc2Vjb25kUHJvbWlzZSBpbnN0
YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2ZpcnN0UHJvbWlzZS50aGVuKG51bGwp
JywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJz
dCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21pc2UudGhlbih1bmRlZmluZWQs
IG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBh
cyBzZWNvbmQgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmlyc3RQcm9taXNlLnRoZW4oMzcp
JywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVmaW5lZCBhcyBhcyBmaXJz
dCBhcmd1bWVudCInKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UtdHlwZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJvbWlzZS10eXBl
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL1Byb21p
c2UtdHlwZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKK1By
b21pc2VzIC0gVGVzdCBiYXNpYyB0eXBlcyAvIGV4Y2VwdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisKK1Byb21pc2VzCisKK2FQcm9taXNlID0gbmV3IFByb21pc2UoLi4u
KQorUEFTUyBhUHJvbWlzZSBpcyBhbiBpbnN0YW5jZSBvZiBQcm9taXNlCitQQVNTIFN0cmluZyhh
UHJvbWlzZSkgaXMgJ1tvYmplY3QgUHJvbWlzZV0nCitQQVNTIGFQcm9taXNlLnRoZW4gaXMgZGVm
aW5lZC4KK1BBU1MgYVByb21pc2UudGhlbiBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFT
UyBhUHJvbWlzZS50aGVuLmxlbmd0aCBpcyAwCitQQVNTIGFQcm9taXNlLmNhdGNoIGlzIGRlZmlu
ZWQuCitQQVNTIGFQcm9taXNlLmNhdGNoIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNT
IGFQcm9taXNlLmNhdGNoLmxlbmd0aCBpcyAwCisKK1Byb21pc2UgY29uc3RydWN0b3IKKworUEFT
UyBQcm9taXNlLmxlbmd0aCBpcyAxCitQQVNTIG5ldyBQcm9taXNlKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBuZXcgUHJv
bWlzZSgxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBh
cyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgbmV3IFByb21pc2UoJ2hlbGxvJykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQuCitQ
QVNTIG5ldyBQcm9taXNlKFtdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBm
dW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgbmV3IFByb21pc2Uoe30pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3Vt
ZW50LgorUEFTUyBuZXcgUHJvbWlzZShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBF
eHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgbmV3IFByb21pc2Uo
dW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBh
cyBhcyBmaXJzdCBhcmd1bWVudC4KK1BBU1MgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIp
IHsgcmVzb2x2ZXIucmVzb2x2ZSgxKTsgfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IFByb21pc2UoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBGdW5jdGlvbiBpcyBub3QgYSBm
dW5jdGlvbiAoZXZhbHVhdGluZyAnUHJvbWlzZSgpJykuCisKK1Byb21pc2Ugc3RhdGljcworCitQ
QVNTIFByb21pc2UuZnVsZmlsbCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBQcm9t
aXNlLmZ1bGZpbGwubGVuZ3RoIGlzIDEKK1BBU1MgUHJvbWlzZS5mdWxmaWxsKCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBQ
cm9taXNlLmZ1bGZpbGwoMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFByb21pc2Uu
cmVzb2x2ZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBQcm9taXNlLnJlc29sdmUu
bGVuZ3RoIGlzIDEKK1BBU1MgUHJvbWlzZS5yZXNvbHZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBQcm9taXNlLnJlc29s
dmUoMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFByb21pc2UucmVqZWN0IGlzIGFu
IGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIFByb21pc2UucmVqZWN0Lmxlbmd0aCBpcyAxCitQ
QVNTIFByb21pc2UucmVqZWN0KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXhwZWN0ZWQg
YXQgbGVhc3Qgb25lIGFyZ3VtZW50LgorUEFTUyBQcm9taXNlLnJlamVjdCgxKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgUHJvbWlzZS5mdWxmaWxsKDEpIGlzIGFuIGluc3RhbmNlIG9m
IFByb21pc2UKK1BBU1MgUHJvbWlzZS5yZXNvbHZlKDEpIGlzIGFuIGluc3RhbmNlIG9mIFByb21p
c2UKK1BBU1MgUHJvbWlzZS5yZWplY3QoMSkgaXMgYW4gaW5zdGFuY2Ugb2YgUHJvbWlzZQorCitQ
cm9taXNlUmVzb2x2ZXIKKworYVJlc29sdmVyIGlzIGZyb20gbmV3IFByb21pc2UoZnVuY3Rpb24o
YVJlc29sdmVyKSB7IC4uLiB9KQorUEFTUyBhUmVzb2x2ZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUHJv
bWlzZVJlc29sdmVyCitQQVNTIFN0cmluZyhhUmVzb2x2ZXIpIGlzICdbb2JqZWN0IFByb21pc2VS
ZXNvbHZlcl0nCitQQVNTIGFSZXNvbHZlci5mdWxmaWxsIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0
aW9uCitQQVNTIGFSZXNvbHZlci5mdWxmaWxsLmxlbmd0aCBpcyAxCitQQVNTIGFSZXNvbHZlci5y
ZXNvbHZlIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIGFSZXNvbHZlci5yZXNvbHZl
Lmxlbmd0aCBpcyAxCitQQVNTIGFSZXNvbHZlci5yZWplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgRnVu
Y3Rpb24KK1BBU1MgYVJlc29sdmVyLnJlamVjdC5sZW5ndGggaXMgMQorUEFTUyByZXNvbHZlckZ1
bGZpbGwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZWNlaXZlciBvZiBmdWxmaWxsIG11
c3QgYmUgYSBQcm9taXNlUmVzb2x2ZXIuCitQQVNTIHJlc29sdmVyUmVzb2x2ZSgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFJlY2VpdmVyIG9mIHJlc29sdmUgbXVzdCBiZSBhIFByb21pc2VS
ZXNvbHZlci4KK1BBU1MgcmVzb2x2ZXJSZWplY3QoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBSZWNlaXZlciBvZiByZWplY3QgbXVzdCBiZSBhIFByb21pc2VSZXNvbHZlci4KKworUHJvbWlz
ZVJlc29sdmVyIGNvbnN0cnVjdG9yCisKK1BBU1MgbmV3IFByb21pc2VSZXNvbHZlcigpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFs
dWF0aW5nICduZXcgUHJvbWlzZVJlc29sdmVyKCknKS4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
UHJvbWlzZS10eXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvUHJv
bWlzZS10eXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9Qcm9t
aXNlLXR5cGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiUHJvbWlzZXMgLSBUZXN0IGJhc2ljIHR5cGVzIC8g
ZXhjZXB0aW9ucy4iKTsKKworLy8gd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisKKy8v
IFByb21pc2UKK2RlYnVnKCIiKTsKK2RlYnVnKCJQcm9taXNlcyIpOworZGVidWcoIiIpOworCisv
LyBQcm9taXNlcyBzaG91bGQgYmUgb2YgdHlwZSBQcm9taXNlLgorCit2YXIgYVByb21pc2UgPSBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeyByZXNvbHZlci5yZXNvbHZlKDEpOyB9KTsK
KworZGVidWcoImFQcm9taXNlID0gbmV3IFByb21pc2UoLi4uKSIpCitzaG91bGRCZVR5cGUoImFQ
cm9taXNlIiwgIlByb21pc2UiKTsKK3Nob3VsZEJlKCJTdHJpbmcoYVByb21pc2UpIiwgIidbb2Jq
ZWN0IFByb21pc2VdJyIpOworCitzaG91bGRCZURlZmluZWQoImFQcm9taXNlLnRoZW4iKTsKK3No
b3VsZEJlVHlwZSgiYVByb21pc2UudGhlbiIsICJGdW5jdGlvbiIpOworc2hvdWxkQmUoImFQcm9t
aXNlLnRoZW4ubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlRGVmaW5lZCgiYVByb21pc2UuY2F0Y2gi
KTsKK3Nob3VsZEJlVHlwZSgiYVByb21pc2UuY2F0Y2giLCAiRnVuY3Rpb24iKTsKK3Nob3VsZEJl
KCJhUHJvbWlzZS5jYXRjaC5sZW5ndGgiLCAiMCIpOworCisKKy8vIFByb21pc2UgY29uc3RydWN0
b3IKK2RlYnVnKCIiKTsKK2RlYnVnKCJQcm9taXNlIGNvbnN0cnVjdG9yIik7CitkZWJ1ZygiIik7
CisKKy8vIE5lZWQgYXQgbGVhc3Qgb25lIHBhcmFtZXRlci4KK3Nob3VsZEJlKCJQcm9taXNlLmxl
bmd0aCIsICIxIik7CitzaG91bGRUaHJvdygibmV3IFByb21pc2UoKSIpOworCisvLyBQYXJhbWV0
ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLgorc2hvdWxkVGhyb3coIm5ldyBQcm9taXNlKDEpIiwgIidU
eXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50JyIpOworc2hv
dWxkVGhyb3coIm5ldyBQcm9taXNlKCdoZWxsbycpIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1
bmN0aW9uIGFzIGFzIGZpcnN0IGFyZ3VtZW50JyIpOworc2hvdWxkVGhyb3coIm5ldyBQcm9taXNl
KFtdKSIsICInVHlwZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVu
dCciKTsKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZSh7fSkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0
ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQnIik7CitzaG91bGRUaHJvdygibmV3IFBy
b21pc2UobnVsbCkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3Qg
YXJndW1lbnQnIik7CitzaG91bGRUaHJvdygibmV3IFByb21pc2UodW5kZWZpbmVkKSIsICInVHlw
ZUVycm9yOiBFeHBlY3RlZCBmdW5jdGlvbiBhcyBhcyBmaXJzdCBhcmd1bWVudCciKTsKK3Nob3Vs
ZE5vdFRocm93KCJuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeyByZXNvbHZlci5yZXNv
bHZlKDEpOyB9KSIpOworCisvLyBDYW4ndCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbgorc2hvdWxk
VGhyb3coIlByb21pc2UoKSIpOworCisKKy8vIFByb21pc2Ugc3RhdGljcworZGVidWcoIiIpOwor
ZGVidWcoIlByb21pc2Ugc3RhdGljcyIpOworZGVidWcoIiIpOworCisKKy8vIE5lZWQgYXQgbGVh
c3Qgb25lIHBhcmFtZXRlci4KK3Nob3VsZEJlVHlwZSgiUHJvbWlzZS5mdWxmaWxsIiwgIkZ1bmN0
aW9uIik7CitzaG91bGRCZSgiUHJvbWlzZS5mdWxmaWxsLmxlbmd0aCIsICIxIik7CitzaG91bGRU
aHJvdygiUHJvbWlzZS5mdWxmaWxsKCkiLCAiJ1R5cGVFcnJvcjogRXhwZWN0ZWQgYXQgbGVhc3Qg
b25lIGFyZ3VtZW50JyIpOworc2hvdWxkTm90VGhyb3coIlByb21pc2UuZnVsZmlsbCgxKSIpOwor
CitzaG91bGRCZVR5cGUoIlByb21pc2UucmVzb2x2ZSIsICJGdW5jdGlvbiIpOworc2hvdWxkQmUo
IlByb21pc2UucmVzb2x2ZS5sZW5ndGgiLCAiMSIpOworc2hvdWxkVGhyb3coIlByb21pc2UucmVz
b2x2ZSgpIiwgIidUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCciKTsK
K3Nob3VsZE5vdFRocm93KCJQcm9taXNlLnJlc29sdmUoMSkiKTsKKworc2hvdWxkQmVUeXBlKCJQ
cm9taXNlLnJlamVjdCIsICJGdW5jdGlvbiIpOworc2hvdWxkQmUoIlByb21pc2UucmVqZWN0Lmxl
bmd0aCIsICIxIik7CitzaG91bGRUaHJvdygiUHJvbWlzZS5yZWplY3QoKSIsICInVHlwZUVycm9y
OiBFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQnIik7CitzaG91bGROb3RUaHJvdygiUHJv
bWlzZS5yZWplY3QoMSkiKTsKKworLy8gU2hvdWxkIHJldHVybiBQcm9taXNlIG9iamVjdHMuCitz
aG91bGRCZVR5cGUoIlByb21pc2UuZnVsZmlsbCgxKSIsICJQcm9taXNlIik7CitzaG91bGRCZVR5
cGUoIlByb21pc2UucmVzb2x2ZSgxKSIsICJQcm9taXNlIik7CitzaG91bGRCZVR5cGUoIlByb21p
c2UucmVqZWN0KDEpIiwgIlByb21pc2UiKTsKKworCisKKy8vIFByb21pc2VSZXNvbHZlcgorZGVi
dWcoIiIpOworZGVidWcoIlByb21pc2VSZXNvbHZlciIpOworZGVidWcoIiIpOworCit2YXIgYVJl
c29sdmVyOwordmFyIHJlc29sdmVyRnVsZmlsbDsKK3ZhciByZXNvbHZlclJlc29sdmU7Cit2YXIg
cmVzb2x2ZXJSZWplY3Q7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICBhUmVzb2x2
ZXIgPSByOworCisgICAgLy8gVGhlIHJlc29sdmVyIHNob3VsZCBiZSBvZiB0eXBlIFByb21pc2VS
ZXNvbHZlci4KKyAgICBkZWJ1ZygiYVJlc29sdmVyIGlzIGZyb20gbmV3IFByb21pc2UoZnVuY3Rp
b24oYVJlc29sdmVyKSB7IC4uLiB9KSIpCisgICAgc2hvdWxkQmVUeXBlKCJhUmVzb2x2ZXIiLCAi
UHJvbWlzZVJlc29sdmVyIik7CisgICAgc2hvdWxkQmUoIlN0cmluZyhhUmVzb2x2ZXIpIiwgIidb
b2JqZWN0IFByb21pc2VSZXNvbHZlcl0nIik7CisgICAgc2hvdWxkQmVUeXBlKCJhUmVzb2x2ZXIu
ZnVsZmlsbCIsICJGdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJhUmVzb2x2ZXIuZnVsZmlsbC5s
ZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlVHlwZSgiYVJlc29sdmVyLnJlc29sdmUiLCAiRnVu
Y3Rpb24iKTsKKyAgICBzaG91bGRCZSgiYVJlc29sdmVyLnJlc29sdmUubGVuZ3RoIiwgIjEiKTsK
KyAgICBzaG91bGRCZVR5cGUoImFSZXNvbHZlci5yZWplY3QiLCAiRnVuY3Rpb24iKTsKKyAgICBz
aG91bGRCZSgiYVJlc29sdmVyLnJlamVjdC5sZW5ndGgiLCAiMSIpOworCisgICAgLy8gUmVzb2x2
ZXJzIGZ1bmN0aW9ucyBtdXN0IGJlIGNhbGxlZCBvbiB0aGUgcmVzb2x2ZXIuCisgICAgcmVzb2x2
ZXJGdWxmaWxsID0gYVJlc29sdmVyLmZ1bGZpbGw7CisgICAgc2hvdWxkVGhyb3coInJlc29sdmVy
RnVsZmlsbCgpIiwgIidUeXBlRXJyb3I6IFJlY2VpdmVyIG9mIGZ1bGZpbGwgbXVzdCBiZSBhIFBy
b21pc2VSZXNvbHZlciciKTsKKyAgICByZXNvbHZlclJlc29sdmUgPSBhUmVzb2x2ZXIucmVzb2x2
ZTsKKyAgICBzaG91bGRUaHJvdygicmVzb2x2ZXJSZXNvbHZlKCkiLCAiJ1R5cGVFcnJvcjogUmVj
ZWl2ZXIgb2YgcmVzb2x2ZSBtdXN0IGJlIGEgUHJvbWlzZVJlc29sdmVyJyIpOworICAgIHJlc29s
dmVyUmVqZWN0ID0gYVJlc29sdmVyLnJlamVjdDsKKyAgICBzaG91bGRUaHJvdygicmVzb2x2ZXJS
ZWplY3QoKSIsICInVHlwZUVycm9yOiBSZWNlaXZlciBvZiByZWplY3QgbXVzdCBiZSBhIFByb21p
c2VSZXNvbHZlciciKTsKK30pOworCitkZWJ1ZygiIik7CitkZWJ1ZygiUHJvbWlzZVJlc29sdmVy
IGNvbnN0cnVjdG9yIik7CitkZWJ1ZygiIik7CisKK3Nob3VsZFRocm93KCJuZXcgUHJvbWlzZVJl
c29sdmVyKCkiKTsKKworZGVidWcoIiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL1Byb21pc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL1Byb21pc2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvUHJvbWlzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KKworLy8gQWRhcHRlZCBmcm9tIGh0dHA6Ly9keHIubW96aWxsYS5vcmcvbW96
aWxsYS1jZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0cy90ZXN0X3Byb21pc2UuaHRtbCB3
aGljaCBzdGF0ZWQ6CisvLyAgICBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKy8vICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8KKworZGVzY3JpcHRpb24oIlByb21pc2VzIC0gQWRhcHRlZCBmcm9tIGh0dHA6
Ly9keHIubW96aWxsYS5vcmcvbW96aWxsYS1jZW50cmFsL3NvdXJjZS9kb20vcHJvbWlzZS90ZXN0
cy90ZXN0X3Byb21pc2UuaHRtbC4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CitmdW5jdGlvbiB0ZXN0KF9hLCBfYikKK3sKKyAgICBpZiAoaXNSZXN1bHRDb3JyZWN0KF9hLCBf
YikpCisgICAgICAgIHRlc3RQYXNzZWQoc3RyaW5naWZ5KF9hKSArICIgaXMgIiArIHN0cmluZ2lm
eShfYikpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChzdHJpbmdpZnkoX2EpICsgIiBz
aG91bGQgYmUgIiArIHN0cmluZ2lmeShfYikpOworfQorCitmdW5jdGlvbiBwcm9taXNlUmVzb2x2
ZSgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSByZXNvbHZlLiIpCisgIAorICB2YXIgcHJvbWlz
ZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2
ZSg0Mik7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4u
cmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5U
ZXN0KCk7CisgIH0sIGZ1bmN0aW9uKCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhh
cyBiZWVuIGNhbGxlZCIpOworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHBy
b21pc2VSZWplY3QoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgcmVqZWN0LiIpOworICAKKyAg
dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29s
dmVyLnJlamVjdCg0Mik7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWls
ZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7CisgIH0s
IGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBj
YWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQor
CitmdW5jdGlvbiBwcm9taXNlRXhjZXB0aW9uKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIHJl
amVjdC4iKTsKKworICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVy
KSB7CisgICAgdGhyb3cgNDI7CisgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RG
YWlsZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICBydW5UZXN0KCk7Cisg
IH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlamVjdCBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOwor
fQorCitmdW5jdGlvbiBwcm9taXNlR0MoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgZ2MuIik7
CisgIAorICB2YXIgcmVzb2x2ZXI7CisgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rp
b24ocikgeworICAgIHJlc29sdmVyID0gcjsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7Cisg
ICAgdGVzdFBhc3NlZCgiVGhlbiAtIHByb21pc2UgaXMgc3RpbGwgYWxpdmUiKTsKKyAgICBydW5U
ZXN0KCk7CisgIH0pOworCisgIHByb21pc2UgPSBudWxsOworCisgIGdjKCk7CisKKyAgcmVzb2x2
ZXIucmVzb2x2ZSg0Mik7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VBc3luYygpIHsKKyAgZGVidWco
IlRlc3QgUHJvbWlzZSBhc3luYy4iKTsKKworICB2YXIgZ2xvYmFsID0gImZvbyI7CisgIHZhciBm
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIGJl
IGZvbyIpOworICAgIHRlc3QoZ2xvYmFsLCAnZm9vJyk7CisKKyAgICByLnJlc29sdmUoNDIpOwor
CisgICAgZGVidWcoIkdsb2JhbCBzaG91bGQgc3RpbGwgYmUgZm9vIik7CisgICAgdGVzdChnbG9i
YWwsICdmb28nKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBkZWJ1Zygi
R2xvYmFsIHNob3VsZCBiZSBiYXIiKTsKKyAgICAgIHRlc3QoZ2xvYmFsLCAnYmFyJyk7CisgICAg
ICBydW5UZXN0KCk7CisgICAgfSwgMCk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZ2xv
YmFsID0gImJhciI7CisgIH0pOworCisgIGRlYnVnKCJHbG9iYWwgc2hvdWxkIHN0aWxsIGJlIGZv
byAoMikiKTsKKyAgdGVzdChnbG9iYWwsICdmb28nKTsKK30KKworZnVuY3Rpb24gcHJvbWlzZURv
dWJsZVRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgZG91YmxlIHRoZW4uIik7CisKKyAg
dmFyIHN0ZXBzID0gMDsKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUoNDIpOworICB9KTsKKworICBwcm9taXNlLnRo
ZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQsIDQyKTsKKyAgICBzdGVwcysrOworICB9LCBmdW5j
dGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVk
Iik7CisgIH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBh
c3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qoc3RlcHMsIDEp
OworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hh
dCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9
KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVRoZW5FeGNlcHRpb24oKSB7CisgIGRlYnVnKCJUZXN0
IFByb21pc2UgLSB0aGVuIC8gZXhjZXB0aW9uLiIpOworCisgIHZhciBwcm9taXNlID0gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKDQyKTsKKyAg
fSk7CisKKyAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJU
aGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGhyb3cgImJvb2giOworICB9KS5j
YXRjaChmdW5jdGlvbihlKSB7CisgICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFuZGxlciAoZS5nLiB0
aGUgcmVqZWN0IGhhbmRsZXIpIGNhbGxlZC4iKTsKKyAgICBydW5UZXN0KCk7CisgIH0pOworfQor
CitmdW5jdGlvbiBwcm9taXNlVGhlbkNhdGNoVGhlbigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlz
ZSAtIHRoZW4gLyBjYXRjaCAvIHRoZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlc29sdmUoNDIpOworICB9KTsK
KworICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hhdCkgeworICAgIHRl
c3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHdoYXQs
IDQyKTsKKyAgICByZXR1cm4gd2hhdCArIDE7CisgIH0sIGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0
ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSk7CisKKyAgcHJv
bWlzZTIudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZl
IGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAgIHJldHVybiB3aGF0
ICsgMTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0
IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KS5jYXRjaChmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFp
bGVkKCJDYXRjaCBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7
CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRl
c3Qod2hhdCwgNDQpOworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24od2hhdCkgeworICAg
IHRlc3RGYWlsZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKwor
ZnVuY3Rpb24gcHJvbWlzZVJlamVjdFRoZW5DYXRjaFRoZW4oKSB7CisgIGRlYnVnKCJUZXN0IFBy
b21pc2UgLSByZWplY3QgLyB0aGVuIC8gY2F0Y2ggLyB0aGVuLiIpOworCisgIHZhciBwcm9taXNl
ID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZWplY3Qo
NDIpOworICB9KTsKKworICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24od2hh
dCkgeworICAgIHRlc3RGYWlsZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAg
fSwgZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVqZWN0IGhhcyBiZWVu
IGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAgIHJldHVybiB3aGF0ICsgMTsKKyAg
fSk7CisKKyAgcHJvbWlzZTIudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMpOworICAg
IHJldHVybiB3aGF0ICsgMTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RG
YWlsZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQp
IHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAg
dGVzdCh3aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJv
bWlzZVJlamVjdFRoZW5DYXRjaFRoZW4yKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcmVq
ZWN0IC8gdGhlbiAvIGNhdGNoIC8gdGhlbiAoMikuIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7Cisg
IH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAg
IHJldHVybiB3aGF0ICsgMTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24od2hhdCkgeworICAgIHRlc3RQ
YXNzZWQoIkNhdGNoIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIpOworICAg
IHJldHVybiB3aGF0ICsgMTsKKyAgfSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBh
c3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDMp
OworICAgIHJ1blRlc3QoKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RUaGVu
Q2F0Y2hFeGNlcHRpb25UaGVuKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gcmVqZWN0IC8g
dGhlbiAvIGNhdGNoIGV4Y2VwdGlvbiAvIHRoZW4uIik7CisKKyAgdmFyIHByb21pc2UgPSBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICAgIHJlc29sdmVyLnJlamVjdCg0Mik7Cisg
IH0pOworCisgIHByb21pc2UudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdEZhaWxlZCgi
VGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5jdGlvbih3aGF0KSB7Cisg
ICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3
aGF0LCA0Mik7CisgICAgdGhyb3cod2hhdCArIDEpOworICB9KS5jYXRjaChmdW5jdGlvbih3aGF0
KSB7CisgICAgdGVzdFBhc3NlZCgiQ2F0Y2ggaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3
aGF0LCA0Myk7CisgICAgcmV0dXJuIHdoYXQgKyAxOworICB9KS50aGVuKGZ1bmN0aW9uKHdoYXQp
IHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAg
dGVzdCh3aGF0LCA0NCk7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJv
bWlzZVRoZW5DYXRjaE9yZGVyaW5nUmVzb2x2ZSgpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAt
IHRoZW4gLyBjYXRjaCBvcmRlcmluZyAocmVzb2x2ZSkuIik7CisKKyAgdmFyIGdsb2JhbCA9IDA7
CisgIHZhciBmID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHIucmVzb2x2ZSg0Mik7
CisgIH0pOworCisgIGYudGhlbihmdW5jdGlvbigpIHsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7
CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLmNhdGNoKGZ1bmN0aW9uKCkgeworICAg
ICAgZ2xvYmFsKys7CisgICAgfSk7CisgICAgZi50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgZ2xv
YmFsKys7CisgICAgfSk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIGRlYnVn
KCJNYW55IHN0ZXBzLi4uIHNob3VsZCByZXR1cm4gMiIpOworICAgICAgdGVzdChnbG9iYWwsIDIp
OworICAgICAgcnVuVGVzdCgpOworICAgIH0sIDApOworICB9KTsKK30KKworZnVuY3Rpb24gcHJv
bWlzZVRoZW5DYXRjaE9yZGVyaW5nUmVqZWN0KCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0g
dGhlbiAvIGNhdGNoIG9yZGVyaW5nIChyZWplY3QpLiIpOworCisgIHZhciBnbG9iYWwgPSAwOwor
ICB2YXIgZiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICByLnJlamVjdCg0Mik7Cisg
IH0pCisKKyAgZi50aGVuKGZ1bmN0aW9uKCkge30sIGZ1bmN0aW9uKCkgeworICAgIGYudGhlbihm
dW5jdGlvbigpIHsKKyAgICAgIGdsb2JhbCsrOworICAgIH0pOworICAgIGYuY2F0Y2goZnVuY3Rp
b24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBmLnRoZW4oZnVuY3Rpb24oKSB7
fSwgZnVuY3Rpb24oKSB7CisgICAgICBnbG9iYWwrKzsKKyAgICB9KTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgZGVidWcoIk1hbnkgc3RlcHMuLi4gc2hvdWxkIHJldHVybiAy
Iik7CisgICAgICB0ZXN0KGdsb2JhbCwgMik7CisgICAgICBydW5UZXN0KCk7CisgICAgfSwgMCk7
CisgIH0pOworfQorCitmdW5jdGlvbiBwcm9taXNlTmVzdGVkUHJvbWlzZSgpIHsKKyAgZGVidWco
IlRlc3QgUHJvbWlzZSAtIG5lc3RlZCBwcm9taXNlIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rp
b24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHIpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7Cisg
ICAgICByLnJlc29sdmUoNDIpOworICAgIH0pKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkg
eworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0
ZXN0KHZhbHVlLCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJv
bWlzZU5lc3RlZE5lc3RlZFByb21pc2UoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBuZXN0
ZWQtbmVzdGVkIHByb21pc2UuIik7CisKKyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIp
IHsKKyAgICByZXNvbHZlci5yZXNvbHZlKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAg
IHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29s
dmUoNDIpOworICAgIH0pLnRoZW4oZnVuY3Rpb24od2hhdCkgeyByZXR1cm4gd2hhdCArIDE7IH0p
KTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNzZWQoIlRoZW4ucmVz
b2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Myk7CisgICAgcnVuVGVz
dCgpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJvbWlzZVdyb25nTmVzdGVkUHJvbWlzZSgpIHsK
KyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIHdyb25nIG5lc3RlZCBwcm9taXNlLiIpOworCisgIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgcmVzb2x2ZXIucmVzb2x2ZShuZXcg
UHJvbWlzZShmdW5jdGlvbihyKSB7CisgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQgcHJvbWlzZSBp
cyBleGVjdXRlZCIpOworICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICB9KSk7CisgICAgcmVzb2x2
ZXIucmVqZWN0KDQyKTsKKyAgfSkudGhlbihmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RQYXNz
ZWQoIlRoZW4ucmVzb2x2ZSBoYXMgYmVlbiBjYWxsZWQiKTsKKyAgICB0ZXN0KHZhbHVlLCA0Mik7
CisgICAgcnVuVGVzdCgpOworICB9LCBmdW5jdGlvbih2YWx1ZSkgeworICAgIHRlc3RGYWlsZWQo
IlRoZW4ucmVqZWN0IGhhcyBiZWVuIGNhbGxlZCIpOworICB9KTsKK30KKworZnVuY3Rpb24gcHJv
bWlzZUxvb3AoKSB7CisgIGRlYnVnKCJUZXN0IFByb21pc2UgLSBwcm9taXNlIGxvb3AuIik7CisK
KyAgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICByZXNvbHZlci5yZXNvbHZl
KG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgICAgIHRlc3RQYXNzZWQoIk5lc3RlZCBwcm9t
aXNlIGlzIGV4ZWN1dGVkIik7CisgICAgICByLnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24o
cikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOZXN0ZWQtbmVzdGVkIHByb21pc2UgaXMgZXhlY3V0
ZWQiKTsKKyAgICAgICAgci5yZXNvbHZlKDQyKTsKKyAgICAgIH0pKTsKKyAgICB9KSk7CisgIH0p
LnRoZW4oZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29sdmUgaGFz
IGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh2YWx1ZSwgNDIpOworICAgIHJ1blRlc3QoKTsKKyAg
fSwgZnVuY3Rpb24odmFsdWUpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RDb25zdHJ1Y3Rv
cigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlzZSAtIFByb21pc2UucmVqZWN0KCkuIik7CisKKyAg
dmFyIHByb21pc2UgPSBQcm9taXNlLnJlamVjdCg0MikudGhlbihmdW5jdGlvbih3aGF0KSB7Cisg
ICAgdGVzdEZhaWxlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICB9LCBmdW5j
dGlvbih3aGF0KSB7CisgICAgdGVzdFBhc3NlZCgiVGhlbi5yZWplY3QgaGFzIGJlZW4gY2FsbGVk
Iik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgpOworICB9KTsKK30KKworZnVu
Y3Rpb24gcHJvbWlzZVJlc29sdmVDb25zdHJ1Y3RvcigpIHsKKyAgZGVidWcoIlRlc3QgUHJvbWlz
ZSAtIFByb21pc2UucmVzb2x2ZSgpLiIpOworCisgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKDQyKS50aGVuKGZ1bmN0aW9uKHdoYXQpIHsKKyAgICB0ZXN0UGFzc2VkKCJUaGVuLnJlc29s
dmUgaGFzIGJlZW4gY2FsbGVkIik7CisgICAgdGVzdCh3aGF0LCA0Mik7CisgICAgcnVuVGVzdCgp
OworICB9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGVuLnJlamVjdCBoYXMgYmVl
biBjYWxsZWQiKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHByb21pc2VSZXNvbHZlQ29uc3RydWN0
b3JOZXN0ZWRQcm9taXNlKCkgeworICBkZWJ1ZygiVGVzdCBQcm9taXNlIC0gUHJvbWlzZS5yZXNv
bHZlKCkgd2l0aCAgbmVzdGVkIHByb21pc2UuIik7CisKKyAgdmFyIHByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUobmV3IFByb21pc2UoZnVuY3Rpb24ocikgeworICAgIHRlc3RQYXNzZWQoIk5lc3Rl
ZCBwcm9taXNlIGlzIGV4ZWN1dGVkIik7CisgICAgci5yZXNvbHZlKDQyKTsKKyAgfSwgZnVuY3Rp
b24oKSB7CisgICAgdGVzdEZhaWxlZCgiU2Vjb25kIGFyZ3VtZW50IHRvIFByb21pc2UgY29uc3Ry
dWN0b3IgY2FsbGVkLiIpOworICB9KSkudGhlbihmdW5jdGlvbih3aGF0KSB7CisgICAgdGVzdFBh
c3NlZCgiVGhlbi5yZXNvbHZlIGhhcyBiZWVuIGNhbGxlZCIpOworICAgIHRlc3Qod2hhdCwgNDIp
OworICAgIHJ1blRlc3QoKTsKKyAgfSwgZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgiVGhl
bi5yZWplY3QgaGFzIGJlZW4gY2FsbGVkIik7CisgIH0pOworfQorCit2YXIgdGVzdHMgPSBbCisg
ICAgcHJvbWlzZVJlc29sdmUsCisgICAgcHJvbWlzZVJlamVjdCwKKyAgICBwcm9taXNlRXhjZXB0
aW9uLAorICAgIHByb21pc2VHQywKKyAgICBwcm9taXNlQXN5bmMsCisgICAgcHJvbWlzZURvdWJs
ZVRoZW4sCisgICAgcHJvbWlzZVRoZW5FeGNlcHRpb24sCisgICAgcHJvbWlzZVRoZW5DYXRjaFRo
ZW4sCisgICAgcHJvbWlzZVJlamVjdFRoZW5DYXRjaFRoZW4sCisgICAgcHJvbWlzZVJlamVjdFRo
ZW5DYXRjaFRoZW4yLAorICAgIHByb21pc2VSZWplY3RUaGVuQ2F0Y2hFeGNlcHRpb25UaGVuLAor
ICAgIHByb21pc2VUaGVuQ2F0Y2hPcmRlcmluZ1Jlc29sdmUsCisgICAgcHJvbWlzZVRoZW5DYXRj
aE9yZGVyaW5nUmVqZWN0LAorICAgIHByb21pc2VOZXN0ZWRQcm9taXNlLAorICAgIHByb21pc2VO
ZXN0ZWROZXN0ZWRQcm9taXNlLAorICAgIHByb21pc2VXcm9uZ05lc3RlZFByb21pc2UsCisgICAg
cHJvbWlzZUxvb3AsCisgICAgcHJvbWlzZVJlamVjdENvbnN0cnVjdG9yLCAKKyAgICBwcm9taXNl
UmVzb2x2ZUNvbnN0cnVjdG9yLAorICAgIHByb21pc2VSZXNvbHZlQ29uc3RydWN0b3JOZXN0ZWRQ
cm9taXNlLAorXTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgaWYgKCF0ZXN0cy5sZW5ndGgp
IHsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICBkZWJ1ZygiIik7
CisgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgdGVzdCgpOworfQorCitydW5UZXN0KCk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvUHJvbWlzZS1jYXRjaC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4td29ya2Vycy5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtY2F0Y2gtaW4t
d29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACitpbXBvcnRTY3JpcHRz
KCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisK
K3ZhciBnbG9iYWwgPSB0aGlzOworCitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIg
cmVzb2x2ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihuZXdS
ZXNvbHZlcikgeworICBnbG9iYWwudGhpc0luSW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gbmV3
UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFByb21pc2UuY2F0Y2go
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPSB0aGlz
OworICBzaG91bGRCZUZhbHNlKCd0aGlzSW5GdWxmaWxsQ2FsbGJhY2sgPT09IGZpcnN0UHJvbWlz
ZScpOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vjb25kUHJv
bWlzZScpOworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICByZXR1cm4gJ2J5ZSc7Cit9KTsKKworc2Vjb25kUHJv
bWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0Owor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdieWUnKTsKKyAgdGVzdFBhc3NlZCgn
ZnVsZmlsbGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RG
YWlsZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7Cit9
KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFByb21pc2UnKTsKK3Nob3Vs
ZEJlVHJ1ZSgnZmlyc3RQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworc2hvdWxkQmVUcnVl
KCdzZWNvbmRQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZScpOworCitzaG91bGRUaHJvdygnZmly
c3RQcm9taXNlLmNhdGNoKG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9y
IHVuZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFBy
b21pc2UuY2F0Y2goMzcpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVuZGVm
aW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKKworcmVzb2x2ZXIucmVqZWN0KCdoZWxsbycp
OworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLWZ1bGZpbGwt
aW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNl
cy9Qcm9taXNlLWZ1bGZpbGwtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtZnVsZmlsbC1pbi13b3JrZXJzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydFNjcmlwdHMoJy4vanMtdGVzdC1wcmUu
anMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKworanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK3ZhciByZXNvbHZlcjsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rp
b24ocikgeyByZXNvbHZlciA9IHI7IH0pOwordmFyIHByb21pc2VTdGF0ZSA9ICdwZW5kaW5nJzsK
K3ZhciBwcm9taXNlUmVzdWx0ID0gdW5kZWZpbmVkOworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAnZnVsZmlsbGVkJzsKKyAgcHJvbWlzZVJlc3VsdCA9
IHJlc3VsdDsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBwcm9taXNlU3RhdGUgPSAncmVqZWN0
ZWQnOworICBwcm9taXNlUmVzdWx0ID0gcmVzdWx0OworfSk7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygncHJvbWlzZVN0YXRlJywgJ3BlbmRpbmcnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVs
bG8nKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycp
OworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cHJvbWlzZVN0YXRlJywgJ2Z1bGZpbGxlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3By
b21pc2VSZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKKyAgdGVzdEZhaWxlZCgncHJvbWlzZSBpcyByZWplY3RlZC4nKTsKKyAgZmluaXNoSlNUZXN0
KCk7Cit9KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtaW5p
dC1pbi13b3JrZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL1Byb21pc2UtaW5pdC1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1pbml0LWluLXdvcmtlcnMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NCBAQAoraW1wb3J0U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycp
OworCit2YXIgZ2xvYmFsID0gdGhpczsKK2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFyIHRoaXNJbkluaXQ7Cit2YXIgcmVz
b2x2ZXI7Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpIHsKKyAgdGhpc0lu
SW5pdCA9IHRoaXM7CisgIHJlc29sdmVyID0gcjsKK30pOworCitzaG91bGRCZVRydWUoJ3Byb21p
c2UgaW5zdGFuY2VvZiBQcm9taXNlJyk7CitzaG91bGRCZSgncHJvbWlzZS5jb25zdHJ1Y3Rvcics
ICdQcm9taXNlJyk7CitzaG91bGRCZSgndGhpc0luSW5pdCcsICdwcm9taXNlJyk7CitzaG91bGRC
ZVRydWUoJ3Jlc29sdmVyIGluc3RhbmNlb2YgUHJvbWlzZVJlc29sdmVyJyk7CitzaG91bGRCZSgn
cmVzb2x2ZXIuY29uc3RydWN0b3InLCAnUHJvbWlzZVJlc29sdmVyJyk7CisKK3Nob3VsZFRocm93
KCduZXcgUHJvbWlzZSgpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1
bWVudCInKTsKK3Nob3VsZFRocm93KCduZXcgUHJvbWlzZSgzNyknLCAnIlR5cGVFcnJvcjogRXhw
ZWN0ZWQgZnVuY3Rpb24gYXMgYXMgZmlyc3QgYXJndW1lbnQiJyk7CisKK3Nob3VsZE5vdFRocm93
KCdwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24oKSB7IHRocm93IEVycm9yKCJmb28iKTsg
fSknKTsKK3Byb21pc2UudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9i
YWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdC5tZXNz
YWdlJywgJ2ZvbycpOworfSk7CisKK25ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmVyKSB7Cisg
IHJlc29sdmVyLmZ1bGZpbGwoImhlbGxvIik7CisgIHRocm93IEVycm9yKCJmb28iKTsKK30pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHRlc3RQ
YXNzZWQoJ2Z1bGZpbGxlZCcpOworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdo
ZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9i
YWwucmVzdWx0ID0gcmVzdWx0OworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1By
b21pc2UtcmVqZWN0LWluLXdvcmtlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1yZWplY3QtaW4td29ya2Vycy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVqZWN0LWluLXdvcmtl
cnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0U2NyaXB0cygnLi9q
cy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLicpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc29sdmVyOwordmFyIHByb21pc2UgPSBuZXcgUHJv
bWlzZShmdW5jdGlvbihyKSB7IHJlc29sdmVyID0gcjsgfSk7Cit2YXIgcHJvbWlzZVN0YXRlID0g
J3BlbmRpbmcnOwordmFyIHByb21pc2VSZXN1bHQgPSB1bmRlZmluZWQ7Citwcm9taXNlLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0ZSA9ICdmdWxmaWxsZWQnOworICBwcm9t
aXNlUmVzdWx0ID0gcmVzdWx0OworfSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgIHByb21pc2VTdGF0
ZSA9ICdyZWplY3RlZCc7CisgIHByb21pc2VSZXN1bHQgPSByZXN1bHQ7Cit9KTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncGVuZGluZycpOworCityZXNvbHZlci5y
ZWplY3QoJ2hlbGxvJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygncHJvbWlzZVN0YXRlJywg
J3BlbmRpbmcnKTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdw
cm9taXNlIGlzIGZ1bGZpbGxlZC4nKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigp
IHsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlU3RhdGUnLCAncmVqZWN0ZWQnKTsK
KyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwcm9taXNlUmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Q
cm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXJlc29sdmUtaW4td29ya2Vycy5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtcmVzb2x2ZS1pbi13
b3JrZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydFNjcmlwdHMo
Jy4vanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwor
dmFyIGdsb2JhbCA9IHRoaXM7CitnbG9iYWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBm
aXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlcikgeworICByZXNvbHZl
ci5yZXNvbHZlKCdoZWxsbycpOworfSk7CisKK3ZhciBzZWNvbmRQcm9taXNlID0gZmlyc3RQcm9t
aXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIGdsb2JhbC50aGlzSW5GdWxmaWxsQ2FsbGJh
Y2sgPSB0aGlzOworICBzaG91bGRCZVRydWUoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0gc2Vj
b25kUHJvbWlzZScpOworICBnbG9iYWwucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0
aW9uKCkgeworICBmYWlsKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vy
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNl
LXNpbXBsZS1pbi13b3JrZXJzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvUHJvbWlzZS1zaW1wbGUtaW4td29ya2Vycy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI2IEBACitpbXBvcnRTY3JpcHRzKCcuL2pzLXRlc3QtcHJlLmpzJyk7CisKK2Rl
c2NyaXB0aW9uKCdUZXN0IFByb21pc2UuJyk7CisKK3ZhciBnbG9iYWwgPSB0aGlzOworCitnbG9i
YWwuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXNvbHZlcjsKKwordmFyIGZpcnN0UHJv
bWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5ld1Jlc29sdmVyKSB7CisgIGdsb2JhbC50aGlz
SW5Jbml0ID0gdGhpczsKKyAgcmVzb2x2ZXIgPSBuZXdSZXNvbHZlcjsKK30pOworCit2YXIgc2Vj
b25kUHJvbWlzZSA9IGZpcnN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICBnbG9i
YWwudGhpc0luRnVsZmlsbENhbGxiYWNrID0gdGhpczsKKyAgc2hvdWxkQmVUcnVlKCd0aGlzSW5G
dWxmaWxsQ2FsbGJhY2sgPT09IHNlY29uZFByb21pc2UnKTsKKyAgZ2xvYmFsLnJlc3VsdCA9IHJl
c3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9KTsKKworc2hvdWxkQmVUcnVlKCd0aGlzSW5Jbml0ID09PSBmaXJzdFBy
b21pc2UnKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVsbG8nKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1Byb21pc2UtdGhlbi1pbi13b3JrZXJz
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvUHJvbWlz
ZS10aGVuLWluLXdvcmtlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAoraW1w
b3J0U2NyaXB0cygnLi9qcy10ZXN0LXByZS5qcycpOworCitkZXNjcmlwdGlvbignVGVzdCBQcm9t
aXNlLicpOworCit2YXIgZ2xvYmFsID0gdGhpczsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCit2YXIgcmVzb2x2ZXI7CisKK3ZhciBmaXJzdFByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihuZXdSZXNvbHZlcikgeworICBnbG9iYWwudGhpc0luSW5pdCA9IHRoaXM7CisgIHJl
c29sdmVyID0gbmV3UmVzb2x2ZXI7Cit9KTsKKwordmFyIHNlY29uZFByb21pc2UgPSBmaXJzdFBy
b21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgZ2xvYmFsLnRoaXNJbkZ1bGZpbGxDYWxs
YmFjayA9IHRoaXM7CisgIHNob3VsZEJlRmFsc2UoJ3RoaXNJbkZ1bGZpbGxDYWxsYmFjayA9PT0g
Zmlyc3RQcm9taXNlJyk7CisgIHNob3VsZEJlVHJ1ZSgndGhpc0luRnVsZmlsbENhbGxiYWNrID09
PSBzZWNvbmRQcm9taXNlJyk7CisgIGdsb2JhbC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSk7
CisKK3Nob3VsZEJlVHJ1ZSgndGhpc0luSW5pdCA9PT0gZmlyc3RQcm9taXNlJyk7CitzaG91bGRC
ZVRydWUoJ2ZpcnN0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKK3Nob3VsZEJlVHJ1ZSgn
c2Vjb25kUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UnKTsKKworc2hvdWxkVGhyb3coJ2ZpcnN0
UHJvbWlzZS50aGVuKG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVu
ZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKK3Nob3VsZFRocm93KCdmaXJzdFByb21p
c2UudGhlbih1bmRlZmluZWQsIG51bGwpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9u
IG9yIHVuZGVmaW5lZCBhcyBhcyBzZWNvbmQgYXJndW1lbnQiJyk7CitzaG91bGRUaHJvdygnZmly
c3RQcm9taXNlLnRoZW4oMzcpJywgJyJUeXBlRXJyb3I6IEV4cGVjdGVkIGZ1bmN0aW9uIG9yIHVu
ZGVmaW5lZCBhcyBhcyBmaXJzdCBhcmd1bWVudCInKTsKKworcmVzb2x2ZXIuZnVsZmlsbCgnaGVs
bG8nKTsKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRo
ZW4td2l0aG91dC1jYWxsYmFja3MtaW4td29ya2Vycy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9Qcm9taXNlLXRoZW4td2l0aG91dC1jYWxsYmFja3MtaW4t
d29ya2Vycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L1Byb21pc2UtdGhlbi13aXRob3V0LWNhbGxiYWNrcy1pbi13b3JrZXJzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydFNjcmlwdHMoJy4vanMtdGVzdC1wcmUuanMnKTsK
KworZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS4nKTsKKwordmFyIGdsb2JhbCA9IHRoaXM7CisK
K2dsb2JhbC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbmV3IFByb21pc2UoZnVuY3Rpb24ocikg
eyByLmZ1bGZpbGwoJ2hlbGxvJyk7IH0pCisgIC50aGVuKCkKKyAgLnRoZW4oZnVuY3Rpb24ocmVz
dWx0KSB7CisgICAgZ2xvYmFsLnJlc3VsdCA9IHJlc3VsdDsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICAgIGZpbmlzaEpTVGVzdCgpOworICB9KTsKKwor
Cg==
</data>
<flag name="review"
          id="231652"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>